diff --git a/storage-new/self.go b/storage-new/self.go index 29a578a..3383d2c 100644 --- a/storage-new/self.go +++ b/storage-new/self.go @@ -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 }