Skip to content

Commit

Permalink
Added role API responses & requests
Browse files Browse the repository at this point in the history
Also applied other slight tweaks and comment updates based upon manual
endpoint testing.
  • Loading branch information
ssddanbrown committed Feb 19, 2023
1 parent 9502f34 commit 950c02e
Show file tree
Hide file tree
Showing 9 changed files with 147 additions and 9 deletions.
4 changes: 4 additions & 0 deletions app/Auth/Role.php
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,10 @@ class Role extends Model implements Loggable

protected $hidden = ['pivot'];

protected $casts = [
'mfa_enforced' => 'boolean',
];

/**
* The roles that belong to the role.
*/
Expand Down
20 changes: 12 additions & 8 deletions app/Http/Controllers/Api/RoleApiController.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,16 +17,16 @@ class RoleApiController extends ApiController

protected $rules = [
'create' => [
'display_name' => ['required', 'min:3', 'max:180'],
'description' => ['max:180'],
'display_name' => ['required', 'string', 'min:3', 'max:180'],
'description' => ['string', 'max:180'],
'mfa_enforced' => ['boolean'],
'external_auth_id' => ['string'],
'permissions' => ['array'],
'permissions.*' => ['string'],
],
'update' => [
'display_name' => ['min:3', 'max:180'],
'description' => ['max:180'],
'display_name' => ['string', 'min:3', 'max:180'],
'description' => ['string', 'max:180'],
'mfa_enforced' => ['boolean'],
'external_auth_id' => ['string'],
'permissions' => ['array'],
Expand Down Expand Up @@ -64,6 +64,7 @@ public function list()

/**
* Create a new role in the system.
* Permissions should be provided as an array of permission name strings.
* Requires permission to manage roles.
*/
public function create(Request $request)
Expand All @@ -81,7 +82,8 @@ public function create(Request $request)
}

/**
* View the details of a single user.
* View the details of a single role.
* Provides the permissions and a high-level list of the users assigned.
* Requires permission to manage roles.
*/
public function read(string $id)
Expand All @@ -94,6 +96,10 @@ public function read(string $id)

/**
* Update an existing role in the system.
* Permissions should be provided as an array of permission name strings.
* An empty "permissions" array would clear granted permissions.
* In many cases, where permissions are changed, you'll want to fetch the existing
* permissions and then modify before providing in your update request.
* Requires permission to manage roles.
*/
public function update(Request $request, string $id)
Expand All @@ -107,9 +113,7 @@ public function update(Request $request, string $id)
}

/**
* Delete a user from the system.
* Can optionally accept a user id via `migrate_ownership_id` to indicate
* who should be the new owner of their related content.
* Delete a role from the system.
* Requires permission to manage roles.
*/
public function delete(string $id)
Expand Down
11 changes: 11 additions & 0 deletions dev/api/requests/roles-create.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"display_name": "Book Maintainer",
"description": "People who maintain books",
"mfa_enforced": true,
"permissions": [
"book-view-all",
"book-update-all",
"book-delete-all",
"restrictions-manage-all"
]
}
14 changes: 14 additions & 0 deletions dev/api/requests/roles-update.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"display_name": "Book & Shelf Maintainers",
"description": "All those who maintain books & shelves",
"mfa_enforced": false,
"permissions": [
"book-view-all",
"book-update-all",
"book-delete-all",
"bookshelf-view-all",
"bookshelf-update-all",
"bookshelf-delete-all",
"restrictions-manage-all"
]
}
15 changes: 15 additions & 0 deletions dev/api/responses/roles-create.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"display_name": "Book Maintainer",
"description": "People who maintain books",
"mfa_enforced": true,
"updated_at": "2023-02-19T15:38:40.000000Z",
"created_at": "2023-02-19T15:38:40.000000Z",
"id": 26,
"permissions": [
"book-delete-all",
"book-update-all",
"book-view-all",
"restrictions-manage-all"
],
"users": []
}
41 changes: 41 additions & 0 deletions dev/api/responses/roles-list.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
{
"data": [
{
"id": 1,
"display_name": "Admin",
"description": "Administrator of the whole application",
"created_at": "2021-09-29T16:29:19.000000Z",
"updated_at": "2022-11-03T13:26:18.000000Z",
"system_name": "admin",
"external_auth_id": "wizards",
"mfa_enforced": true,
"users_count": 11,
"permissions_count": 54
},
{
"id": 2,
"display_name": "Editor",
"description": "User can edit Books, Chapters & Pages",
"created_at": "2021-09-29T16:29:19.000000Z",
"updated_at": "2022-12-01T02:32:57.000000Z",
"system_name": "",
"external_auth_id": "",
"mfa_enforced": false,
"users_count": 17,
"permissions_count": 49
},
{
"id": 3,
"display_name": "Public",
"description": "The role given to public visitors if allowed",
"created_at": "2021-09-29T16:29:19.000000Z",
"updated_at": "2022-09-02T12:32:12.000000Z",
"system_name": "public",
"external_auth_id": "",
"mfa_enforced": false,
"users_count": 1,
"permissions_count": 2
}
],
"total": 3
}
23 changes: 23 additions & 0 deletions dev/api/responses/roles-read.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
{
"id": 26,
"display_name": "Book Maintainer",
"description": "People who maintain books",
"created_at": "2023-02-19T15:38:40.000000Z",
"updated_at": "2023-02-19T15:38:40.000000Z",
"system_name": "",
"external_auth_id": "",
"mfa_enforced": true,
"permissions": [
"book-delete-all",
"book-update-all",
"book-view-all",
"restrictions-manage-all"
],
"users": [
{
"id": 11,
"name": "Barry Scott",
"slug": "barry-scott"
}
]
}
26 changes: 26 additions & 0 deletions dev/api/responses/roles-update.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{
"id": 26,
"display_name": "Book & Shelf Maintainers",
"description": "All those who maintain books & shelves",
"created_at": "2023-02-19T15:38:40.000000Z",
"updated_at": "2023-02-19T15:49:13.000000Z",
"system_name": "",
"external_auth_id": "",
"mfa_enforced": false,
"permissions": [
"book-delete-all",
"book-update-all",
"book-view-all",
"bookshelf-delete-all",
"bookshelf-update-all",
"bookshelf-view-all",
"restrictions-manage-all"
],
"users": [
{
"id": 11,
"name": "Barry Scott",
"slug": "barry-scott"
}
]
}
2 changes: 1 addition & 1 deletion routes/api.php
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@
Route::get('pages/{id}/export/html', [PageExportApiController::class, 'exportHtml']);
Route::get('pages/{id}/export/pdf', [PageExportApiController::class, 'exportPdf']);
Route::get('pages/{id}/export/plaintext', [PageExportApiController::class, 'exportPlainText']);
Route::get('pages/{id}/export/markdown', [PageExportApiController::class, 'exportMarkDown']);
Route::get('pages/{id}/export/markdown', [PageExportApiController::class, 'exportMarkdown']);

Route::get('search', [SearchApiController::class, 'all']);

Expand Down

0 comments on commit 950c02e

Please sign in to comment.