@@ -20,11 +20,11 @@ import (
20
20
"github.com/nais/api/internal/graph/model"
21
21
"github.com/nais/api/internal/graph/pagination"
22
22
"github.com/nais/api/internal/logger"
23
- "github.com/nais/api/internal/role"
24
- "github.com/nais/api/internal/role/rolesql"
25
23
"github.com/nais/api/internal/slug"
26
24
"github.com/nais/api/internal/team"
27
25
"github.com/nais/api/internal/user"
26
+ "github.com/nais/api/internal/usersync/usersyncer"
27
+ "github.com/nais/api/internal/usersync/usersyncsql"
28
28
"github.com/sethvargo/go-envconfig"
29
29
"github.com/sirupsen/logrus"
30
30
"golang.org/x/text/runes"
@@ -154,7 +154,7 @@ func run(ctx context.Context, cfg *seedConfig, log logrus.FieldLogger) error {
154
154
ctx = activitylog .NewLoaderContext (ctx , pool )
155
155
ctx = user .NewLoaderContext (ctx , pool )
156
156
ctx = team .NewLoaderContext (ctx , pool , nil )
157
- ctx = role .NewLoaderContext (ctx , pool )
157
+ ctx = authz .NewLoaderContext (ctx , pool )
158
158
ctx = environment .NewLoaderContext (ctx , pool )
159
159
160
160
emails := map [string ]struct {}{}
@@ -218,39 +218,52 @@ func run(ctx context.Context, cfg *seedConfig, log logrus.FieldLogger) error {
218
218
return fmt .Errorf ("sync environments: %w" , err )
219
219
}
220
220
221
- defaultUserRoles := []rolesql.RoleName {
222
- rolesql .RoleNameTeamcreator ,
223
- rolesql .RoleNameTeamviewer ,
224
- rolesql .RoleNameUserviewer ,
225
- rolesql .RoleNameServiceaccountcreator ,
226
- }
227
-
228
221
var err error
229
222
var adminUser , devUser * user.User
230
223
224
+ usersyncq := usersyncsql .New (database .TransactionFromContext (ctx ))
225
+
226
+ createUser := func (ctx context.Context , name , email string ) (* user.User , error ) {
227
+ usu , err := usersyncq .Create (ctx , usersyncsql.CreateParams {
228
+ Name : name ,
229
+ Email : email ,
230
+ ExternalID : uuid .New ().String (),
231
+ })
232
+ if err != nil {
233
+ return nil , fmt .Errorf ("create user: %w" , err )
234
+ }
235
+
236
+ usr , err := user .GetByEmail (ctx , usu .Email )
237
+ if err != nil {
238
+ return nil , fmt .Errorf ("get user: %w" , err )
239
+ }
240
+
241
+ return usr , nil
242
+ }
243
+
231
244
adminUser , err = user .GetByEmail (ctx , nameToEmail (adminName , cfg .Domain ))
232
245
if err != nil {
233
- adminUser , err = user . Create (ctx , adminName , nameToEmail (adminName , cfg .Domain ), uuid . New (). String ( ))
246
+ adminUser , err = createUser (ctx , adminName , nameToEmail (adminName , cfg .Domain ))
234
247
if err != nil {
235
248
return fmt .Errorf ("create admin user: %w" , err )
236
249
}
237
250
}
238
- if err := role .AssignGlobalRoleToUser (ctx , adminUser .UUID , rolesql .RoleNameAdmin ); err != nil {
251
+
252
+ if err := usersyncq .AssignGlobalAdmin (ctx , adminUser .UUID ); err != nil {
239
253
return fmt .Errorf ("assign global admin role to admin user: %w" , err )
240
254
}
241
255
actor := & authz.Actor {User : adminUser }
242
256
243
257
devUser , err = user .GetByEmail (ctx , nameToEmail (devName , cfg .Domain ))
244
258
if err != nil {
245
- devUser , err = user . Create (ctx , devName , nameToEmail (devName , cfg .Domain ), uuid . New (). String ( ))
259
+ devUser , err = createUser (ctx , devName , nameToEmail (devName , cfg .Domain ))
246
260
if err != nil {
247
261
return fmt .Errorf ("create dev user: %w" , err )
248
262
}
249
263
}
250
- for _ , roleName := range defaultUserRoles {
251
- if err := role .AssignGlobalRoleToUser (ctx , devUser .UUID , roleName ); err != nil {
252
- return fmt .Errorf ("assign globla role %q to dev user: %w" , roleName , err )
253
- }
264
+
265
+ if err := usersyncer .AssignDefaultPermissionsToUser (ctx , usersyncq , devUser .UUID ); err != nil {
266
+ return fmt .Errorf ("assign default permissions to dev user: %w" , err )
254
267
}
255
268
256
269
users := []* user.User {devUser }
@@ -263,22 +276,19 @@ func run(ctx context.Context, cfg *seedConfig, log logrus.FieldLogger) error {
263
276
continue
264
277
}
265
278
266
- u , err := user . Create (ctx , name , email , uuid . New (). String () )
279
+ u , err := createUser (ctx , name , email )
267
280
if err != nil {
268
281
return fmt .Errorf ("create user %q: %w" , email , err )
269
282
}
270
283
271
- for _ , roleName := range defaultUserRoles {
272
- if err = role .AssignGlobalRoleToUser (ctx , u .UUID , roleName ); err != nil {
273
- return fmt .Errorf ("assign global role %q to user %q: %w" , roleName , u .Email , err )
274
- }
284
+ if err = usersyncer .AssignDefaultPermissionsToUser (ctx , usersyncq , u .UUID ); err != nil {
285
+ return fmt .Errorf ("assign default permissions to user %q: %w" , u .Email , err )
275
286
}
276
287
277
288
log .Infof ("%d/%d users created" , i , * cfg .NumUsers )
278
289
users = append (users , u )
279
290
emails [email ] = struct {}{}
280
291
}
281
- usersCreated := len (users )
282
292
283
293
var devteam * team.Team
284
294
devteam , err = team .Get (ctx , "devteam" )
@@ -304,8 +314,8 @@ func run(ctx context.Context, cfg *seedConfig, log logrus.FieldLogger) error {
304
314
return fmt .Errorf ("update external references for devteam: %w" , err )
305
315
}
306
316
307
- if err := role . AssignTeamRoleToUser (ctx , devUser .UUID , devteam .Slug , rolesql . RoleNameTeamowner ); err != nil {
308
- return fmt .Errorf ("assign team owner role to dev user : %w" , err )
317
+ if err := authz . MakeUserTeamOwner (ctx , devUser .UUID , devteam .Slug ); err != nil {
318
+ return fmt .Errorf ("make user %q owner of team %q : %w" , devUser . Email , devteam . Slug , err )
309
319
}
310
320
311
321
input := & team.UpdateTeamEnvironmentInput {
@@ -355,16 +365,16 @@ func run(ctx context.Context, cfg *seedConfig, log logrus.FieldLogger) error {
355
365
}
356
366
357
367
for o := 0 ; o < * cfg .NumOwnersPerTeam ; o ++ {
358
- u := users [rand .IntN (usersCreated )]
359
- if err = role . AssignTeamRoleToUser (ctx , u .UUID , t .Slug , rolesql . RoleNameTeamowner ); err != nil {
360
- return fmt .Errorf ("assign team owner role to user %q in team %q: %w" , u .Email , t .Slug , err )
368
+ u := users [rand .IntN (len ( users ) )]
369
+ if err = authz . MakeUserTeamOwner (ctx , u .UUID , t .Slug ); err != nil {
370
+ return fmt .Errorf ("make user %q owner of team %q: %w" , u .Email , t .Slug , err )
361
371
}
362
372
}
363
373
364
374
for o := 0 ; o < * cfg .NumMembersPerTeam ; o ++ {
365
- u := users [rand .IntN (usersCreated )]
366
- if err = role . AssignTeamRoleToUser (ctx , u .UUID , t .Slug , rolesql . RoleNameTeammember ); err != nil {
367
- return fmt .Errorf ("assign team member role to user %q in team %q: %w" , u .Email , t .Slug , err )
375
+ u := users [rand .IntN (len ( users ) )]
376
+ if err = authz . MakeUserTeamMember (ctx , u .UUID , t .Slug ); err != nil {
377
+ return fmt .Errorf ("make user %q member of team %q: %w" , u .Email , t .Slug , err )
368
378
}
369
379
}
370
380
0 commit comments