Skip to content

Commit 70e2d2c

Browse files
committed
Danny's feedback
1 parent b2dcb3b commit 70e2d2c

File tree

3 files changed

+43
-38
lines changed

3 files changed

+43
-38
lines changed

coderd/notifications/events.go

+3
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@ var (
1212
TemplateWorkspaceDormant = uuid.MustParse("0ea69165-ec14-4314-91f1-69566ac3c5a0")
1313
TemplateWorkspaceAutoUpdated = uuid.MustParse("c34a0c09-0704-4cac-bd1c-0c0146811c2b")
1414
TemplateWorkspaceMarkedForDeletion = uuid.MustParse("51ce2fdf-c9ca-4be1-8d70-628674f9bc42")
15+
)
1516

17+
// Account-related events.
18+
var (
1619
TemplateUserAccountCreated = uuid.MustParse("4e19c0ac-94e1-4532-9515-d1801aa283b2")
1720
)

coderd/users.go

+36-34
Original file line numberDiff line numberDiff line change
@@ -1277,45 +1277,47 @@ func (api *API) CreateUser(ctx context.Context, store database.Store, req Create
12771277
}
12781278
return nil
12791279
}, nil)
1280-
if err == nil && !req.SkipNotifications {
1281-
// Notify user admins
1282-
// Get all users with user admin permission including owners
1283-
var owners, userAdmins []database.GetUsersRow
1284-
var eg errgroup.Group
1285-
eg.Go(func() error {
1286-
var err error
1287-
owners, err = api.Database.GetUsers(ctx, database.GetUsersParams{
1288-
RbacRole: []string{codersdk.RoleOwner},
1289-
})
1290-
if err != nil {
1291-
return xerrors.Errorf("get owners: %w", err)
1292-
}
1293-
return nil
1280+
if err != nil || req.SkipNotifications {
1281+
return user, req.OrganizationID, err
1282+
}
1283+
1284+
// Notify user admins
1285+
// Get all users with user admin permission including owners
1286+
var owners, userAdmins []database.GetUsersRow
1287+
var eg errgroup.Group
1288+
eg.Go(func() error {
1289+
var err error
1290+
owners, err = api.Database.GetUsers(ctx, database.GetUsersParams{
1291+
RbacRole: []string{codersdk.RoleOwner},
12941292
})
1295-
eg.Go(func() error {
1296-
var err error
1297-
userAdmins, err = api.Database.GetUsers(ctx, database.GetUsersParams{
1298-
RbacRole: []string{codersdk.RoleUserAdmin},
1299-
})
1300-
if err != nil {
1301-
return xerrors.Errorf("get user admins: %w", err)
1302-
}
1303-
return nil
1293+
if err != nil {
1294+
return xerrors.Errorf("get owners: %w", err)
1295+
}
1296+
return nil
1297+
})
1298+
eg.Go(func() error {
1299+
var err error
1300+
userAdmins, err = api.Database.GetUsers(ctx, database.GetUsersParams{
1301+
RbacRole: []string{codersdk.RoleUserAdmin},
13041302
})
1305-
err := eg.Wait()
13061303
if err != nil {
1307-
return database.User{}, uuid.Nil, err
1304+
return xerrors.Errorf("get user admins: %w", err)
13081305
}
1306+
return nil
1307+
})
1308+
err = eg.Wait()
1309+
if err != nil {
1310+
return database.User{}, uuid.Nil, err
1311+
}
13091312

1310-
for _, u := range append(owners, userAdmins...) {
1311-
if _, err := api.NotificationsEnqueuer.Enqueue(ctx, u.ID, notifications.TemplateUserAccountCreated,
1312-
map[string]string{
1313-
"user_account_name": user.Username,
1314-
}, "api-users-create",
1315-
user.ID,
1316-
); err != nil {
1317-
api.Logger.Warn(ctx, "unable to notify about created user", slog.F("created_user", user.Name), slog.Error(err))
1318-
}
1313+
for _, u := range append(owners, userAdmins...) {
1314+
if _, err := api.NotificationsEnqueuer.Enqueue(ctx, u.ID, notifications.TemplateUserAccountCreated,
1315+
map[string]string{
1316+
"created_account_name": user.Username,
1317+
}, "api-users-create",
1318+
user.ID,
1319+
); err != nil {
1320+
api.Logger.Warn(ctx, "unable to notify about created user", slog.F("created_user", user.Username), slog.Error(err))
13191321
}
13201322
}
13211323
return user, req.OrganizationID, err

coderd/users_test.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -626,7 +626,7 @@ func TestNotifyCreatedUser(t *testing.T) {
626626
require.Equal(t, notifications.TemplateUserAccountCreated, notifyEnq.Sent[0].TemplateID)
627627
require.Equal(t, firstUser.UserID, notifyEnq.Sent[0].UserID)
628628
require.Contains(t, notifyEnq.Sent[0].Targets, user.ID)
629-
require.Equal(t, user.Username, notifyEnq.Sent[0].Labels["user_account_name"])
629+
require.Equal(t, user.Username, notifyEnq.Sent[0].Labels["created_account_name"])
630630
})
631631

632632
t.Run("UserAdminNotified", func(t *testing.T) {
@@ -670,19 +670,19 @@ func TestNotifyCreatedUser(t *testing.T) {
670670
require.Equal(t, notifications.TemplateUserAccountCreated, notifyEnq.Sent[0].TemplateID)
671671
require.Equal(t, firstUser.UserID, notifyEnq.Sent[0].UserID)
672672
require.Contains(t, notifyEnq.Sent[0].Targets, userAdmin.ID)
673-
require.Equal(t, userAdmin.Username, notifyEnq.Sent[0].Labels["user_account_name"])
673+
require.Equal(t, userAdmin.Username, notifyEnq.Sent[0].Labels["created_account_name"])
674674

675675
// "Member" account created, "owner" notified
676676
require.Equal(t, notifications.TemplateUserAccountCreated, notifyEnq.Sent[1].TemplateID)
677677
require.Equal(t, firstUser.UserID, notifyEnq.Sent[1].UserID)
678678
require.Contains(t, notifyEnq.Sent[1].Targets, member.ID)
679-
require.Equal(t, member.Username, notifyEnq.Sent[1].Labels["user_account_name"])
679+
require.Equal(t, member.Username, notifyEnq.Sent[1].Labels["created_account_name"])
680680

681681
// "Member" account created, "user admin" notified
682682
require.Equal(t, notifications.TemplateUserAccountCreated, notifyEnq.Sent[1].TemplateID)
683683
require.Equal(t, userAdmin.ID, notifyEnq.Sent[2].UserID)
684684
require.Contains(t, notifyEnq.Sent[2].Targets, member.ID)
685-
require.Equal(t, member.Username, notifyEnq.Sent[2].Labels["user_account_name"])
685+
require.Equal(t, member.Username, notifyEnq.Sent[2].Labels["created_account_name"])
686686
})
687687
}
688688

0 commit comments

Comments
 (0)