From 4d8d91e797dd20521e9f4ac76bd24b809ba05352 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20LEUILLIOT?= Date: Wed, 30 Dec 2020 16:15:57 +0100 Subject: [PATCH] fix(role): update creation doc and validation rules --- src/Http/Controllers/Api/v2/RoleController.php | 9 +++++++++ src/Http/Validation/NewRole.php | 18 +++++++++++++++++- 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/src/Http/Controllers/Api/v2/RoleController.php b/src/Http/Controllers/Api/v2/RoleController.php index f65a968..677e939 100644 --- a/src/Http/Controllers/Api/v2/RoleController.php +++ b/src/Http/Controllers/Api/v2/RoleController.php @@ -151,6 +151,15 @@ public function getDetail(int $role_id) * type="string", * format="byte", * description="Base64 encoded new role logo" + * ), + * @OA\Property( + * property="permissions", + * description="A list of the permissions which have to be attached to the role.", + * type="array", + * @OA\Items( + * type="string", + * description="A permission name" + * ) * ) * ) * ) diff --git a/src/Http/Validation/NewRole.php b/src/Http/Validation/NewRole.php index a0a482c..f7f7ae3 100644 --- a/src/Http/Validation/NewRole.php +++ b/src/Http/Validation/NewRole.php @@ -23,6 +23,7 @@ namespace Seat\Api\Http\Validation; use Illuminate\Foundation\Http\FormRequest; +use Illuminate\Validation\Rule; /** * Class NewRole. @@ -53,8 +54,23 @@ public function rules() return [ 'title' => 'string|unique:roles,title|required', 'description' => 'string', - 'permissions' => 'array', + 'permissions' => [ + 'array', + Rule::in($this->getPermissionsList()), + ], 'logo' => 'base64image', ]; } + + /** + * @return array + */ + private function getPermissionsList(): array + { + return collect(config('seat.permissions'))->map(function ($permissions, $scope) { + return collect(array_keys($permissions))->transform(function ($permission) use ($scope) { + return $scope . '.' . $permission; + }); + })->flatten()->all(); + } }