|
@@ -619,7 +619,7 @@ func transferSuperAdmin(w http.ResponseWriter, r *http.Request) {
|
|
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "badrequest"))
|
|
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "badrequest"))
|
|
return
|
|
return
|
|
}
|
|
}
|
|
- if !u.IsAdmin {
|
|
|
|
|
|
+ if u.PlatformRoleID != models.AdminRole {
|
|
logic.ReturnErrorResponse(w, r, logic.FormatError(errors.New("only admins can be promoted to superadmin role"), "forbidden"))
|
|
logic.ReturnErrorResponse(w, r, logic.FormatError(errors.New("only admins can be promoted to superadmin role"), "forbidden"))
|
|
return
|
|
return
|
|
}
|
|
}
|
|
@@ -628,16 +628,14 @@ func transferSuperAdmin(w http.ResponseWriter, r *http.Request) {
|
|
return
|
|
return
|
|
}
|
|
}
|
|
|
|
|
|
- u.IsSuperAdmin = true
|
|
|
|
- u.IsAdmin = false
|
|
|
|
|
|
+ u.PlatformRoleID = models.SuperAdminRole
|
|
err = logic.UpsertUser(*u)
|
|
err = logic.UpsertUser(*u)
|
|
if err != nil {
|
|
if err != nil {
|
|
slog.Error("error updating user to superadmin: ", "user", u.UserName, "error", err.Error())
|
|
slog.Error("error updating user to superadmin: ", "user", u.UserName, "error", err.Error())
|
|
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal"))
|
|
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal"))
|
|
return
|
|
return
|
|
}
|
|
}
|
|
- caller.IsSuperAdmin = false
|
|
|
|
- caller.IsAdmin = true
|
|
|
|
|
|
+ caller.PlatformRoleID = models.AdminRole
|
|
err = logic.UpsertUser(*caller)
|
|
err = logic.UpsertUser(*caller)
|
|
if err != nil {
|
|
if err != nil {
|
|
slog.Error("error demoting user to admin: ", "user", caller.UserName, "error", err.Error())
|
|
slog.Error("error demoting user to admin: ", "user", caller.UserName, "error", err.Error())
|
|
@@ -666,11 +664,6 @@ func createUser(w http.ResponseWriter, r *http.Request) {
|
|
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "badrequest"))
|
|
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "badrequest"))
|
|
return
|
|
return
|
|
}
|
|
}
|
|
- callerUserRole, err := logic.GetRole(caller.PlatformRoleID)
|
|
|
|
- if err != nil {
|
|
|
|
- logic.ReturnErrorResponse(w, r, logic.FormatError(err, "badrequest"))
|
|
|
|
- return
|
|
|
|
- }
|
|
|
|
var user models.User
|
|
var user models.User
|
|
err = json.NewDecoder(r.Body).Decode(&user)
|
|
err = json.NewDecoder(r.Body).Decode(&user)
|
|
if err != nil {
|
|
if err != nil {
|
|
@@ -707,20 +700,17 @@ func createUser(w http.ResponseWriter, r *http.Request) {
|
|
return
|
|
return
|
|
}
|
|
}
|
|
|
|
|
|
- if callerUserRole.ID != models.SuperAdminRole && user.IsAdmin {
|
|
|
|
|
|
+ if caller.PlatformRoleID != models.SuperAdminRole && user.PlatformRoleID == models.AdminRole {
|
|
err = errors.New("only superadmin can create admin users")
|
|
err = errors.New("only superadmin can create admin users")
|
|
slog.Error("error creating new user: ", "user", user.UserName, "error", err)
|
|
slog.Error("error creating new user: ", "user", user.UserName, "error", err)
|
|
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "forbidden"))
|
|
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "forbidden"))
|
|
return
|
|
return
|
|
}
|
|
}
|
|
|
|
|
|
- if !servercfg.IsPro && !user.IsAdmin {
|
|
|
|
|
|
+ if !servercfg.IsPro && user.PlatformRoleID != models.AdminRole {
|
|
logic.ReturnErrorResponse(w, r, logic.FormatError(errors.New("non-admins users can only be created on Pro version"), "forbidden"))
|
|
logic.ReturnErrorResponse(w, r, logic.FormatError(errors.New("non-admins users can only be created on Pro version"), "forbidden"))
|
|
return
|
|
return
|
|
}
|
|
}
|
|
- if userRole.ID == models.AdminRole {
|
|
|
|
- user.IsAdmin = true
|
|
|
|
- }
|
|
|
|
err = logic.CreateUser(&user)
|
|
err = logic.CreateUser(&user)
|
|
if err != nil {
|
|
if err != nil {
|
|
slog.Error("error creating new user: ", "user", user.UserName, "error", err.Error())
|
|
slog.Error("error creating new user: ", "user", user.UserName, "error", err.Error())
|
|
@@ -1134,9 +1124,6 @@ func userInviteSignUp(w http.ResponseWriter, r *http.Request) {
|
|
user.PlatformRoleID = userG.PlatformRole
|
|
user.PlatformRoleID = userG.PlatformRole
|
|
user.UserGroups[inviteGroupID] = struct{}{}
|
|
user.UserGroups[inviteGroupID] = struct{}{}
|
|
}
|
|
}
|
|
- if user.PlatformRoleID == models.AdminRole {
|
|
|
|
- user.IsAdmin = true
|
|
|
|
- }
|
|
|
|
user.NetworkRoles = make(map[models.NetworkID]map[models.UserRole]struct{})
|
|
user.NetworkRoles = make(map[models.NetworkID]map[models.UserRole]struct{})
|
|
user.IsSuperAdmin = false
|
|
user.IsSuperAdmin = false
|
|
err = logic.CreateUser(&user)
|
|
err = logic.CreateUser(&user)
|