Actually apply all relevant roles to the server actor
This commit is contained in:
parent
d81a06308a
commit
fb5ecf3c45
1 changed files with 21 additions and 15 deletions
|
@ -169,21 +169,27 @@ func insertUserPronoun(user *models.User) error {
|
|||
}
|
||||
|
||||
func attachUserToRole(user *models.User) error {
|
||||
_, err := dbgen.UserToRole.Where(dbgen.UserToRole.UserId.Eq(user.ID)).
|
||||
Where(dbgen.UserToRole.RoleId.Eq(models.FullAdminRole.ID)).
|
||||
First()
|
||||
switch err {
|
||||
case nil:
|
||||
return nil
|
||||
case gorm.ErrRecordNotFound:
|
||||
u2r := models.UserToRole{
|
||||
User: *user,
|
||||
UserId: user.ID,
|
||||
Role: models.FullAdminRole,
|
||||
RoleId: models.FullAdminRole.ID,
|
||||
roles := []models.Role{models.DefaultUserRole, models.ServerActorRole, models.FullAdminRole}
|
||||
for _, role := range roles {
|
||||
_, err := dbgen.UserToRole.Where(dbgen.UserToRole.UserId.Eq(user.ID)).
|
||||
Where(dbgen.UserToRole.RoleId.Eq(role.ID)).
|
||||
First()
|
||||
switch err {
|
||||
case nil:
|
||||
continue
|
||||
case gorm.ErrRecordNotFound:
|
||||
u2r := models.UserToRole{
|
||||
User: *user,
|
||||
UserId: user.ID,
|
||||
Role: role,
|
||||
RoleId: role.ID,
|
||||
}
|
||||
if err = dbgen.UserToRole.Save(&u2r); err != nil {
|
||||
return err
|
||||
}
|
||||
default:
|
||||
return err
|
||||
}
|
||||
return dbgen.UserToRole.Save(&u2r)
|
||||
default:
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue