fix: adminUpdate role validation
This commit is contained in:
@@ -7,6 +7,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/authorizerdev/authorizer/server/constants"
|
||||||
"github.com/authorizerdev/authorizer/server/db"
|
"github.com/authorizerdev/authorizer/server/db"
|
||||||
"github.com/authorizerdev/authorizer/server/enum"
|
"github.com/authorizerdev/authorizer/server/enum"
|
||||||
"github.com/authorizerdev/authorizer/server/graph/model"
|
"github.com/authorizerdev/authorizer/server/graph/model"
|
||||||
@@ -91,7 +92,7 @@ func AdminUpdateUser(ctx context.Context, params model.AdminUpdateUserInput) (*m
|
|||||||
inputRoles = append(inputRoles, *item)
|
inputRoles = append(inputRoles, *item)
|
||||||
}
|
}
|
||||||
|
|
||||||
if !utils.IsValidRolesArray(inputRoles) {
|
if !utils.IsValidRoles(append([]string{}, append(constants.ROLES, constants.PROTECTED_ROLES...)...), inputRoles) {
|
||||||
return res, fmt.Errorf("invalid list of roles")
|
return res, fmt.Errorf("invalid list of roles")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -39,7 +39,7 @@ func Signup(ctx context.Context, params model.SignUpInput) (*model.AuthResponse,
|
|||||||
|
|
||||||
if len(params.Roles) > 0 {
|
if len(params.Roles) > 0 {
|
||||||
// check if roles exists
|
// check if roles exists
|
||||||
if !utils.IsValidRolesArray(params.Roles) {
|
if !utils.IsValidRoles(constants.ROLES, params.Roles) {
|
||||||
return res, fmt.Errorf(`invalid roles`)
|
return res, fmt.Errorf(`invalid roles`)
|
||||||
} else {
|
} else {
|
||||||
inputRoles = params.Roles
|
inputRoles = params.Roles
|
||||||
|
@@ -124,31 +124,6 @@ func UpdateProfile(ctx context.Context, params model.UpdateProfileInput) (*model
|
|||||||
}()
|
}()
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO this idea needs to be verified otherwise every user can make themselves super admin
|
|
||||||
// rolesToSave := ""
|
|
||||||
// if params.Roles != nil && len(params.Roles) > 0 {
|
|
||||||
// currentRoles := strings.Split(user.Roles, ",")
|
|
||||||
// inputRoles := []string{}
|
|
||||||
// for _, item := range params.Roles {
|
|
||||||
// inputRoles = append(inputRoles, *item)
|
|
||||||
// }
|
|
||||||
|
|
||||||
// if !utils.IsValidRolesArray(inputRoles) {
|
|
||||||
// return res, fmt.Errorf("invalid list of roles")
|
|
||||||
// }
|
|
||||||
|
|
||||||
// if !utils.IsStringArrayEqual(inputRoles, currentRoles) {
|
|
||||||
// rolesToSave = strings.Join(inputRoles, ",")
|
|
||||||
// }
|
|
||||||
|
|
||||||
// session.DeleteToken(fmt.Sprintf("%v", user.ID))
|
|
||||||
// utils.DeleteCookie(gc)
|
|
||||||
// }
|
|
||||||
|
|
||||||
// if rolesToSave != "" {
|
|
||||||
// user.Roles = rolesToSave
|
|
||||||
// }
|
|
||||||
|
|
||||||
_, err = db.Mgr.UpdateUser(user)
|
_, err = db.Mgr.UpdateUser(user)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println("Error updating user:", err)
|
log.Println("Error updating user:", err)
|
||||||
|
@@ -40,22 +40,6 @@ func IsSuperAdmin(gc *gin.Context) bool {
|
|||||||
return secret == constants.ADMIN_SECRET
|
return secret == constants.ADMIN_SECRET
|
||||||
}
|
}
|
||||||
|
|
||||||
func IsValidRolesArray(roles []string) bool {
|
|
||||||
valid := true
|
|
||||||
currentRoleMap := map[string]bool{}
|
|
||||||
|
|
||||||
for _, currentRole := range constants.ROLES {
|
|
||||||
currentRoleMap[currentRole] = true
|
|
||||||
}
|
|
||||||
for _, inputRole := range roles {
|
|
||||||
if !currentRoleMap[inputRole] {
|
|
||||||
valid = false
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return valid
|
|
||||||
}
|
|
||||||
|
|
||||||
func IsValidRoles(userRoles []string, roles []string) bool {
|
func IsValidRoles(userRoles []string, roles []string) bool {
|
||||||
valid := true
|
valid := true
|
||||||
for _, role := range roles {
|
for _, role := range roles {
|
||||||
|
Reference in New Issue
Block a user