]> BookStack Code Mirror - bookstack/commitdiff
Started work on exposing the role system as editable
authorDan Brown <redacted>
Fri, 26 Feb 2016 23:44:02 +0000 (23:44 +0000)
committerDan Brown <redacted>
Fri, 26 Feb 2016 23:44:02 +0000 (23:44 +0000)
app/Http/Controllers/Controller.php
app/Http/Controllers/PermissionController.php [new file with mode: 0644]
app/Http/routes.php
resources/views/settings/navbar.blade.php
resources/views/settings/roles/edit.blade.php [new file with mode: 0644]
resources/views/settings/roles/index.blade.php [new file with mode: 0644]

index ab37a44a1d7223c816c9ca9aade22b7f96ac193c..654fed5380af518e538b0c3850f0634b784a729f 100644 (file)
@@ -81,6 +81,7 @@ abstract class Controller extends BaseController
     protected function checkPermission($permissionName)
     {
         if (!$this->currentUser || !$this->currentUser->can($permissionName)) {
+            dd($this->currentUser);
             $this->showPermissionError();
         }
 
diff --git a/app/Http/Controllers/PermissionController.php b/app/Http/Controllers/PermissionController.php
new file mode 100644 (file)
index 0000000..69e2619
--- /dev/null
@@ -0,0 +1,49 @@
+<?php
+
+namespace BookStack\Http\Controllers;
+
+use BookStack\Role;
+use BookStack\User;
+use Illuminate\Http\Request;
+
+use BookStack\Http\Requests;
+use BookStack\Http\Controllers\Controller;
+
+class PermissionController extends Controller
+{
+
+    protected $role;
+
+    /**
+     * PermissionController constructor.
+     * @param $role
+     * @param $user
+     */
+    public function __construct(Role $role)
+    {
+        $this->role = $role;
+        parent::__construct();
+    }
+
+    /**
+     * Show a listing of the roles in the system.
+     */
+    public function listRoles()
+    {
+        $this->checkPermission('settings-update');
+        $roles = $this->role->all();
+        return view('settings/roles/index', ['roles' => $roles]);
+    }
+
+    /**
+     * Show the form for editing a user role.
+     * @param $id
+     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
+     */
+    public function editRole($id)
+    {
+        $this->checkPermission('settings-update');
+        $role = $this->role->findOrFail($id);
+        return view('settings/roles/edit', ['role' => $role]);
+    }
+}
index 36cf2a19f63019031f948855911c1ff0ab7fc289..eea0a03370f293985e76246e8a8cacd5b5737c2f 100644 (file)
@@ -87,6 +87,7 @@ Route::group(['middleware' => 'auth'], function () {
     Route::group(['prefix' => 'settings'], function() {
         Route::get('/', 'SettingController@index');
         Route::post('/', 'SettingController@update');
+
         // Users
         Route::get('/users', 'UserController@index');
         Route::get('/users/create', 'UserController@create');
@@ -95,6 +96,10 @@ Route::group(['middleware' => 'auth'], function () {
         Route::get('/users/{id}', 'UserController@edit');
         Route::put('/users/{id}', 'UserController@update');
         Route::delete('/users/{id}', 'UserController@destroy');
+
+        // Roles
+        Route::get('/roles', 'PermissionController@listRoles');
+        Route::get('/roles/{id}', 'PermissionController@editRole');
     });
 
 });
index 3afe59a8e66443b70daa4b729dadb1ec9b4a47b7..7c31868895fe2453bef164822923ec4127dbaa51 100644 (file)
@@ -5,6 +5,7 @@
             <div class="col-md-12 setting-nav">
                 <a href="/settings" @if($selected == 'settings') class="selected text-button" @endif><i class="zmdi zmdi-settings"></i>Settings</a>
                 <a href="/settings/users" @if($selected == 'users') class="selected text-button" @endif><i class="zmdi zmdi-accounts"></i>Users</a>
+                <a href="/settings/roles" @if($selected == 'roles') class="selected text-button" @endif><i class="zmdi zmdi-lock-open"></i>Roles</a>
             </div>
         </div>
     </div>
diff --git a/resources/views/settings/roles/edit.blade.php b/resources/views/settings/roles/edit.blade.php
new file mode 100644 (file)
index 0000000..ae2d015
--- /dev/null
@@ -0,0 +1,64 @@
+@extends('base')
+
+@section('content')
+
+    @include('settings/navbar', ['selected' => 'roles'])
+
+    <div class="container">
+        <h1>Edit Role <small> {{ $role->display_name }}</small></h1>
+
+        <form action="">
+            <div class="row">
+
+                <div class="col-md-6">
+                    <table class="table">
+                        <tr>
+                            <th></th>
+                            <th>Create</th>
+                            <th>Edit</th>
+                            <th>Delete</th>
+                        </tr>
+                        <tr>
+                            <td>Books</td>
+                            <td></td>
+                            <td></td>
+                            <td></td>
+                        </tr>
+                        <tr>
+                            <td>Chapters</td>
+                            <td></td>
+                            <td></td>
+                            <td></td>
+                        </tr>
+                        <tr>
+                            <td>Pages</td>
+                            <td></td>
+                            <td></td>
+                            <td></td>
+                        </tr>
+                        <tr>
+                            <td>Images</td>
+                            <td></td>
+                            <td></td>
+                            <td></td>
+                        </tr>
+                    </table>
+                </div>
+                <div class="col-md-6">
+                    <div class="form-group">
+                        <label for="">Can only edit own content</label>
+                        <hr class="even">
+                        <label for="">Manage users</label>
+                        <hr class="even">
+                        <label for="">Manage user roles</label>
+                        <hr class="even">
+                        <label for="">Manage app settings</label>
+                    </div>
+                </div>
+
+            </div>
+            <button type="submit" class="button pos">Save Role</button>
+        </form>
+    </div>
+
+@stop
diff --git a/resources/views/settings/roles/index.blade.php b/resources/views/settings/roles/index.blade.php
new file mode 100644 (file)
index 0000000..661d66f
--- /dev/null
@@ -0,0 +1,26 @@
+@extends('base')
+
+@section('content')
+
+    @include('settings/navbar', ['selected' => 'roles'])
+
+    <div class="container">
+
+        <h1>User Roles</h1>
+        <table class="table">
+            <tr>
+                <th>Role Name</th>
+                <th></th>
+                <th class="text-right">Users</th>
+            </tr>
+            @foreach($roles as $role)
+                <tr>
+                    <td><a href="/settings/roles/{{ $role->id }}">{{ $role->display_name }}</a></td>
+                    <td>{{ $role->description }}</td>
+                    <td class="text-right">{{ $role->users->count() }}</td>
+                </tr>
+            @endforeach
+        </table>
+    </div>
+
+@stop