39 public function register()
41 $this->app->bind(PermissionContract::class, Permission::class);
42 $this->app->bind(PermissionRepositoryContract::class, PermissionRepository::class);
43 $this->app->singleton(PermissionStoreContract::class, PermissionStore::class);
44 $this->app->singleton(PermissionTesterContract::class, PermissionTester::class);
61 PermissionTesterFacade::register($this->app->make(SystemUserPermission::class));
63 PermissionTesterFacade::register($this->app->make(ModuleInstanceUserOverridePermission::class));
64 PermissionTesterFacade::register($this->app->make(ModuleInstanceGroupOverridePermission::class));
65 PermissionTesterFacade::register($this->app->make(ModuleInstanceRoleOverridePermission::class));
67 PermissionTesterFacade::register($this->app->make(ModuleInstancePermissions::class));
69 Gate::before(
function(
User $user, $ability) {
70 return app()->make(PermissionTesterContract::class)->evaluate($ability);
73 Route::bind(
'module_instance_permission',
function($id) {
74 return ModuleInstancePermission::findOrFail($id);
77 Route::bind(
'site_permission',
function($ability) {
78 $permission = app(PermissionRepositoryContract::class)->get($ability);
79 if ($permission->getType() !==
'global') {
80 throw new \HttpException(
'Permission not a site permission', 404);
85 Route::bind(
'permission',
function($ability) {
86 return app(PermissionRepositoryContract::class)->get($ability);