Refactor system & compose services for (eventbus) dep. injection

This commit is contained in:
Denis Arh
2020-01-18 07:05:34 +01:00
parent ebb9b70bfe
commit 2955e70a6e
12 changed files with 170 additions and 129 deletions
+13 -10
View File
@@ -22,7 +22,8 @@ type (
ctx context.Context
logger *zap.Logger
ac moduleAccessController
ac moduleAccessController
eventbus eventDispatcher
moduleRepo repository.ModuleRepository
recordRepo repository.RecordRepository
@@ -56,8 +57,9 @@ type (
func Module() ModuleService {
return (&module{
logger: DefaultLogger.Named("module"),
ac: DefaultAccessControl,
logger: DefaultLogger.Named("module"),
ac: DefaultAccessControl,
eventbus: eventbus.Service(),
}).With(context.Background())
}
@@ -68,7 +70,8 @@ func (svc module) With(ctx context.Context) ModuleService {
ctx: ctx,
logger: svc.logger,
ac: svc.ac,
ac: svc.ac,
eventbus: svc.eventbus,
moduleRepo: repository.Module(ctx, db),
recordRepo: repository.Record(ctx, db),
@@ -166,7 +169,7 @@ func (svc module) Create(new *types.Module) (m *types.Module, err error) {
}
// Calling before-create scripts
if err = eventbus.WaitFor(svc.ctx, event.ModuleBeforeCreate(new, nil, ns)); err != nil {
if err = svc.eventbus.WaitFor(svc.ctx, event.ModuleBeforeCreate(new, nil, ns)); err != nil {
return
}
@@ -183,7 +186,7 @@ func (svc module) Create(new *types.Module) (m *types.Module, err error) {
return nil, err
}
defer eventbus.Dispatch(svc.ctx, event.ModuleAfterCreate(m, nil, ns))
defer svc.eventbus.Dispatch(svc.ctx, event.ModuleAfterCreate(m, nil, ns))
return
}
@@ -216,7 +219,7 @@ func (svc module) Update(upd *types.Module) (m *types.Module, err error) {
return nil, ErrNoUpdatePermissions.withStack()
}
if err = eventbus.WaitFor(svc.ctx, event.ModuleBeforeUpdate(upd, m, ns)); err != nil {
if err = svc.eventbus.WaitFor(svc.ctx, event.ModuleBeforeUpdate(upd, m, ns)); err != nil {
return
}
@@ -243,7 +246,7 @@ func (svc module) Update(upd *types.Module) (m *types.Module, err error) {
return nil, err
}
defer eventbus.Dispatch(svc.ctx, event.ModuleAfterUpdate(upd, m, ns))
defer svc.eventbus.Dispatch(svc.ctx, event.ModuleAfterUpdate(upd, m, ns))
return
}
@@ -271,7 +274,7 @@ func (svc module) DeleteByID(namespaceID, moduleID uint64) (err error) {
return ErrNoDeletePermissions.withStack()
}
if err = eventbus.WaitFor(svc.ctx, event.ModuleBeforeDelete(nil, del, ns)); err != nil {
if err = svc.eventbus.WaitFor(svc.ctx, event.ModuleBeforeDelete(nil, del, ns)); err != nil {
return
}
@@ -279,7 +282,7 @@ func (svc module) DeleteByID(namespaceID, moduleID uint64) (err error) {
return
}
defer eventbus.Dispatch(svc.ctx, event.ModuleAfterDelete(nil, del, ns))
defer svc.eventbus.Dispatch(svc.ctx, event.ModuleAfterDelete(nil, del, ns))
return
}
+13 -10
View File
@@ -22,7 +22,8 @@ type (
ctx context.Context
logger *zap.Logger
ac namespaceAccessController
ac namespaceAccessController
eventbus eventDispatcher
namespaceRepo repository.NamespaceRepository
}
@@ -53,8 +54,9 @@ type (
func Namespace() NamespaceService {
return (&namespace{
logger: DefaultLogger.Named("namespace"),
ac: DefaultAccessControl,
logger: DefaultLogger.Named("namespace"),
ac: DefaultAccessControl,
eventbus: eventbus.Service(),
}).With(context.Background())
}
@@ -65,7 +67,8 @@ func (svc namespace) With(ctx context.Context) NamespaceService {
ctx: ctx,
logger: svc.logger,
ac: svc.ac,
ac: svc.ac,
eventbus: svc.eventbus,
namespaceRepo: repository.Namespace(ctx, db),
}
@@ -119,7 +122,7 @@ func (svc namespace) Create(new *types.Namespace) (ns *types.Namespace, err erro
return nil, ErrNoCreatePermissions.withStack()
}
if err = eventbus.WaitFor(svc.ctx, event.NamespaceBeforeCreate(new, nil)); err != nil {
if err = svc.eventbus.WaitFor(svc.ctx, event.NamespaceBeforeCreate(new, nil)); err != nil {
return
}
@@ -131,7 +134,7 @@ func (svc namespace) Create(new *types.Namespace) (ns *types.Namespace, err erro
return nil, err
}
defer eventbus.Dispatch(svc.ctx, event.NamespaceAfterCreate(ns, nil))
defer svc.eventbus.Dispatch(svc.ctx, event.NamespaceAfterCreate(ns, nil))
return
}
@@ -156,7 +159,7 @@ func (svc namespace) Update(upd *types.Namespace) (ns *types.Namespace, err erro
return nil, ErrNoUpdatePermissions.withStack()
}
if err = eventbus.WaitFor(svc.ctx, event.NamespaceBeforeUpdate(upd, ns)); err != nil {
if err = svc.eventbus.WaitFor(svc.ctx, event.NamespaceBeforeUpdate(upd, ns)); err != nil {
return
}
@@ -174,7 +177,7 @@ func (svc namespace) Update(upd *types.Namespace) (ns *types.Namespace, err erro
return nil, err
}
defer eventbus.Dispatch(svc.ctx, event.NamespaceAfterUpdate(upd, ns))
defer svc.eventbus.Dispatch(svc.ctx, event.NamespaceAfterUpdate(upd, ns))
return
}
@@ -193,7 +196,7 @@ func (svc namespace) DeleteByID(namespaceID uint64) (err error) {
return ErrNoDeletePermissions.withStack()
}
if err = eventbus.WaitFor(svc.ctx, event.NamespaceBeforeDelete(nil, del)); err != nil {
if err = svc.eventbus.WaitFor(svc.ctx, event.NamespaceBeforeDelete(nil, del)); err != nil {
return
}
@@ -201,7 +204,7 @@ func (svc namespace) DeleteByID(namespaceID uint64) (err error) {
return
}
defer eventbus.Dispatch(svc.ctx, event.NamespaceAfterDelete(nil, del))
defer svc.eventbus.Dispatch(svc.ctx, event.NamespaceAfterDelete(nil, del))
return
}
+13 -10
View File
@@ -22,7 +22,8 @@ type (
ctx context.Context
logger *zap.Logger
ac pageAccessController
ac pageAccessController
eventbus eventDispatcher
pageRepo repository.PageRepository
moduleRepo repository.ModuleRepository
@@ -59,8 +60,9 @@ type (
func Page() PageService {
return (&page{
logger: DefaultLogger.Named("page"),
ac: DefaultAccessControl,
logger: DefaultLogger.Named("page"),
ac: DefaultAccessControl,
eventbus: eventbus.Service(),
}).With(context.Background())
}
@@ -71,7 +73,8 @@ func (svc page) With(ctx context.Context) PageService {
ctx: ctx,
logger: svc.logger,
ac: svc.ac,
ac: svc.ac,
eventbus: svc.eventbus,
pageRepo: repository.Page(ctx, db),
moduleRepo: repository.Module(ctx, db),
@@ -221,7 +224,7 @@ func (svc page) Create(new *types.Page) (p *types.Page, err error) {
return nil, ErrNoCreatePermissions.withStack()
}
if err = eventbus.WaitFor(svc.ctx, event.PageBeforeCreate(new, nil, ns)); err != nil {
if err = svc.eventbus.WaitFor(svc.ctx, event.PageBeforeCreate(new, nil, ns)); err != nil {
return
}
@@ -233,7 +236,7 @@ func (svc page) Create(new *types.Page) (p *types.Page, err error) {
return
}
defer eventbus.Dispatch(svc.ctx, event.PageAfterCreate(new, nil, ns))
defer svc.eventbus.Dispatch(svc.ctx, event.PageAfterCreate(new, nil, ns))
return
}
@@ -266,7 +269,7 @@ func (svc page) Update(upd *types.Page) (p *types.Page, err error) {
return nil, ErrNoUpdatePermissions.withStack()
}
if err = eventbus.WaitFor(svc.ctx, event.PageBeforeUpdate(upd, p, ns)); err != nil {
if err = svc.eventbus.WaitFor(svc.ctx, event.PageBeforeUpdate(upd, p, ns)); err != nil {
return
}
@@ -287,7 +290,7 @@ func (svc page) Update(upd *types.Page) (p *types.Page, err error) {
return
}
defer eventbus.Dispatch(svc.ctx, event.PageAfterUpdate(upd, p, ns))
defer svc.eventbus.Dispatch(svc.ctx, event.PageAfterUpdate(upd, p, ns))
return
}
@@ -327,7 +330,7 @@ func (svc page) DeleteByID(namespaceID, pageID uint64) (err error) {
return ErrNoDeletePermissions.withStack()
}
if err = eventbus.WaitFor(svc.ctx, event.PageBeforeDelete(nil, del, ns)); err != nil {
if err = svc.eventbus.WaitFor(svc.ctx, event.PageBeforeDelete(nil, del, ns)); err != nil {
return
}
@@ -335,7 +338,7 @@ func (svc page) DeleteByID(namespaceID, pageID uint64) (err error) {
return
}
defer eventbus.Dispatch(svc.ctx, event.PageAfterDelete(nil, del, ns))
defer svc.eventbus.Dispatch(svc.ctx, event.PageAfterDelete(nil, del, ns))
return
}
+13 -10
View File
@@ -32,7 +32,8 @@ type (
ctx context.Context
logger *zap.Logger
ac recordAccessController
ac recordAccessController
eventbus eventDispatcher
recordRepo repository.RecordRepository
moduleRepo repository.ModuleRepository
@@ -103,8 +104,9 @@ type (
func Record() RecordService {
return (&record{
logger: DefaultLogger.Named("record"),
ac: DefaultAccessControl,
logger: DefaultLogger.Named("record"),
ac: DefaultAccessControl,
eventbus: eventbus.Service(),
}).With(context.Background())
}
@@ -116,7 +118,8 @@ func (svc record) With(ctx context.Context) RecordService {
ctx: ctx,
logger: svc.logger,
ac: svc.ac,
ac: svc.ac,
eventbus: svc.eventbus,
recordRepo: repository.Record(ctx, db),
moduleRepo: repository.Module(ctx, db),
@@ -300,7 +303,7 @@ func (svc record) Create(new *types.Record) (r *types.Record, err error) {
CreatedAt: time.Now(),
}
if err = eventbus.WaitFor(svc.ctx, event.RecordBeforeCreate(new, nil, m, ns)); err != nil {
if err = svc.eventbus.WaitFor(svc.ctx, event.RecordBeforeCreate(new, nil, m, ns)); err != nil {
return
}
@@ -327,7 +330,7 @@ func (svc record) Create(new *types.Record) (r *types.Record, err error) {
return
}
defer eventbus.Dispatch(svc.ctx, event.RecordAfterCreate(r, nil, m, ns))
defer svc.eventbus.Dispatch(svc.ctx, event.RecordAfterCreate(r, nil, m, ns))
return
})
}
@@ -351,7 +354,7 @@ func (svc record) Update(upd *types.Record) (r *types.Record, err error) {
return nil, ErrStaleData.withStack()
}
if err = eventbus.WaitFor(svc.ctx, event.RecordBeforeUpdate(upd, r, m, ns)); err != nil {
if err = svc.eventbus.WaitFor(svc.ctx, event.RecordBeforeUpdate(upd, r, m, ns)); err != nil {
return
}
@@ -376,7 +379,7 @@ func (svc record) Update(upd *types.Record) (r *types.Record, err error) {
return
}
defer eventbus.Dispatch(svc.ctx, event.RecordAfterUpdate(upd, r, m, ns))
defer svc.eventbus.Dispatch(svc.ctx, event.RecordAfterUpdate(upd, r, m, ns))
return
})
}
@@ -407,7 +410,7 @@ func (svc record) DeleteByID(namespaceID, recordID uint64) (err error) {
}
// Calling before-record-delete scripts
if err = eventbus.WaitFor(svc.ctx, event.RecordBeforeDelete(nil, del, m, ns)); err != nil {
if err = svc.eventbus.WaitFor(svc.ctx, event.RecordBeforeDelete(nil, del, m, ns)); err != nil {
return
}
@@ -424,7 +427,7 @@ func (svc record) DeleteByID(namespaceID, recordID uint64) (err error) {
return
}
defer eventbus.Dispatch(svc.ctx, event.RecordAfterDelete(nil, del, m, ns))
defer svc.eventbus.Dispatch(svc.ctx, event.RecordAfterDelete(nil, del, m, ns))
return
})
+6
View File
@@ -10,6 +10,7 @@ import (
"github.com/cortezaproject/corteza-server/compose/types"
"github.com/cortezaproject/corteza-server/pkg/app/options"
"github.com/cortezaproject/corteza-server/pkg/auth"
"github.com/cortezaproject/corteza-server/pkg/eventbus"
"github.com/cortezaproject/corteza-server/pkg/permissions"
"github.com/cortezaproject/corteza-server/pkg/settings"
"github.com/cortezaproject/corteza-server/pkg/store"
@@ -29,6 +30,11 @@ type (
Corredor options.CorredorOpt
GRPCClientSystem options.GRPCServerOpt
}
eventDispatcher interface {
WaitFor(ctx context.Context, ev eventbus.Event) (err error)
Dispatch(ctx context.Context, ev eventbus.Event)
}
)
var (
-20
View File
@@ -37,26 +37,6 @@ func init() {
gEventBus = New()
}
// WaitFor is a package level wrapper for global instance of eventbus
func WaitFor(ctx context.Context, ev Event) (err error) {
return gEventBus.WaitFor(ctx, ev)
}
// Dispatch is a package level wrapper for global instance of eventbus
func Dispatch(ctx context.Context, ev Event) {
gEventBus.Dispatch(ctx, ev)
}
// Register is a package level wrapper for global instance of eventbus
func Register(handler Handler, ops ...TriggerRegOp) uintptr {
return gEventBus.Register(handler, ops...)
}
// Unregister is a package level wrapper for global instance of eventbus
func Unregister(ptrs ...uintptr) {
gEventBus.Unregister(ptrs...)
}
// Returns
func Default() *eventbus {
return gEventBus
+16 -11
View File
@@ -18,7 +18,8 @@ type (
db *factory.DB
ctx context.Context
ac applicationAccessController
ac applicationAccessController
eventbus eventDispatcher
application repository.ApplicationRepository
}
@@ -48,7 +49,8 @@ type (
func Application(ctx context.Context) ApplicationService {
return (&application{
ac: DefaultAccessControl,
ac: DefaultAccessControl,
eventbus: eventbus.Service(),
}).With(ctx)
}
@@ -56,9 +58,12 @@ func Application(ctx context.Context) ApplicationService {
func (svc *application) With(ctx context.Context) ApplicationService {
db := repository.DB(ctx)
return &application{
db: db,
ctx: ctx,
ac: svc.ac,
db: db,
ctx: ctx,
ac: svc.ac,
eventbus: svc.eventbus,
application: repository.Application(ctx, db),
}
}
@@ -101,7 +106,7 @@ func (svc *application) Create(new *types.Application) (app *types.Application,
return nil, ErrNoPermissions.withStack()
}
if err = eventbus.WaitFor(svc.ctx, event.ApplicationBeforeCreate(new, nil)); err != nil {
if err = svc.eventbus.WaitFor(svc.ctx, event.ApplicationBeforeCreate(new, nil)); err != nil {
return
}
@@ -109,7 +114,7 @@ func (svc *application) Create(new *types.Application) (app *types.Application,
return
}
defer eventbus.Dispatch(svc.ctx, event.ApplicationAfterCreate(new, nil))
defer svc.eventbus.Dispatch(svc.ctx, event.ApplicationAfterCreate(new, nil))
return
}
@@ -124,7 +129,7 @@ func (svc *application) Update(upd *types.Application) (app *types.Application,
return
}
if err = eventbus.WaitFor(svc.ctx, event.ApplicationBeforeUpdate(upd, app)); err != nil {
if err = svc.eventbus.WaitFor(svc.ctx, event.ApplicationBeforeUpdate(upd, app)); err != nil {
return
}
@@ -137,7 +142,7 @@ func (svc *application) Update(upd *types.Application) (app *types.Application,
return err
}
defer eventbus.Dispatch(svc.ctx, event.ApplicationAfterUpdate(upd, app))
defer svc.eventbus.Dispatch(svc.ctx, event.ApplicationAfterUpdate(upd, app))
return nil
})
}
@@ -154,7 +159,7 @@ func (svc *application) Delete(ID uint64) (err error) {
if !svc.ac.CanDeleteApplication(svc.ctx, app) {
return ErrNoPermissions.withStack()
}
if err = eventbus.WaitFor(svc.ctx, event.ApplicationBeforeDelete(nil, app)); err != nil {
if err = svc.eventbus.WaitFor(svc.ctx, event.ApplicationBeforeDelete(nil, app)); err != nil {
return
}
@@ -162,7 +167,7 @@ func (svc *application) Delete(ID uint64) (err error) {
return
}
defer eventbus.Dispatch(svc.ctx, event.ApplicationAfterDelete(nil, app))
defer svc.eventbus.Dispatch(svc.ctx, event.ApplicationAfterDelete(nil, app))
return
}
+32 -20
View File
@@ -28,6 +28,8 @@ type (
ctx context.Context
logger *zap.Logger
eventbus eventDispatcher
subscription authSubscriptionChecker
credentials repository.CredentialsRepository
users repository.UserRepository
@@ -93,6 +95,18 @@ func defaultProviderValidator(provider string) error {
func Auth(ctx context.Context) AuthService {
return (&auth{
logger: DefaultLogger.Named("auth"),
eventbus: eventbus.Service(),
subscription: CurrentSubscription,
settings: CurrentSettings,
notifications: DefaultAuthNotification,
providerValidator: defaultProviderValidator,
now: func() *time.Time {
var now = time.Now()
return &now
},
}).With(ctx)
}
@@ -107,15 +121,13 @@ func (svc auth) With(ctx context.Context) AuthService {
users: repository.User(ctx, db),
roles: repository.Role(ctx, db),
subscription: CurrentSubscription,
settings: CurrentSettings,
notifications: DefaultAuthNotification,
subscription: svc.subscription,
settings: svc.settings,
notifications: svc.notifications,
eventbus: svc.eventbus,
providerValidator: svc.providerValidator,
providerValidator: defaultProviderValidator,
now: func() *time.Time {
var now = time.Now()
return &now
},
now: svc.now,
}
}
@@ -182,7 +194,7 @@ func (svc auth) External(profile goth.User) (u *types.User, err error) {
return err
}
if err = eventbus.WaitFor(svc.ctx, event.AuthBeforeLogin(u, authProvider)); err != nil {
if err = svc.eventbus.WaitFor(svc.ctx, event.AuthBeforeLogin(u, authProvider)); err != nil {
return err
}
@@ -199,7 +211,7 @@ func (svc auth) External(profile goth.User) (u *types.User, err error) {
zap.String("email", u.Email),
)
defer eventbus.Dispatch(svc.ctx, event.AuthAfterLogin(u, authProvider))
defer svc.eventbus.Dispatch(svc.ctx, event.AuthAfterLogin(u, authProvider))
return nil
} else {
@@ -233,7 +245,7 @@ func (svc auth) External(profile goth.User) (u *types.User, err error) {
return err
}
if err = eventbus.WaitFor(svc.ctx, event.AuthBeforeSignup(u, authProvider)); err != nil {
if err = svc.eventbus.WaitFor(svc.ctx, event.AuthBeforeSignup(u, authProvider)); err != nil {
return err
}
@@ -246,7 +258,7 @@ func (svc auth) External(profile goth.User) (u *types.User, err error) {
zap.String("email", u.Email),
)
defer eventbus.Dispatch(svc.ctx, event.AuthAfterSignup(u, authProvider))
defer svc.eventbus.Dispatch(svc.ctx, event.AuthAfterSignup(u, authProvider))
_ = svc.autoPromote(u)
} else if err != nil {
@@ -259,11 +271,11 @@ func (svc auth) External(profile goth.User) (u *types.User, err error) {
zap.String("email", u.Email),
)
if err = eventbus.WaitFor(svc.ctx, event.AuthBeforeLogin(u, authProvider)); err != nil {
if err = svc.eventbus.WaitFor(svc.ctx, event.AuthBeforeLogin(u, authProvider)); err != nil {
return err
}
defer eventbus.Dispatch(svc.ctx, event.AuthAfterLogin(u, authProvider))
defer svc.eventbus.Dispatch(svc.ctx, event.AuthAfterLogin(u, authProvider))
}
@@ -342,11 +354,11 @@ func (svc auth) InternalSignUp(input *types.User, password string) (u *types.Use
// We're not actually doing sign-up here - user exists,
// password is a match, so lets trigger before/after user login events
if err = eventbus.WaitFor(svc.ctx, event.AuthBeforeLogin(existing, &types.AuthProvider{})); err != nil {
if err = svc.eventbus.WaitFor(svc.ctx, event.AuthBeforeLogin(existing, &types.AuthProvider{})); err != nil {
return nil, err
}
defer eventbus.Dispatch(svc.ctx, event.AuthAfterLogin(existing, &types.AuthProvider{}))
defer svc.eventbus.Dispatch(svc.ctx, event.AuthAfterLogin(existing, &types.AuthProvider{}))
return existing, nil
@@ -379,7 +391,7 @@ func (svc auth) InternalSignUp(input *types.User, password string) (u *types.Use
EmailConfirmed: !svc.settings.Auth.Internal.Signup.EmailConfirmationRequired,
}
if err = eventbus.WaitFor(svc.ctx, event.AuthBeforeSignup(new, &types.AuthProvider{})); err != nil {
if err = svc.eventbus.WaitFor(svc.ctx, event.AuthBeforeSignup(new, &types.AuthProvider{})); err != nil {
return
}
@@ -410,7 +422,7 @@ func (svc auth) InternalSignUp(input *types.User, password string) (u *types.Use
return nil, err
}
defer eventbus.Dispatch(svc.ctx, event.AuthAfterSignup(u, &types.AuthProvider{}))
defer svc.eventbus.Dispatch(svc.ctx, event.AuthAfterSignup(u, &types.AuthProvider{}))
return u, nil
}
@@ -467,7 +479,7 @@ func (svc auth) InternalLogin(email string, password string) (u *types.User, err
return
}
if err = eventbus.WaitFor(svc.ctx, event.AuthBeforeLogin(u, &types.AuthProvider{})); err != nil {
if err = svc.eventbus.WaitFor(svc.ctx, event.AuthBeforeLogin(u, &types.AuthProvider{})); err != nil {
return nil, err
}
@@ -492,7 +504,7 @@ func (svc auth) InternalLogin(email string, password string) (u *types.User, err
return nil, errors.New("user email pending confirmation")
}
defer eventbus.Dispatch(svc.ctx, event.AuthAfterLogin(u, &types.AuthProvider{}))
defer svc.eventbus.Dispatch(svc.ctx, event.AuthAfterLogin(u, &types.AuthProvider{}))
return u, err
}
+3
View File
@@ -10,6 +10,7 @@ import (
"go.uber.org/zap"
"golang.org/x/crypto/bcrypt"
"github.com/cortezaproject/corteza-server/pkg/eventbus"
"github.com/cortezaproject/corteza-server/system/repository"
repomock "github.com/cortezaproject/corteza-server/system/repository/mocks"
"github.com/cortezaproject/corteza-server/system/types"
@@ -36,6 +37,8 @@ func makeMockAuthService(u repository.UserRepository, c repository.CredentialsRe
settings: &types.Settings{},
eventbus: eventbus.New(),
now: func() *time.Time {
return nil
},
+24 -18
View File
@@ -28,7 +28,9 @@ type (
ctx context.Context
logger *zap.Logger
ac roleAccessController
ac roleAccessController
eventbus eventDispatcher
user UserService
role repository.RoleRepository
@@ -73,21 +75,25 @@ type (
func Role(ctx context.Context) RoleService {
return (&role{
ac: DefaultAccessControl,
logger: DefaultLogger.Named("role"),
ac: DefaultAccessControl,
eventbus: eventbus.Service(),
logger: DefaultLogger.Named("role"),
user: DefaultUser.With(ctx),
}).With(ctx)
}
func (svc role) With(ctx context.Context) RoleService {
db := repository.DB(ctx)
return &role{
db: db,
ctx: ctx,
logger: svc.logger,
ac: svc.ac,
db: db,
ctx: ctx,
logger: svc.logger,
ac: svc.ac,
eventbus: svc.eventbus,
user: svc.user,
role: repository.Role(ctx, db),
user: DefaultUser.With(ctx),
}
}
@@ -151,7 +157,7 @@ func (svc role) Create(new *types.Role) (r *types.Role, err error) {
}
return r, svc.db.Transaction(func() (err error) {
if err = eventbus.WaitFor(svc.ctx, event.RoleBeforeCreate(new, r)); err != nil {
if err = svc.eventbus.WaitFor(svc.ctx, event.RoleBeforeCreate(new, r)); err != nil {
return
}
@@ -163,7 +169,7 @@ func (svc role) Create(new *types.Role) (r *types.Role, err error) {
return
}
defer eventbus.Dispatch(svc.ctx, event.RoleAfterCreate(new, r))
defer svc.eventbus.Dispatch(svc.ctx, event.RoleAfterCreate(new, r))
return
})
}
@@ -186,7 +192,7 @@ func (svc role) Update(upd *types.Role) (r *types.Role, err error) {
return
}
if err = eventbus.WaitFor(svc.ctx, event.RoleBeforeUpdate(upd, r)); err != nil {
if err = svc.eventbus.WaitFor(svc.ctx, event.RoleBeforeUpdate(upd, r)); err != nil {
return
}
@@ -202,7 +208,7 @@ func (svc role) Update(upd *types.Role) (r *types.Role, err error) {
return err
}
defer eventbus.Dispatch(svc.ctx, event.RoleAfterUpdate(upd, r))
defer svc.eventbus.Dispatch(svc.ctx, event.RoleAfterUpdate(upd, r))
return nil
})
@@ -237,7 +243,7 @@ func (svc role) Delete(roleID uint64) (err error) {
return ErrNoPermissions.withStack()
}
if err = eventbus.WaitFor(svc.ctx, event.RoleBeforeDelete(nil, role)); err != nil {
if err = svc.eventbus.WaitFor(svc.ctx, event.RoleBeforeDelete(nil, role)); err != nil {
return
}
@@ -245,7 +251,7 @@ func (svc role) Delete(roleID uint64) (err error) {
return
}
defer eventbus.Dispatch(svc.ctx, event.RoleAfterDelete(nil, role))
defer svc.eventbus.Dispatch(svc.ctx, event.RoleAfterDelete(nil, role))
return
}
@@ -349,7 +355,7 @@ func (svc role) MemberAdd(roleID, userID uint64) (err error) {
return
}
if err = eventbus.WaitFor(svc.ctx, event.RoleMemberBeforeAdd(user, role)); err != nil {
if err = svc.eventbus.WaitFor(svc.ctx, event.RoleMemberBeforeAdd(user, role)); err != nil {
return
}
@@ -361,7 +367,7 @@ func (svc role) MemberAdd(roleID, userID uint64) (err error) {
return
}
defer eventbus.Dispatch(svc.ctx, event.RoleMemberAfterAdd(user, role))
defer svc.eventbus.Dispatch(svc.ctx, event.RoleMemberAfterAdd(user, role))
return nil
}
@@ -379,7 +385,7 @@ func (svc role) MemberRemove(roleID, userID uint64) (err error) {
return
}
if err = eventbus.WaitFor(svc.ctx, event.RoleMemberBeforeRemove(user, role)); err != nil {
if err = svc.eventbus.WaitFor(svc.ctx, event.RoleMemberBeforeRemove(user, role)); err != nil {
return
}
@@ -391,7 +397,7 @@ func (svc role) MemberRemove(roleID, userID uint64) (err error) {
return
}
defer eventbus.Dispatch(svc.ctx, event.RoleMemberAfterRemove(user, role))
defer svc.eventbus.Dispatch(svc.ctx, event.RoleMemberAfterRemove(user, role))
return nil
}
+6
View File
@@ -7,6 +7,7 @@ import (
"github.com/cortezaproject/corteza-server/pkg/app/options"
intAuth "github.com/cortezaproject/corteza-server/pkg/auth"
"github.com/cortezaproject/corteza-server/pkg/eventbus"
"github.com/cortezaproject/corteza-server/pkg/permissions"
"github.com/cortezaproject/corteza-server/pkg/settings"
"github.com/cortezaproject/corteza-server/system/repository"
@@ -34,6 +35,11 @@ type (
CanCreateUser(uint) error
CanRegister(uint) error
}
eventDispatcher interface {
WaitFor(ctx context.Context, ev eventbus.Event) (err error)
Dispatch(ctx context.Context, ev eventbus.Event)
}
)
var (
+31 -20
View File
@@ -42,7 +42,9 @@ type (
auth userAuth
subscription userSubscriptionChecker
ac userAccessController
ac userAccessController
eventbus eventDispatcher
user repository.UserRepository
credentials repository.CredentialsRepository
@@ -103,7 +105,21 @@ type (
func User(ctx context.Context) UserService {
return (&user{
logger: DefaultLogger.Named("user"),
logger: DefaultLogger.Named("user"),
eventbus: eventbus.Service(),
ac: DefaultAccessControl,
settings: CurrentSettings,
auth: DefaultAuth,
subscription: CurrentSubscription,
// @todo wire this with settings (privacy.mask.email)
// new default value will be true!
privacyMaskEmail: false,
// @todo wire this with settings (privacy.mask.name)
// new default value will be true!
privacyMaskName: false,
}).With(ctx)
}
@@ -120,22 +136,17 @@ func (svc user) With(ctx context.Context) UserService {
db: db,
logger: svc.logger,
ac: DefaultAccessControl,
settings: CurrentSettings,
auth: DefaultAuth,
subscription: CurrentSubscription,
ac: svc.ac,
eventbus: svc.eventbus,
settings: svc.settings,
auth: svc.auth,
subscription: svc.subscription,
user: repository.User(ctx, db),
credentials: repository.Credentials(ctx, db),
// @todo wire this with settings (privacy.mask.email)
// new default value will be true!
privacyMaskEmail: false,
// @todo wire this with settings (privacy.mask.name)
// new default value will be true!
privacyMaskName: false,
privacyMaskEmail: svc.privacyMaskEmail,
privacyMaskName: svc.privacyMaskName,
}
}
@@ -239,7 +250,7 @@ func (svc user) Create(new *types.User) (u *types.User, err error) {
}
}
if err = eventbus.WaitFor(svc.ctx, event.UserBeforeCreate(new, u)); err != nil {
if err = svc.eventbus.WaitFor(svc.ctx, event.UserBeforeCreate(new, u)); err != nil {
return
}
@@ -253,7 +264,7 @@ func (svc user) Create(new *types.User) (u *types.User, err error) {
return
}
defer eventbus.Dispatch(svc.ctx, event.UserAfterCreate(new, u))
defer svc.eventbus.Dispatch(svc.ctx, event.UserAfterCreate(new, u))
return
})
}
@@ -285,7 +296,7 @@ func (svc user) Update(upd *types.User) (u *types.User, err error) {
u.Handle = upd.Handle
u.Kind = upd.Kind
if err = eventbus.WaitFor(svc.ctx, event.UserBeforeUpdate(upd, u)); err != nil {
if err = svc.eventbus.WaitFor(svc.ctx, event.UserBeforeUpdate(upd, u)); err != nil {
return
}
@@ -298,7 +309,7 @@ func (svc user) Update(upd *types.User) (u *types.User, err error) {
return
}
defer eventbus.Dispatch(svc.ctx, event.UserAfterUpdate(upd, u))
defer svc.eventbus.Dispatch(svc.ctx, event.UserAfterUpdate(upd, u))
return
})
}
@@ -347,7 +358,7 @@ func (svc user) Delete(ID uint64) (err error) {
return ErrNoPermissions.withStack()
}
if err = eventbus.WaitFor(svc.ctx, event.UserBeforeUpdate(nil, del)); err != nil {
if err = svc.eventbus.WaitFor(svc.ctx, event.UserBeforeUpdate(nil, del)); err != nil {
return
}
@@ -355,7 +366,7 @@ func (svc user) Delete(ID uint64) (err error) {
return
}
defer eventbus.Dispatch(svc.ctx, event.UserAfterDelete(nil, del))
defer svc.eventbus.Dispatch(svc.ctx, event.UserAfterDelete(nil, del))
return
}