Actually apply all relevant roles to the server actor

This commit is contained in:
Melody Becker 2025-04-16 16:42:01 +02:00
parent d81a06308a
commit fb5ecf3c45
Signed by: mstar
SSH key fingerprint: SHA256:9VAo09aaVNTWKzPW7Hq2LW+ox9OdwmTSHRoD4mlz1yI

View file

@ -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
}