Skip to content

Commit 2c4b217

Browse files
committed
Add audit logs for resetAccountLockout #5726
2 parents 522389c + ba5f4a0 commit 2c4b217

6 files changed

Lines changed: 77 additions & 1 deletion

File tree

pkg/admin/graphql/audit_log.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -260,6 +260,9 @@ var auditLogActivityType = graphql.NewEnum(graphql.EnumConfig{
260260
"ADMIN_API_MUTATION_GENERATE_OOB_OTP_CODE_EXECUTED": &graphql.EnumValueConfig{
261261
Value: "admin_api.mutation.generate_oob_otp_code.executed",
262262
},
263+
"ADMIN_API_MUTATION_RESET_ACCOUNT_LOCKOUT_EXECUTED": &graphql.EnumValueConfig{
264+
Value: "admin_api.mutation.reset_account_lockout.executed",
265+
},
263266
"ADMIN_API_MUTATION_RESET_PASSWORD_EXECUTED": &graphql.EnumValueConfig{
264267
Value: "admin_api.mutation.reset_password.executed",
265268
},

pkg/admin/graphql/lockout_mutation.go

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ import (
66
relay "github.com/authgear/authgear-server/pkg/graphqlgo/relay"
77

88
"github.com/authgear/authgear-server/pkg/api/apierrors"
9+
"github.com/authgear/authgear-server/pkg/api/event/nonblocking"
10+
apimodel "github.com/authgear/authgear-server/pkg/api/model"
911
"github.com/authgear/authgear-server/pkg/util/graphqlutil"
1012
)
1113

@@ -51,7 +53,24 @@ var _ = registerMutationField(
5153
ctx := p.Context
5254
gqlCtx := GQLContext(ctx)
5355

54-
err := gqlCtx.AccountLockoutFacade.ResetAccountLockout(ctx, userID)
56+
previousStatus, err := gqlCtx.AccountLockoutFacade.GetAccountLockoutStatus(ctx, userID)
57+
if err != nil {
58+
return nil, err
59+
}
60+
61+
err = gqlCtx.AccountLockoutFacade.ResetAccountLockout(ctx, userID)
62+
if err != nil {
63+
return nil, err
64+
}
65+
66+
err = gqlCtx.Events.DispatchEventOnCommit(ctx, &nonblocking.AdminAPIMutationResetAccountLockoutExecutedEventPayload{
67+
UserRef: apimodel.UserRef{
68+
Meta: apimodel.Meta{
69+
ID: userID,
70+
},
71+
},
72+
PreviousLockoutStatus: previousStatus,
73+
})
5574
if err != nil {
5675
return nil, err
5776
}
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package nonblocking
2+
3+
import (
4+
"github.com/authgear/authgear-server/pkg/api/event"
5+
"github.com/authgear/authgear-server/pkg/api/model"
6+
)
7+
8+
const (
9+
AdminAPIMutationResetAccountLockoutExecuted event.Type = "admin_api.mutation.reset_account_lockout.executed"
10+
)
11+
12+
type AdminAPIMutationResetAccountLockoutExecutedEventPayload struct {
13+
UserRef model.UserRef `json:"-" resolve:"user"`
14+
UserModel model.User `json:"user"`
15+
PreviousLockoutStatus *model.AccountLockoutStatus `json:"previous_lockout_status"`
16+
}
17+
18+
func (e *AdminAPIMutationResetAccountLockoutExecutedEventPayload) NonBlockingEventType() event.Type {
19+
return AdminAPIMutationResetAccountLockoutExecuted
20+
}
21+
22+
func (e *AdminAPIMutationResetAccountLockoutExecutedEventPayload) UserID() string {
23+
return e.UserModel.ID
24+
}
25+
26+
func (e *AdminAPIMutationResetAccountLockoutExecutedEventPayload) GetTriggeredBy() event.TriggeredByType {
27+
return event.TriggeredByTypeAdminAPI
28+
}
29+
30+
func (e *AdminAPIMutationResetAccountLockoutExecutedEventPayload) FillContext(ctx *event.Context) {
31+
}
32+
33+
func (e *AdminAPIMutationResetAccountLockoutExecutedEventPayload) ForHook() bool {
34+
return false
35+
}
36+
37+
func (e *AdminAPIMutationResetAccountLockoutExecutedEventPayload) ForAudit() bool {
38+
return true
39+
}
40+
41+
func (e *AdminAPIMutationResetAccountLockoutExecutedEventPayload) RequireReindexUserIDs() []string {
42+
return nil
43+
}
44+
45+
func (e *AdminAPIMutationResetAccountLockoutExecutedEventPayload) DeletedUserIDs() []string {
46+
return nil
47+
}
48+
49+
var _ event.NonBlockingPayload = &AdminAPIMutationResetAccountLockoutExecutedEventPayload{}

portal/src/graphql/adminapi/globalTypes.generated.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,7 @@ export enum AuditLogActivityType {
201201
AdminApiMutationRemoveUserFromGroupsExecuted = 'ADMIN_API_MUTATION_REMOVE_USER_FROM_GROUPS_EXECUTED',
202202
AdminApiMutationRemoveUserFromRolesExecuted = 'ADMIN_API_MUTATION_REMOVE_USER_FROM_ROLES_EXECUTED',
203203
AdminApiMutationReplaceScopesOfClientidExecuted = 'ADMIN_API_MUTATION_REPLACE_SCOPES_OF_CLIENTID_EXECUTED',
204+
AdminApiMutationResetAccountLockoutExecuted = 'ADMIN_API_MUTATION_RESET_ACCOUNT_LOCKOUT_EXECUTED',
204205
AdminApiMutationResetPasswordExecuted = 'ADMIN_API_MUTATION_RESET_PASSWORD_EXECUTED',
205206
AdminApiMutationRevokeAllSessionsExecuted = 'ADMIN_API_MUTATION_REVOKE_ALL_SESSIONS_EXECUTED',
206207
AdminApiMutationRevokeSessionExecuted = 'ADMIN_API_MUTATION_REVOKE_SESSION_EXECUTED',

portal/src/graphql/adminapi/schema.graphql

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -286,6 +286,9 @@ enum AuditLogActivityType {
286286
""""""
287287
ADMIN_API_MUTATION_REPLACE_SCOPES_OF_CLIENTID_EXECUTED
288288

289+
""""""
290+
ADMIN_API_MUTATION_RESET_ACCOUNT_LOCKOUT_EXECUTED
291+
289292
""""""
290293
ADMIN_API_MUTATION_RESET_PASSWORD_EXECUTED
291294

portal/src/locale-data/en.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1453,6 +1453,7 @@
14531453
"AuditLogActivityType.ADMIN_API_MUTATION_DELETE_IDENTITY_EXECUTED": "Admin API Mutation: Delete identity",
14541454
"AuditLogActivityType.ADMIN_API_MUTATION_DELETE_USER_EXECUTED": "Admin API Mutation: Delete user",
14551455
"AuditLogActivityType.ADMIN_API_MUTATION_GENERATE_OOB_OTP_CODE_EXECUTED": "Admin API Mutation: Generate OOB OTP code",
1456+
"AuditLogActivityType.ADMIN_API_MUTATION_RESET_ACCOUNT_LOCKOUT_EXECUTED": "Admin API Mutation: Reset account lockout",
14561457
"AuditLogActivityType.ADMIN_API_MUTATION_RESET_PASSWORD_EXECUTED": "Admin API Mutation: Reset password",
14571458
"AuditLogActivityType.ADMIN_API_MUTATION_REVOKE_ALL_SESSIONS_EXECUTED": "Admin API Mutation: Revoke all sessions",
14581459
"AuditLogActivityType.ADMIN_API_MUTATION_REVOKE_SESSION_EXECUTED": "Admin API Mutation: Revoke session",

0 commit comments

Comments
 (0)