permissions created

This commit is contained in:
Benjamin Takats
2022-12-15 14:27:06 +01:00
parent 5d6de66e3d
commit f217c4a04d
21 changed files with 154 additions and 66 deletions

View File

@@ -0,0 +1,77 @@
<?php
namespace App\Console\Commands\Database;
use Illuminate\Console\Command;
class CreatePermissions extends Command
{
/**
* The name and signature of the console command.
* @var string
*/
protected $signature = 'permissions:create';
/**
* The console command description.
* @var string
*/
protected $description = 'Command description';
/**
* Execute the console command.
* @return int
*/
public function handle()
{
$actions = [
'*',
'viewAny',
'view',
'create',
'update',
'delete',
'restore',
'forceDelete',
];
$permissions = [
'PermissionPolicy',
'RolePolicy',
'BitcoinEventPolicy',
'BookCasePolicy',
'CategoryPolicy',
'CityPolicy',
'CountryPolicy',
'CourseEventPolicy',
'CoursePolicy',
'EpisodePolicy',
'LecturerPolicy',
'LibraryItemPolicy',
'LibraryPolicy',
'MeetupEventPolicy',
'MeetupPolicy',
'OrangePillPolicy',
'ParticipantPolicy',
'PodcastPolicy',
'RegistrationPolicy',
'TeamPolicy',
'UserPolicy',
'VenuePolicy',
'CommentPolicy',
'NovaAdminPolicy',
];
foreach ($permissions as $permission) {
$this->info($permission);
foreach ($actions as $action) {
$this->info($action);
\Spatie\Permission\Models\Permission::firstOrCreate([
'name' => $permission.'.'.$action,
], [
'guard_name' => 'web',
]);
}
}
return Command::SUCCESS;
}
}

View File

@@ -71,7 +71,9 @@ class User extends Resource
->updateRules('nullable', Rules\Password::defaults()),
MorphToMany::make('Roles', 'roles', \Itsmejoshua\Novaspatiepermissions\Role::class),
MorphToMany::make('Permissions', 'permissions', \Itsmejoshua\Novaspatiepermissions\Permission::class),
];
}

View File

@@ -57,7 +57,7 @@ class BitcoinEventPolicy extends BasePolicy
*/
public function update(User $user, BitcoinEvent $bitcoinEvent)
{
return $bitcoinEvent->created_by === $user->id;
return $bitcoinEvent->created_by === $user->id || $user->can((new \ReflectionClass($this))->getShortName().'.'.__FUNCTION__);
}
/**

View File

@@ -41,7 +41,7 @@ class CategoryPolicy extends BasePolicy
*/
public function create(User $user)
{
return $user->hasRole('super-admin');
return $user->can((new \ReflectionClass($this))->getShortName().'.'.__FUNCTION__);
}
/**
@@ -53,7 +53,7 @@ class CategoryPolicy extends BasePolicy
*/
public function update(User $user, Category $category)
{
return $user->hasRole('super-admin');
return $user->can((new \ReflectionClass($this))->getShortName().'.'.__FUNCTION__);
}
/**
@@ -65,7 +65,7 @@ class CategoryPolicy extends BasePolicy
*/
public function delete(User $user, Category $category)
{
return $user->hasRole('super-admin');
return $user->can((new \ReflectionClass($this))->getShortName().'.'.__FUNCTION__);
}
/**
@@ -77,7 +77,7 @@ class CategoryPolicy extends BasePolicy
*/
public function restore(User $user, Category $category)
{
return $user->hasRole('super-admin');
return $user->can((new \ReflectionClass($this))->getShortName().'.'.__FUNCTION__);
}
/**
@@ -89,6 +89,6 @@ class CategoryPolicy extends BasePolicy
*/
public function forceDelete(User $user, Category $category)
{
return $user->hasRole('super-admin');
return $user->can((new \ReflectionClass($this))->getShortName().'.'.__FUNCTION__);
}
}

View File

@@ -53,7 +53,7 @@ class CityPolicy extends BasePolicy
*/
public function update(User $user, City $city)
{
return $city->created_by === $user->id;
return $city->created_by === $user->id || $user->can((new \ReflectionClass($this))->getShortName().'.'.__FUNCTION__);
}
/**

View File

@@ -41,7 +41,7 @@ class CountryPolicy extends BasePolicy
*/
public function create(User $user)
{
return $user->hasRole('super-admin');
return $user->can((new \ReflectionClass($this))->getShortName().'.'.__FUNCTION__);
}
/**
@@ -53,7 +53,7 @@ class CountryPolicy extends BasePolicy
*/
public function update(User $user, Country $country)
{
return $user->hasRole('super-admin');
return $user->can((new \ReflectionClass($this))->getShortName().'.'.__FUNCTION__);
}
/**
@@ -65,7 +65,7 @@ class CountryPolicy extends BasePolicy
*/
public function delete(User $user, Country $country)
{
return $user->hasRole('super-admin');
return $user->can((new \ReflectionClass($this))->getShortName().'.'.__FUNCTION__);
}
/**
@@ -77,7 +77,7 @@ class CountryPolicy extends BasePolicy
*/
public function restore(User $user, Country $country)
{
return $user->hasRole('super-admin');
return $user->can((new \ReflectionClass($this))->getShortName().'.'.__FUNCTION__);
}
/**
@@ -89,6 +89,6 @@ class CountryPolicy extends BasePolicy
*/
public function forceDelete(User $user, Country $country)
{
return $user->hasRole('super-admin');
return $user->can((new \ReflectionClass($this))->getShortName().'.'.__FUNCTION__);
}
}

View File

@@ -55,7 +55,7 @@ class CourseEventPolicy extends BasePolicy
*/
public function update(User $user, CourseEvent $courseEvent)
{
return $user->belongsToTeam($courseEvent->course->lecturer->team);
return $user->belongsToTeam($courseEvent->course->lecturer->team) || $user->can((new \ReflectionClass($this))->getShortName().'.'.__FUNCTION__);
}
/**

View File

@@ -53,7 +53,7 @@ class CoursePolicy extends BasePolicy
*/
public function update(User $user, Course $course)
{
return $user->belongsToTeam($course->lecturer->team);
return $user->belongsToTeam($course->lecturer->team) || $user->can((new \ReflectionClass($this))->getShortName().'.'.__FUNCTION__);
}
/**

View File

@@ -57,7 +57,7 @@ class EpisodePolicy extends BasePolicy
*/
public function update(User $user, Episode $episode)
{
return $user->hasRole('super-admin');
return $user->can((new \ReflectionClass($this))->getShortName().'.'.__FUNCTION__);
}
/**

View File

@@ -57,7 +57,7 @@ class LecturerPolicy extends BasePolicy
*/
public function update(User $user, Lecturer $lecturer)
{
return $lecturer->created_by === $user->id;
return $lecturer->created_by === $user->id || $user->can((new \ReflectionClass($this))->getShortName().'.'.__FUNCTION__);
}
/**

View File

@@ -53,7 +53,7 @@ class LibraryItemPolicy extends BasePolicy
*/
public function update(User $user, LibraryItem $libraryItem)
{
return $libraryItem->created_by === $user->id;
return $libraryItem->created_by === $user->id || $user->can((new \ReflectionClass($this))->getShortName().'.'.__FUNCTION__);
}
/**

View File

@@ -53,7 +53,7 @@ class LibraryPolicy extends BasePolicy
*/
public function update(User $user, Library $library)
{
return $library->created_by === $user->id;
return $library->created_by === $user->id || $user->can((new \ReflectionClass($this))->getShortName().'.'.__FUNCTION__);
}
/**

View File

@@ -53,7 +53,7 @@ class MeetupEventPolicy extends BasePolicy
*/
public function update(User $user, MeetupEvent $meetupEvent)
{
return $meetupEvent->created_by === $user->id;
return $meetupEvent->created_by === $user->id || $user->can((new \ReflectionClass($this))->getShortName().'.'.__FUNCTION__);
}
/**

View File

@@ -57,7 +57,7 @@ class MeetupPolicy extends BasePolicy
*/
public function update(User $user, Meetup $meetup)
{
return $meetup->created_by === $user->id;
return $meetup->created_by === $user->id || $user->can((new \ReflectionClass($this))->getShortName().'.'.__FUNCTION__);
}
/**

View File

@@ -14,11 +14,12 @@ class PermissionPolicy extends BasePolicy
* Determine whether the user can view any models.
*
* @param \App\Models\User $user
*
* @return \Illuminate\Auth\Access\Response|bool
*/
public function viewAny(User $user)
{
return $user->hasRole('super-admin');
return $user->can((new \ReflectionClass($this))->getShortName().'.'.__FUNCTION__);
}
/**
@@ -26,22 +27,24 @@ class PermissionPolicy extends BasePolicy
*
* @param \App\Models\User $user
* @param \Spatie\Permission\Models\Permission $permission
*
* @return \Illuminate\Auth\Access\Response|bool
*/
public function view(User $user, Permission $permission)
{
return $user->hasRole('super-admin');
return $user->can((new \ReflectionClass($this))->getShortName().'.'.__FUNCTION__);
}
/**
* Determine whether the user can create models.
*
* @param \App\Models\User $user
*
* @return \Illuminate\Auth\Access\Response|bool
*/
public function create(User $user)
{
return $user->hasRole('super-admin');
return $user->can((new \ReflectionClass($this))->getShortName().'.'.__FUNCTION__);
}
/**
@@ -49,11 +52,12 @@ class PermissionPolicy extends BasePolicy
*
* @param \App\Models\User $user
* @param \Spatie\Permission\Models\Permission $permission
*
* @return \Illuminate\Auth\Access\Response|bool
*/
public function update(User $user, Permission $permission)
{
return $user->hasRole('super-admin');
return $user->can((new \ReflectionClass($this))->getShortName().'.'.__FUNCTION__);
}
/**
@@ -61,11 +65,12 @@ class PermissionPolicy extends BasePolicy
*
* @param \App\Models\User $user
* @param \Spatie\Permission\Models\Permission $permission
*
* @return \Illuminate\Auth\Access\Response|bool
*/
public function delete(User $user, Permission $permission)
{
return $user->hasRole('super-admin');
return $user->can((new \ReflectionClass($this))->getShortName().'.'.__FUNCTION__);
}
/**
@@ -73,11 +78,12 @@ class PermissionPolicy extends BasePolicy
*
* @param \App\Models\User $user
* @param \Spatie\Permission\Models\Permission $permission
*
* @return \Illuminate\Auth\Access\Response|bool
*/
public function restore(User $user, Permission $permission)
{
return $user->hasRole('super-admin');
return $user->can((new \ReflectionClass($this))->getShortName().'.'.__FUNCTION__);
}
/**
@@ -85,10 +91,11 @@ class PermissionPolicy extends BasePolicy
*
* @param \App\Models\User $user
* @param \Spatie\Permission\Models\Permission $permission
*
* @return \Illuminate\Auth\Access\Response|bool
*/
public function forceDelete(User $user, Permission $permission)
{
return $user->hasRole('super-admin');
return $user->can((new \ReflectionClass($this))->getShortName().'.'.__FUNCTION__);
}
}

View File

@@ -6,7 +6,7 @@ use App\Models\Podcast;
use App\Models\User;
use Illuminate\Auth\Access\HandlesAuthorization;
class PodcastPolicy
class PodcastPolicy extends BasePolicy
{
use HandlesAuthorization;

View File

@@ -18,7 +18,7 @@ class RolePolicy extends BasePolicy
*/
public function viewAny(User $user)
{
return $user->hasRole('super-admin');
return $user->can((new \ReflectionClass($this))->getShortName().'.'.__FUNCTION__);
}
/**
@@ -30,7 +30,7 @@ class RolePolicy extends BasePolicy
*/
public function view(User $user, Role $role)
{
return $user->hasRole('super-admin');
return $user->can((new \ReflectionClass($this))->getShortName().'.'.__FUNCTION__);
}
/**
@@ -41,7 +41,7 @@ class RolePolicy extends BasePolicy
*/
public function create(User $user)
{
return $user->hasRole('super-admin');
return $user->can((new \ReflectionClass($this))->getShortName().'.'.__FUNCTION__);
}
/**
@@ -53,7 +53,7 @@ class RolePolicy extends BasePolicy
*/
public function update(User $user, Role $role)
{
return $user->hasRole('super-admin');
return $user->can((new \ReflectionClass($this))->getShortName().'.'.__FUNCTION__);
}
/**
@@ -65,7 +65,7 @@ class RolePolicy extends BasePolicy
*/
public function delete(User $user, Role $role)
{
return $user->hasRole('super-admin');
return $user->can((new \ReflectionClass($this))->getShortName().'.'.__FUNCTION__);
}
/**
@@ -77,7 +77,7 @@ class RolePolicy extends BasePolicy
*/
public function restore(User $user, Role $role)
{
return $user->hasRole('super-admin');
return $user->can((new \ReflectionClass($this))->getShortName().'.'.__FUNCTION__);
}
/**
@@ -89,6 +89,6 @@ class RolePolicy extends BasePolicy
*/
public function forceDelete(User $user, Role $role)
{
return $user->hasRole('super-admin');
return $user->can((new \ReflectionClass($this))->getShortName().'.'.__FUNCTION__);
}
}

View File

@@ -19,7 +19,7 @@ class TeamPolicy extends BasePolicy
*/
public function viewAny(User $user)
{
return $user->hasRole('super-admin');
return $user->can((new \ReflectionClass($this))->getShortName().'.'.__FUNCTION__);
}
/**
@@ -44,7 +44,7 @@ class TeamPolicy extends BasePolicy
*/
public function create(User $user)
{
return $user->hasRole('super-admin');
return $user->can((new \ReflectionClass($this))->getShortName().'.'.__FUNCTION__);
}
/**
@@ -109,6 +109,6 @@ class TeamPolicy extends BasePolicy
*/
public function delete(User $user, Team $team)
{
return $user->hasRole('super-admin');
return $user->can((new \ReflectionClass($this))->getShortName().'.'.__FUNCTION__);
}
}

View File

@@ -17,7 +17,7 @@ class UserPolicy extends BasePolicy
*/
public function viewAny(User $user)
{
return $user->hasRole('super-admin');
return $user->can((new \ReflectionClass($this))->getShortName().'.'.__FUNCTION__);
}
/**
@@ -29,7 +29,7 @@ class UserPolicy extends BasePolicy
*/
public function view(User $user, User $model)
{
return $user->hasRole('super-admin');
return $user->can((new \ReflectionClass($this))->getShortName().'.'.__FUNCTION__);
}
/**
@@ -40,7 +40,7 @@ class UserPolicy extends BasePolicy
*/
public function create(User $user)
{
return $user->hasRole('super-admin');
return $user->can((new \ReflectionClass($this))->getShortName().'.'.__FUNCTION__);
}
/**
@@ -52,7 +52,7 @@ class UserPolicy extends BasePolicy
*/
public function update(User $user, User $model)
{
return $user->hasRole('super-admin');
return $user->can((new \ReflectionClass($this))->getShortName().'.'.__FUNCTION__);
}
/**
@@ -64,7 +64,7 @@ class UserPolicy extends BasePolicy
*/
public function delete(User $user, User $model)
{
return $user->hasRole('super-admin');
return $user->can((new \ReflectionClass($this))->getShortName().'.'.__FUNCTION__);
}
/**
@@ -76,7 +76,7 @@ class UserPolicy extends BasePolicy
*/
public function restore(User $user, User $model)
{
return $user->hasRole('super-admin');
return $user->can((new \ReflectionClass($this))->getShortName().'.'.__FUNCTION__);
}
/**
@@ -88,6 +88,6 @@ class UserPolicy extends BasePolicy
*/
public function forceDelete(User $user, User $model)
{
return $user->hasRole('super-admin');
return $user->can((new \ReflectionClass($this))->getShortName().'.'.__FUNCTION__);
}
}

View File

@@ -32,7 +32,7 @@ class VenuePolicy extends BasePolicy
*/
public function view(User $user, Venue $venue)
{
return $user->is_lecturer;
return $user->is_lecturer || $user->can((new \ReflectionClass($this))->getShortName().'.'.__FUNCTION__);
}
/**
@@ -44,7 +44,7 @@ class VenuePolicy extends BasePolicy
*/
public function create(User $user)
{
return $user->is_lecturer;
return $user->is_lecturer || $user->can((new \ReflectionClass($this))->getShortName().'.'.__FUNCTION__);
}
/**
@@ -57,7 +57,7 @@ class VenuePolicy extends BasePolicy
*/
public function update(User $user, Venue $venue)
{
return $venue->created_by === $user->id;
return $venue->created_by === $user->id || $user->can((new \ReflectionClass($this))->getShortName().'.'.__FUNCTION__);
}
/**

View File

@@ -42,16 +42,16 @@ class NovaServiceProvider extends NovaApplicationServiceProvider
parent::boot();
Nova::mainMenu(function (Request $request) {
$adminItems = $request->user()
->hasRole('super-admin') ?
$comments = $request->user()->can('CommentPolicy.viewAny') ? [
MenuSection::make('Comments', [
MenuItem::resource(Comment::class),
])
->icon('chat')
->collapsable(),
] : [];
$adminItems = $request->user()->can('NovaAdminPolicy.viewAny') ?
[
MenuSection::make('Comments', [
MenuItem::resource(Comment::class),
])
->icon('chat')
->collapsable(),
MenuSection::make('Admin', [
MenuItem::resource(Category::class),
MenuItem::resource(Country::class),
@@ -62,17 +62,19 @@ class NovaServiceProvider extends NovaApplicationServiceProvider
->icon('key')
->collapsable(),
MenuSection::make(__('nova-spatie-permissions::lang.sidebar_label'), [
MenuItem::link(__('nova-spatie-permissions::lang.sidebar_label_roles'), 'resources/roles'),
MenuItem::link(__('nova-spatie-permissions::lang.sidebar_label_permissions'),
'resources/permissions'),
])
->icon('key')
->collapsable(),
]
: [];
$permissions = $request->user()->can('PermissionPolicy.viewAny') ? [
MenuSection::make(__('nova-spatie-permissions::lang.sidebar_label'), [
MenuItem::link(__('nova-spatie-permissions::lang.sidebar_label_roles'), 'resources/roles'),
MenuItem::link(__('nova-spatie-permissions::lang.sidebar_label_permissions'),
'resources/permissions'),
])
->icon('key')
->collapsable(),
] : [];
return array_merge([
MenuSection::dashboard(Main::class)
->icon('lightning-bolt'),
@@ -133,7 +135,7 @@ class NovaServiceProvider extends NovaApplicationServiceProvider
->icon('book-open')
->collapsable(),
], $adminItems);
], $comments, $adminItems, $permissions);
});
Nova::withBreadcrumbs();