/** * Trigger when saving the model. * * @return void */ public function creating(Permission $permission) { if ($permission->priority) { return; } $reference = $permission->newInstance()->where('permissible_id', $permission->permissible_id)->where('permissible_type', $permission->permissible_type)->orderBy('priority', 'DESC')->first(); if (!$reference) { $permission->priority = 1; return; } $permission->priority = $reference->priority + 1; }
/** * Set up the tests * * @return void */ public function setUp() { parent::setUp(); Role::observe(new AddSlugAttribute()); User::observe(new UserObserver()); Permission::observe(new PermissionObserver()); }
/** * Register any other events for your application. * * @return void */ public function boot() { $this->loadMigrationsFrom(__DIR__ . '/../database/migrations'); Role::observe(new AddSlugAttribute()); User::observe(new UserObserver()); Permission::observe(new PermissionObserver()); }
/** @test **/ public function it_sets_the_priority_to_1_gven_a_null_priority_and_no_other_priority_references() { $user = factory(User::class)->create(); $user->deny('admin.*'); $denyAdmin = Permission::first(); $this->assertEquals(1, $denyAdmin->priority); }
/** * Rearrange the permissions of the given permissions * * @param Request $request * @return \Illuminate\Http\JsonResponse */ public function store(Request $request) { foreach ($request->permissions as $key => $permission) { $permission = Permission::find($permission); $permission->priority = $key + 1; $permission->save(); } return ['response' => true]; }
/** * Destroy the given permissions. * * @param int $id * @return void */ public function destroy(int $id) { Permission::destroy($id); return ['response' => true]; }
/** * Swap the two given permissions. * * @param Request $request * @return \Illuminate\Http\JsonResponse */ public function store(Request $request) { $this->permission->swap(...$request->permissions); return ['response' => true]; }