File tree Expand file tree Collapse file tree 7 files changed +41
-17
lines changed
Overrides/Http/Middleware Expand file tree Collapse file tree 7 files changed +41
-17
lines changed Original file line number Diff line number Diff line change @@ -13,8 +13,6 @@ public function run(int $userId): array
1313 $ query ->get (['id ' , 'name ' ]);
1414 }])->findOrFail ($ userId );
1515
16- // ray($user->permissions);
17-
1816 //if has direct permissions use it
1917 if ($ user ->permissions ->count ()) {
2018 return $ this ->mapPermissions ($ user ->permissions );
Original file line number Diff line number Diff line change 44
55use Illuminate \Http \Request ;
66use Inertia \Middleware ;
7+ use Modular \Modular \Acl \Services \ListUserPermissions ;
78use Tightenco \Ziggy \Ziggy ;
89
910class HandleInertiaRequests extends Middleware
@@ -32,9 +33,13 @@ public function version(Request $request)
3233 */
3334 public function share (Request $ request )
3435 {
36+ $ user = $ request ->user ();
37+
3538 return array_merge (parent ::share ($ request ), [
3639 'auth ' => [
37- 'user ' => $ request ->user (),
40+ 'user ' => $ user ,
41+ 'permissions ' => $ user ? (new ListUserPermissions )->run ($ user ->id ) : [],
42+ 'isRootUser ' => $ user ? ($ user ->hasRole ('root ' ) ? true : false ) : false ,
3843 ],
3944 'ziggy ' => fn () => array_merge ((new Ziggy )->toArray (), [
4045 'location ' => $ request ->url (),
Original file line number Diff line number Diff line change 22
33namespace Database \Seeders ;
44
5- // use Illuminate\Database\Console\Seeds\WithoutModelEvents;
65use Illuminate \Database \Seeder ;
76use Illuminate \Support \Facades \Schema ;
87use Modular \Modular \User \Models \User ;
8+ use Spatie \Permission \Models \Role ;
99
1010class DatabaseSeeder extends Seeder
1111{
@@ -18,14 +18,16 @@ public function run()
1818 {
1919 Schema::disableForeignKeyConstraints ();
2020
21- User::factory ()->create ([
21+ $ testUser = User::factory ()->create ([
2222 'name ' => 'Example User ' ,
2323 'email ' => 'user@example.com ' ,
2424 'email_verified_at ' => now (),
2525 'password ' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi ' , // password
2626 ]);
2727
28- User::factory (11 )->create ();
28+ Role::create (['name ' => 'root ' ]);
29+
30+ $ testUser ->assignRole ('root ' );
2931
3032 Schema::enableForeignKeyConstraints ();
3133 }
Original file line number Diff line number Diff line change 11<template >
22 <li class =" block" >
33 <Link
4- v-if =" menuItem.label && menuItem.link"
4+ v-if =" menuItem.label && menuItem.link && can(menuItem.permission) "
55 :href =" menuItem.link"
66 class =" flex px-2 py-2 text-skin-base-content transition duration-300 ease-in hover:bg-skin-base-300"
77 >
1010 </Link >
1111
1212 <span
13- v-if =" menuItem.label && !menuItem.link"
13+ v-if =" menuItem.label && !menuItem.link && can(menuItem.permission) "
1414 class =" mt-3 block px-2 py-2 text-xs uppercase"
1515 >
1616 {{ __(menuItem.label) }}
2121</template >
2222
2323<script setup>
24+ import useAuthCan from ' @/Composables/useAuthCan'
25+
2426const props = defineProps ({
2527 menuItem: {
2628 type: Object ,
2729 default : () => {}
2830 }
2931})
32+
33+ const { can } = useAuthCan ()
3034 </script >
Original file line number Diff line number Diff line change 1+ import { usePage } from '@inertiajs/vue3'
2+
3+ export default function useAuthCan ( ) {
4+ const can = ( permission ) => {
5+ const auth = usePage ( ) . props . auth
6+
7+ if ( auth && auth . isRootUser ) {
8+ return true
9+ }
10+
11+ return auth && auth . permissions . includes ( permission )
12+ }
13+
14+ return { can }
15+ }
Original file line number Diff line number Diff line change 77});
88
99it ('allows authenticated access ' , function () {
10+ $ user = User::factory ()->create ();
11+
1012 $ this ->withoutVite ();
11- $ this ->actingAs (User:: factory ()-> create () )->get (route ('dashboard.index ' ))->assertOk ();
13+ $ this ->actingAs ($ user )->get (route ('dashboard.index ' ))->assertOk ();
1214});
1315
1416it ('can render login page ' , function () {
Original file line number Diff line number Diff line change 55use Illuminate \Http \Request ;
66use Inertia \Middleware ;
77
8- // use Tightenco\Ziggy\Ziggy;
9-
108class HandleInertiaRequests extends Middleware
119{
1210 /**
@@ -33,15 +31,15 @@ public function version(Request $request)
3331 */
3432 public function share (Request $ request )
3533 {
34+ $ user = $ request ->user ();
35+
3636 return array_merge (parent ::share ($ request ), [
3737 'auth ' => [
38- 'user ' => $ request ->user (),
38+ 'user ' => $ user ,
39+ 'permissions ' => [],
40+ 'isRootUser ' => true ,
3941 ],
40- // 'ziggy' => function () use ($request) {
41- // return array_merge((new Ziggy)->toArray(), [
42- // 'location' => $request->url(),
43- // ]);
44- // },
42+
4543 'flash ' => fn () => [
4644 'success ' => $ request ->session ()->get ('success ' ),
4745 'error ' => $ request ->session ()->get ('error ' ),
You can’t perform that action at this time.
0 commit comments