mirror of
https://github.com/pelican-dev/panel.git
synced 2025-09-20 00:04:53 +02:00
Prevent rootAdmins from having other roles & being deleted via the API (#1699)
This commit is contained in:
parent
61dcb9a3ba
commit
8f1ec20e96
@ -102,12 +102,15 @@ class UserController extends ApplicationApiController
|
|||||||
*/
|
*/
|
||||||
public function assignRoles(AssignUserRolesRequest $request, User $user): array
|
public function assignRoles(AssignUserRolesRequest $request, User $user): array
|
||||||
{
|
{
|
||||||
foreach ($request->input('roles') as $role) {
|
if (!$user->isRootAdmin()) {
|
||||||
if ($role === Role::getRootAdmin()->id) {
|
$rootAdminId = Role::getRootAdmin()->id;
|
||||||
continue;
|
foreach ($request->input('roles') as $role) {
|
||||||
}
|
if ($role === $rootAdminId) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
$user->assignRole($role);
|
$user->assignRole($role);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$response = $this->fractal->item($user)
|
$response = $this->fractal->item($user)
|
||||||
@ -125,12 +128,15 @@ class UserController extends ApplicationApiController
|
|||||||
*/
|
*/
|
||||||
public function removeRoles(AssignUserRolesRequest $request, User $user): array
|
public function removeRoles(AssignUserRolesRequest $request, User $user): array
|
||||||
{
|
{
|
||||||
foreach ($request->input('roles') as $role) {
|
if (!$user->isRootAdmin()) {
|
||||||
if ($role === Role::getRootAdmin()->id) {
|
$rootAdminId = Role::getRootAdmin()->id;
|
||||||
continue;
|
foreach ($request->input('roles') as $role) {
|
||||||
}
|
if ($role === $rootAdminId) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
$user->removeRole($role);
|
$user->removeRole($role);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$response = $this->fractal->item($user)
|
$response = $this->fractal->item($user)
|
||||||
@ -169,8 +175,12 @@ class UserController extends ApplicationApiController
|
|||||||
*/
|
*/
|
||||||
public function delete(DeleteUserRequest $request, User $user): JsonResponse
|
public function delete(DeleteUserRequest $request, User $user): JsonResponse
|
||||||
{
|
{
|
||||||
$user->delete();
|
if (!$user->isRootAdmin()) {
|
||||||
|
$user->delete();
|
||||||
|
|
||||||
return new JsonResponse([], JsonResponse::HTTP_NO_CONTENT);
|
return new JsonResponse([], JsonResponse::HTTP_NO_CONTENT);
|
||||||
|
}
|
||||||
|
|
||||||
|
return new JsonResponse([], JsonResponse::HTTP_FORBIDDEN);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -8,8 +8,8 @@ class AssignUserRolesRequest extends StoreUserRequest
|
|||||||
public function rules(?array $rules = null): array
|
public function rules(?array $rules = null): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
'roles' => 'array',
|
'roles' => 'required|array',
|
||||||
'roles.*' => 'int',
|
'roles.*' => 'integer|exists:roles,id',
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user