Showing
6 changed files
with
146 additions
and
0 deletions
| ... | @@ -81,6 +81,7 @@ abstract class Controller extends BaseController | ... | @@ -81,6 +81,7 @@ abstract class Controller extends BaseController |
| 81 | protected function checkPermission($permissionName) | 81 | protected function checkPermission($permissionName) |
| 82 | { | 82 | { |
| 83 | if (!$this->currentUser || !$this->currentUser->can($permissionName)) { | 83 | if (!$this->currentUser || !$this->currentUser->can($permissionName)) { |
| 84 | + dd($this->currentUser); | ||
| 84 | $this->showPermissionError(); | 85 | $this->showPermissionError(); |
| 85 | } | 86 | } |
| 86 | 87 | ... | ... |
| 1 | +<?php | ||
| 2 | + | ||
| 3 | +namespace BookStack\Http\Controllers; | ||
| 4 | + | ||
| 5 | +use BookStack\Role; | ||
| 6 | +use BookStack\User; | ||
| 7 | +use Illuminate\Http\Request; | ||
| 8 | + | ||
| 9 | +use BookStack\Http\Requests; | ||
| 10 | +use BookStack\Http\Controllers\Controller; | ||
| 11 | + | ||
| 12 | +class PermissionController extends Controller | ||
| 13 | +{ | ||
| 14 | + | ||
| 15 | + protected $role; | ||
| 16 | + | ||
| 17 | + /** | ||
| 18 | + * PermissionController constructor. | ||
| 19 | + * @param $role | ||
| 20 | + * @param $user | ||
| 21 | + */ | ||
| 22 | + public function __construct(Role $role) | ||
| 23 | + { | ||
| 24 | + $this->role = $role; | ||
| 25 | + parent::__construct(); | ||
| 26 | + } | ||
| 27 | + | ||
| 28 | + /** | ||
| 29 | + * Show a listing of the roles in the system. | ||
| 30 | + */ | ||
| 31 | + public function listRoles() | ||
| 32 | + { | ||
| 33 | + $this->checkPermission('settings-update'); | ||
| 34 | + $roles = $this->role->all(); | ||
| 35 | + return view('settings/roles/index', ['roles' => $roles]); | ||
| 36 | + } | ||
| 37 | + | ||
| 38 | + /** | ||
| 39 | + * Show the form for editing a user role. | ||
| 40 | + * @param $id | ||
| 41 | + * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View | ||
| 42 | + */ | ||
| 43 | + public function editRole($id) | ||
| 44 | + { | ||
| 45 | + $this->checkPermission('settings-update'); | ||
| 46 | + $role = $this->role->findOrFail($id); | ||
| 47 | + return view('settings/roles/edit', ['role' => $role]); | ||
| 48 | + } | ||
| 49 | +} |
| ... | @@ -87,6 +87,7 @@ Route::group(['middleware' => 'auth'], function () { | ... | @@ -87,6 +87,7 @@ Route::group(['middleware' => 'auth'], function () { |
| 87 | Route::group(['prefix' => 'settings'], function() { | 87 | Route::group(['prefix' => 'settings'], function() { |
| 88 | Route::get('/', 'SettingController@index'); | 88 | Route::get('/', 'SettingController@index'); |
| 89 | Route::post('/', 'SettingController@update'); | 89 | Route::post('/', 'SettingController@update'); |
| 90 | + | ||
| 90 | // Users | 91 | // Users |
| 91 | Route::get('/users', 'UserController@index'); | 92 | Route::get('/users', 'UserController@index'); |
| 92 | Route::get('/users/create', 'UserController@create'); | 93 | Route::get('/users/create', 'UserController@create'); |
| ... | @@ -95,6 +96,10 @@ Route::group(['middleware' => 'auth'], function () { | ... | @@ -95,6 +96,10 @@ Route::group(['middleware' => 'auth'], function () { |
| 95 | Route::get('/users/{id}', 'UserController@edit'); | 96 | Route::get('/users/{id}', 'UserController@edit'); |
| 96 | Route::put('/users/{id}', 'UserController@update'); | 97 | Route::put('/users/{id}', 'UserController@update'); |
| 97 | Route::delete('/users/{id}', 'UserController@destroy'); | 98 | Route::delete('/users/{id}', 'UserController@destroy'); |
| 99 | + | ||
| 100 | + // Roles | ||
| 101 | + Route::get('/roles', 'PermissionController@listRoles'); | ||
| 102 | + Route::get('/roles/{id}', 'PermissionController@editRole'); | ||
| 98 | }); | 103 | }); |
| 99 | 104 | ||
| 100 | }); | 105 | }); | ... | ... |
| ... | @@ -5,6 +5,7 @@ | ... | @@ -5,6 +5,7 @@ |
| 5 | <div class="col-md-12 setting-nav"> | 5 | <div class="col-md-12 setting-nav"> |
| 6 | <a href="/settings" @if($selected == 'settings') class="selected text-button" @endif><i class="zmdi zmdi-settings"></i>Settings</a> | 6 | <a href="/settings" @if($selected == 'settings') class="selected text-button" @endif><i class="zmdi zmdi-settings"></i>Settings</a> |
| 7 | <a href="/settings/users" @if($selected == 'users') class="selected text-button" @endif><i class="zmdi zmdi-accounts"></i>Users</a> | 7 | <a href="/settings/users" @if($selected == 'users') class="selected text-button" @endif><i class="zmdi zmdi-accounts"></i>Users</a> |
| 8 | + <a href="/settings/roles" @if($selected == 'roles') class="selected text-button" @endif><i class="zmdi zmdi-lock-open"></i>Roles</a> | ||
| 8 | </div> | 9 | </div> |
| 9 | </div> | 10 | </div> |
| 10 | </div> | 11 | </div> | ... | ... |
| 1 | +@extends('base') | ||
| 2 | + | ||
| 3 | +@section('content') | ||
| 4 | + | ||
| 5 | + @include('settings/navbar', ['selected' => 'roles']) | ||
| 6 | + | ||
| 7 | + <div class="container"> | ||
| 8 | + <h1>Edit Role <small> {{ $role->display_name }}</small></h1> | ||
| 9 | + | ||
| 10 | + <form action=""> | ||
| 11 | + <div class="row"> | ||
| 12 | + | ||
| 13 | + <div class="col-md-6"> | ||
| 14 | + <table class="table"> | ||
| 15 | + <tr> | ||
| 16 | + <th></th> | ||
| 17 | + <th>Create</th> | ||
| 18 | + <th>Edit</th> | ||
| 19 | + <th>Delete</th> | ||
| 20 | + </tr> | ||
| 21 | + <tr> | ||
| 22 | + <td>Books</td> | ||
| 23 | + <td></td> | ||
| 24 | + <td></td> | ||
| 25 | + <td></td> | ||
| 26 | + </tr> | ||
| 27 | + <tr> | ||
| 28 | + <td>Chapters</td> | ||
| 29 | + <td></td> | ||
| 30 | + <td></td> | ||
| 31 | + <td></td> | ||
| 32 | + </tr> | ||
| 33 | + <tr> | ||
| 34 | + <td>Pages</td> | ||
| 35 | + <td></td> | ||
| 36 | + <td></td> | ||
| 37 | + <td></td> | ||
| 38 | + </tr> | ||
| 39 | + <tr> | ||
| 40 | + <td>Images</td> | ||
| 41 | + <td></td> | ||
| 42 | + <td></td> | ||
| 43 | + <td></td> | ||
| 44 | + </tr> | ||
| 45 | + </table> | ||
| 46 | + </div> | ||
| 47 | + <div class="col-md-6"> | ||
| 48 | + <div class="form-group"> | ||
| 49 | + <label for="">Can only edit own content</label> | ||
| 50 | + <hr class="even"> | ||
| 51 | + <label for="">Manage users</label> | ||
| 52 | + <hr class="even"> | ||
| 53 | + <label for="">Manage user roles</label> | ||
| 54 | + <hr class="even"> | ||
| 55 | + <label for="">Manage app settings</label> | ||
| 56 | + </div> | ||
| 57 | + </div> | ||
| 58 | + | ||
| 59 | + </div> | ||
| 60 | + <button type="submit" class="button pos">Save Role</button> | ||
| 61 | + </form> | ||
| 62 | + </div> | ||
| 63 | + | ||
| 64 | +@stop |
| 1 | +@extends('base') | ||
| 2 | + | ||
| 3 | +@section('content') | ||
| 4 | + | ||
| 5 | + @include('settings/navbar', ['selected' => 'roles']) | ||
| 6 | + | ||
| 7 | + <div class="container"> | ||
| 8 | + | ||
| 9 | + <h1>User Roles</h1> | ||
| 10 | + <table class="table"> | ||
| 11 | + <tr> | ||
| 12 | + <th>Role Name</th> | ||
| 13 | + <th></th> | ||
| 14 | + <th class="text-right">Users</th> | ||
| 15 | + </tr> | ||
| 16 | + @foreach($roles as $role) | ||
| 17 | + <tr> | ||
| 18 | + <td><a href="/settings/roles/{{ $role->id }}">{{ $role->display_name }}</a></td> | ||
| 19 | + <td>{{ $role->description }}</td> | ||
| 20 | + <td class="text-right">{{ $role->users->count() }}</td> | ||
| 21 | + </tr> | ||
| 22 | + @endforeach | ||
| 23 | + </table> | ||
| 24 | + </div> | ||
| 25 | + | ||
| 26 | +@stop |
-
Please register or sign in to post a comment