Dan Brown

Started work on exposing the role system as editable

...@@ -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