Skip to content
This repository was archived by the owner on Jan 3, 2023. It is now read-only.

Commit 2aba15e

Browse files
committed
v3.2.2
- some cleanup - use spatie exception for middlewares - add the option to add extra middlewares - update wiki - update resources
1 parent b68b717 commit 2aba15e

File tree

11 files changed

+63
-21
lines changed

11 files changed

+63
-21
lines changed

logs/v3.2.0.txt

-7
This file was deleted.

logs/v3.2.2.txt

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
- some cleanup
2+
- use spatie exception for middlewares
3+
- add the option to add extra middlewares
4+
- update wiki
5+
- update resources

src/Controllers/Admin/PagesController.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public function create()
3636
$roles = Role::pluck('name', 'name');
3737
$permissions = Permission::pluck('name', 'name');
3838
$menus = $this->cache->tags('sm')->get('menus')->pluck('name', 'id');
39-
$templates = Page::groupBy('template')->pluck('template')->filter()->all();
39+
$templates = array_unique($this->cache->tags('sm')->get('pages')->pluck('template')->filter()->all());
4040

4141
return view("{$this->adminPath}.pages.create", compact('roles', 'permissions', 'menus', 'templates'));
4242
}
@@ -80,7 +80,7 @@ public function edit($id)
8080
$permissions = Permission::pluck('name', 'name');
8181
$page = $this->cache->tags('sm')->get('pages')->find($id);
8282
$menus = $this->cache->tags('sm')->get('menus')->pluck('name', 'id');
83-
$templates = Page::groupBy('template')->pluck('template')->filter()->all();
83+
$templates = array_unique($this->cache->tags('sm')->get('pages')->pluck('template')->filter()->all());
8484

8585
return view("{$this->adminPath}.pages.edit", compact('roles', 'permissions', 'page', 'menus', 'templates'));
8686
}

src/Middleware/PermissionMiddleware.php

+7-2
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
namespace ctf0\SimpleMenu\Middleware;
44

55
use Closure;
6+
use Spatie\Permission\Exceptions\UnauthorizedException;
67

78
class PermissionMiddleware
89
{
@@ -21,8 +22,12 @@ public function handle($request, Closure $next, ...$permissions)
2122
return $next($request);
2223
}
2324

24-
if (!$request->user()->hasAnyPermission(...$permissions)) {
25-
abort(403);
25+
if (auth()->guest()) {
26+
throw UnauthorizedException::notLoggedIn();
27+
}
28+
29+
if (!$request->user()->hasAnyPermission($permissions)) {
30+
throw UnauthorizedException::forPermissions($permissions);
2631
}
2732

2833
return $next($request);

src/Middleware/RoleMiddleware.php

+7-2
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
namespace ctf0\SimpleMenu\Middleware;
44

55
use Closure;
6+
use Spatie\Permission\Exceptions\UnauthorizedException;
67

78
class RoleMiddleware
89
{
@@ -21,8 +22,12 @@ public function handle($request, Closure $next, ...$roles)
2122
return $next($request);
2223
}
2324

24-
if (!$request->user()->hasAnyRole(...$roles)) {
25-
abort(403);
25+
if (auth()->guest()) {
26+
throw UnauthorizedException::notLoggedIn();
27+
}
28+
29+
if (!$request->user()->hasAnyRole($roles)) {
30+
throw UnauthorizedException::forRoles($roles);
2631
}
2732

2833
return $next($request);

src/Traits/RoutesTrait.php

+9-7
Original file line numberDiff line numberDiff line change
@@ -65,10 +65,10 @@ protected function routeGen($page)
6565
}
6666

6767
// route data
68-
$url = $page->url;
69-
$action = $page->action;
70-
$prefix = $page->prefix;
71-
$routeName = $page->route_name;
68+
$url = $page->url;
69+
$action = $page->action;
70+
$prefix = $page->prefix;
71+
$routeName = $page->route_name;
7272

7373
// page data
7474
$title = $page->title;
@@ -80,11 +80,12 @@ protected function routeGen($page)
8080
$breadCrumb = $page->getAncestors();
8181

8282
// middlewares
83+
$middlewares = $page->middlewares;
8384
$roles = 'role:' . implode(',', $page->roles->pluck('name')->toArray());
8485
$permissions = 'perm:' . implode(',', $page->permissions->pluck('name')->toArray());
8586

8687
// cache the page so we can pass the page params to the controller@method
87-
$compact = compact('template', 'title', 'body', 'desc', 'meta', 'cover', 'breadCrumb', 'roles', 'permissions');
88+
$compact = compact('template', 'title', 'body', 'desc', 'meta', 'cover', 'breadCrumb', 'middlewares', 'roles', 'permissions');
8889

8990
$this->cache->tags('sm')->rememberForever($this->getCrntLocale() . "-$routeName", function () use ($compact) {
9091
return $compact;
@@ -96,11 +97,12 @@ protected function routeGen($page)
9697
? $action
9798
: '\ctf0\SimpleMenu\Controllers\DummyController@handle';
9899

99-
// dynamic
100+
$mds = is_null($middlewares) ? [$roles, $permissions] : [$middlewares, $roles, $permissions];
101+
100102
Route::get($route)
101103
->uses($uses)
102104
->name($routeName)
103-
->middleware([$roles, $permissions]);
105+
->middleware($mds);
104106
}
105107

106108
protected function createRoutesList($page)

src/database/migrations/2017_02_28_202951_create_pages_table.php

+1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ public function up()
2121
$table->string('cover')->nullable();
2222
$table->string('action')->nullable();
2323
$table->string('template')->nullable();
24+
$table->string('middlewares')->nullable();
2425
$table->string('route_name')->nullable();
2526
$table->json('prefix')->nullable();
2627
$table->json('url');

src/resources/lang/en/messages.php

+2-1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
'desc' => 'Description',
1919
'edit' => 'Edit',
2020
'email' => 'Email',
21+
'find' => 'Find',
2122
'go_back' => 'Go Back',
2223
'guards' => 'Guards',
2324
'locals' => 'Title Available In',
@@ -50,5 +51,5 @@
5051
'url' => 'Url',
5152
'url_prefix' => 'Url Prefix',
5253
'users' => 'Users',
53-
'find' => 'Find',
54+
'middlewares' => 'MiddleWares',
5455
);

src/resources/views/admin/bulma/pages/create.blade.php

+12
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,18 @@ class="input toggle-pad"
112112
</p>
113113
@endif
114114
</div>
115+
116+
{{-- middleware --}}
117+
<div class="field">
118+
{{ Form::label('middlewares', trans('SimpleMenu::messages.middlewares'), ['class' => 'label']) }}
119+
<div class="control">
120+
{{ Form::text(
121+
'middlewares',
122+
null,
123+
['class' => 'input','placeholder' => "some, other, middleware"])
124+
}}
125+
</div>
126+
</div>
115127
</div>
116128
</div>
117129
<hr>

src/resources/views/admin/bulma/pages/edit.blade.php

+12
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,18 @@ class="input toggle-pad"
126126
</p>
127127
@endif
128128
</div>
129+
130+
{{-- middleware --}}
131+
<div class="field">
132+
{{ Form::label('middlewares', trans('SimpleMenu::messages.middlewares'), ['class' => 'label']) }}
133+
<div class="control">
134+
{{ Form::text(
135+
'middlewares',
136+
$page->middlewares,
137+
['class' => 'input','placeholder' => "some, other, middleware"])
138+
}}
139+
</div>
140+
</div>
129141
</div>
130142
</div>
131143
<hr>

src/resources/views/admin/bulma/pages/index.blade.php

+6
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ class="button is-success">
7070
<th class="is-dark sort link" data-sort="data-sort-name">{{ trans('SimpleMenu::messages.title') }}</th>
7171
<th class="is-dark sort link" data-sort="data-sort-route">{{ trans('SimpleMenu::messages.route') }}</th>
7272
<th class="is-dark sort link" data-sort="data-sort-url">{{ trans('SimpleMenu::messages.url') }}</th>
73+
<th class="is-dark sort link" data-sort="data-sort-middlwares">{{ trans('SimpleMenu::messages.middlewares') }}</th>
7374
<th class="is-dark sort link" data-sort="data-sort-roles">{{ trans('SimpleMenu::messages.roles') }}</th>
7475
<th class="is-dark sort link" data-sort="data-sort-permissions">{{ trans('SimpleMenu::messages.permissions') }}</th>
7576
<th class="is-dark sort link" data-sort="data-sort-menus">{{ trans('SimpleMenu::messages.menus') }}</th>
@@ -103,6 +104,11 @@ class="cbx-checkbox"
103104
</td>
104105
<td class="data-sort-route">{{ $page->route_name }}</td>
105106
<td class="data-sort-url">{{ $page->prefix ? "$page->prefix/$page->url" : $page->url }}</td>
107+
<td class="data-sort-middlewares">
108+
@if ($page->middlewares)
109+
<span class="tag is-rounded is-medium is-link">{{ $page->middlewares }}</span>
110+
@endif
111+
</td>
106112
<td class="data-sort-roles">
107113
@foreach ($page->roles as $role)
108114
<span class="tag is-rounded is-medium is-link">

0 commit comments

Comments
 (0)