3
0

Adds before/after suspend to system:user resource

This commit is contained in:
Vivek Patel
2021-06-11 18:12:39 +05:30
parent 0853b92393
commit 13fc9d2684
4 changed files with 163 additions and 1 deletions
+58
View File
@@ -2553,6 +2553,35 @@ func getEventTypeDefinitions() []eventTypeDef {
},
},
{
ResourceType: "system:user",
EventType: "beforeSuspend",
Properties: []eventTypePropertyDef{
{
Name: "user",
Type: "User",
Immutable: false,
},
{
Name: "oldUser",
Type: "User",
Immutable: true,
},
},
Constraints: []eventTypeConstraintDef{
{
Name: "user.handle",
},
{
Name: "user.email",
},
},
},
{
ResourceType: "system:user",
EventType: "afterCreate",
@@ -2639,5 +2668,34 @@ func getEventTypeDefinitions() []eventTypeDef {
},
},
},
{
ResourceType: "system:user",
EventType: "afterSuspend",
Properties: []eventTypePropertyDef{
{
Name: "user",
Type: "User",
Immutable: false,
},
{
Name: "oldUser",
Type: "User",
Immutable: true,
},
},
Constraints: []eventTypeConstraintDef{
{
Name: "user.handle",
},
{
Name: "user.email",
},
},
},
}
}
+96
View File
@@ -404,6 +404,13 @@ type (
*userBase
}
// userBeforeSuspend
//
// This type is auto-generated.
userBeforeSuspend struct {
*userBase
}
// userAfterCreate
//
// This type is auto-generated.
@@ -424,6 +431,13 @@ type (
userAfterDelete struct {
*userBase
}
// userAfterSuspend
//
// This type is auto-generated.
userAfterSuspend struct {
*userBase
}
)
// ResourceType returns "system"
@@ -3047,6 +3061,13 @@ func (userBeforeDelete) EventType() string {
return "beforeDelete"
}
// EventType on userBeforeSuspend returns "beforeSuspend"
//
// This function is auto-generated.
func (userBeforeSuspend) EventType() string {
return "beforeSuspend"
}
// EventType on userAfterCreate returns "afterCreate"
//
// This function is auto-generated.
@@ -3068,6 +3089,13 @@ func (userAfterDelete) EventType() string {
return "afterDelete"
}
// EventType on userAfterSuspend returns "afterSuspend"
//
// This function is auto-generated.
func (userAfterSuspend) EventType() string {
return "afterSuspend"
}
// UserOnManual creates onManual for system:user resource
//
// This function is auto-generated.
@@ -3204,6 +3232,40 @@ func UserBeforeDeleteImmutable(
}
}
// UserBeforeSuspend creates beforeSuspend for system:user resource
//
// This function is auto-generated.
func UserBeforeSuspend(
argUser *types.User,
argOldUser *types.User,
) *userBeforeSuspend {
return &userBeforeSuspend{
userBase: &userBase{
immutable: false,
user: argUser,
oldUser: argOldUser,
},
}
}
// UserBeforeSuspendImmutable creates beforeSuspend for system:user resource
//
// None of the arguments will be mutable!
//
// This function is auto-generated.
func UserBeforeSuspendImmutable(
argUser *types.User,
argOldUser *types.User,
) *userBeforeSuspend {
return &userBeforeSuspend{
userBase: &userBase{
immutable: true,
user: argUser,
oldUser: argOldUser,
},
}
}
// UserAfterCreate creates afterCreate for system:user resource
//
// This function is auto-generated.
@@ -3306,6 +3368,40 @@ func UserAfterDeleteImmutable(
}
}
// UserAfterSuspend creates afterSuspend for system:user resource
//
// This function is auto-generated.
func UserAfterSuspend(
argUser *types.User,
argOldUser *types.User,
) *userAfterSuspend {
return &userAfterSuspend{
userBase: &userBase{
immutable: false,
user: argUser,
oldUser: argOldUser,
},
}
}
// UserAfterSuspendImmutable creates afterSuspend for system:user resource
//
// None of the arguments will be mutable!
//
// This function is auto-generated.
func UserAfterSuspendImmutable(
argUser *types.User,
argOldUser *types.User,
) *userAfterSuspend {
return &userAfterSuspend{
userBase: &userBase{
immutable: true,
user: argUser,
oldUser: argOldUser,
},
}
}
// SetUser sets new user value
//
// This function is auto-generated.
+1 -1
View File
@@ -60,7 +60,7 @@ system:auth-client:
system:user:
on: ['manual']
ba: ['create', 'update', 'delete']
ba: ['create', 'update', 'delete', 'suspend']
props:
- name: 'user'
type: '*types.User'
+8
View File
@@ -594,11 +594,19 @@ func (svc user) Suspend(ctx context.Context, userID uint64) (err error) {
return UserErrNotAllowedToSuspend()
}
// Clone u to oldUser
oldUser := *u
u.SuspendedAt = now()
if err = svc.eventbus.WaitFor(ctx, event.UserBeforeSuspend(u, &oldUser)); err != nil {
return
}
if err = store.UpdateUser(ctx, svc.store, u); err != nil {
return
}
_ = svc.eventbus.WaitFor(ctx, event.UserAfterSuspend(u, &oldUser))
return nil
}()