fx build fix
This commit is contained in:
124
api/server/internal/server/accountapiimp/service.go
Normal file
124
api/server/internal/server/accountapiimp/service.go
Normal file
@@ -0,0 +1,124 @@
|
||||
package accountapiimp
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
api "github.com/tech/sendico/pkg/api/http"
|
||||
"github.com/tech/sendico/pkg/auth"
|
||||
"github.com/tech/sendico/pkg/db/account"
|
||||
"github.com/tech/sendico/pkg/db/organization"
|
||||
"github.com/tech/sendico/pkg/db/policy"
|
||||
"github.com/tech/sendico/pkg/db/refreshtokens"
|
||||
"github.com/tech/sendico/pkg/db/transaction"
|
||||
"github.com/tech/sendico/pkg/domainprovider"
|
||||
"github.com/tech/sendico/pkg/messaging"
|
||||
"github.com/tech/sendico/pkg/mlogger"
|
||||
"github.com/tech/sendico/pkg/mservice"
|
||||
"github.com/tech/sendico/server/interface/accountservice"
|
||||
eapi "github.com/tech/sendico/server/interface/api"
|
||||
"github.com/tech/sendico/server/interface/services/fileservice"
|
||||
mutil "github.com/tech/sendico/server/internal/mutil/param"
|
||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
type AccountAPI struct {
|
||||
logger mlogger.Logger
|
||||
db account.DB
|
||||
odb organization.DB
|
||||
tf transaction.Factory
|
||||
rtdb refreshtokens.DB
|
||||
plcdb policy.DB
|
||||
domain domainprovider.DomainProvider
|
||||
avatars mservice.MicroService
|
||||
producer messaging.Producer
|
||||
pmanager auth.Manager
|
||||
enf auth.Enforcer
|
||||
oph mutil.ParamHelper
|
||||
aph mutil.ParamHelper
|
||||
tph mutil.ParamHelper
|
||||
accountsPermissionRef primitive.ObjectID
|
||||
accService accountservice.AccountService
|
||||
}
|
||||
|
||||
func (a *AccountAPI) Name() mservice.Type {
|
||||
return mservice.Accounts
|
||||
}
|
||||
|
||||
func (a *AccountAPI) Finish(ctx context.Context) error {
|
||||
return a.avatars.Finish(ctx)
|
||||
}
|
||||
|
||||
func CreateAPI(a eapi.API) (*AccountAPI, error) {
|
||||
p := new(AccountAPI)
|
||||
p.logger = a.Logger().Named(p.Name())
|
||||
var err error
|
||||
if p.db, err = a.DBFactory().NewAccountDB(); err != nil {
|
||||
p.logger.Error("Failed to create accounts database", zap.Error(err))
|
||||
return nil, err
|
||||
}
|
||||
if p.rtdb, err = a.DBFactory().NewRefreshTokensDB(); err != nil {
|
||||
p.logger.Error("Failed to create refresh tokens database", zap.Error(err))
|
||||
return nil, err
|
||||
}
|
||||
if p.odb, err = a.DBFactory().NewOrganizationDB(); err != nil {
|
||||
p.logger.Error("Failed to create organizations database", zap.Error(err))
|
||||
return nil, err
|
||||
}
|
||||
if p.plcdb, err = a.DBFactory().NewPoliciesDB(); err != nil {
|
||||
p.logger.Error("Failed to create policies database", zap.Error(err))
|
||||
return nil, err
|
||||
}
|
||||
|
||||
p.domain = a.DomainProvider()
|
||||
p.producer = a.Register().Messaging().Producer()
|
||||
p.tf = a.DBFactory().TransactionFactory()
|
||||
p.pmanager = a.Permissions().Manager()
|
||||
p.enf = a.Permissions().Enforcer()
|
||||
p.oph = mutil.CreatePH(mservice.Organizations)
|
||||
p.aph = mutil.CreatePH(mservice.Accounts)
|
||||
p.tph = mutil.CreatePH("token")
|
||||
|
||||
if p.accService, err = accountservice.NewAccountService(p.logger, a.DBFactory(), p.enf, p.pmanager.Role(), &a.Config().Mw.Password); err != nil {
|
||||
p.logger.Error("Failed to create account manager", zap.Error(err))
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// Account related api endpoints
|
||||
a.Register().Handler(mservice.Accounts, "/signup", api.Post, p.signup)
|
||||
|
||||
a.Register().AccountHandler(mservice.Accounts, "", api.Put, p.updateProfile)
|
||||
a.Register().AccountHandler(mservice.Accounts, "", api.Get, p.getProfile)
|
||||
|
||||
a.Register().AccountHandler(mservice.Accounts, p.oph.AddRef("/employee"), api.Put, p.updateEmployee)
|
||||
|
||||
a.Register().AccountHandler(mservice.Accounts, "/dzone", api.Get, p.dzone)
|
||||
a.Register().AccountHandler(mservice.Accounts, p.oph.AddRef("/profile"), api.Delete, p.deleteProfile)
|
||||
a.Register().AccountHandler(mservice.Accounts, p.oph.AddRef("/organization"), api.Delete, p.deleteOrganization)
|
||||
a.Register().AccountHandler(mservice.Accounts, p.oph.AddRef("/all"), api.Delete, p.deleteAll)
|
||||
|
||||
a.Register().AccountHandler(mservice.Accounts, p.oph.AddRef("/list"), api.Get, p.getEmployees)
|
||||
|
||||
a.Register().AccountHandler(mservice.Accounts, "/password", api.Post, p.checkPassword)
|
||||
a.Register().AccountHandler(mservice.Accounts, "/password", api.Patch, p.changePassword)
|
||||
a.Register().Handler(mservice.Accounts, "/password", api.Put, p.forgotPassword)
|
||||
a.Register().Handler(mservice.Accounts, p.tph.AddRef(p.aph.AddRef("/password/reset")), api.Post, p.resetPassword)
|
||||
|
||||
a.Register().Handler(mservice.Accounts, mutil.AddToken("/verify"), api.Get, p.verify)
|
||||
a.Register().Handler(mservice.Accounts, "/email", api.Post, p.resendVerificationMail)
|
||||
a.Register().Handler(mservice.Accounts, "/email", api.Put, p.resendVerification)
|
||||
|
||||
if p.avatars, err = fileservice.CreateAPI(a, p.Name()); err != nil {
|
||||
p.logger.Error("Failed to create image server", zap.Error(err))
|
||||
return nil, err
|
||||
}
|
||||
|
||||
accountsPolicy, err := a.Permissions().GetPolicyDescription(context.Background(), mservice.Accounts)
|
||||
if err != nil {
|
||||
p.logger.Warn("Failed to fetch account permission policy description", zap.Error(err))
|
||||
return nil, err
|
||||
}
|
||||
p.accountsPermissionRef = accountsPolicy.ID
|
||||
|
||||
return p, nil
|
||||
}
|
||||
Reference in New Issue
Block a user