Skip to content

Commit

Permalink
feat: refactor user permissions to use UserPermission enum and add la…
Browse files Browse the repository at this point in the history
…bel method for UserRole
  • Loading branch information
vincentauger committed Nov 20, 2024
1 parent 1b9f8e7 commit 1b99b5c
Show file tree
Hide file tree
Showing 9 changed files with 26 additions and 9 deletions.
9 changes: 9 additions & 0 deletions app/Enums/Permissions/UserRole.php
Original file line number Diff line number Diff line change
Expand Up @@ -34,4 +34,13 @@ public function permissions(): array
],
};
}

public function label(): string
{
return match($this) {
self::AUTHOR => 'Author',
self::DIRECTOR => 'Director',
self::ADMIN => 'Admin',
};
}
}
3 changes: 2 additions & 1 deletion app/Models/User.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

namespace App\Models;

use App\Enums\Permissions\UserPermission;
use App\Notifications\Authentication\PasswordResetNotification;
use Filament\Models\Contracts\FilamentUser;
use Filament\Models\Contracts\HasName;
Expand Down Expand Up @@ -206,7 +207,7 @@ public function markEmailAsVerified(): bool
*/
public function canAccessPanel(Panel $panel): bool
{
return $this->can('view_librarium');
return $this->can(UserPermission::VIEW_LIBRARIUM);
}

/**
Expand Down
3 changes: 2 additions & 1 deletion app/Policies/AuthorEmploymentPolicy.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

namespace App\Policies;

use App\Enums\Permissions\UserPermission;
use App\Models\Author;
use App\Models\AuthorEmployment;
use App\Models\User;
Expand Down Expand Up @@ -33,7 +34,7 @@ public function create(User $user, Author $author): bool
return false;
}

return $user->can('create_author_employments');
return $user->can(UserPermission::CREATE_AUTHOR_EMPLOYMENTS);
}

/**
Expand Down
3 changes: 2 additions & 1 deletion app/Policies/AuthorPolicy.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

namespace App\Policies;

use App\Enums\Permissions\UserPermission;
use App\Models\Author;
use App\Models\User;
use Illuminate\Auth\Access\HandlesAuthorization;
Expand Down Expand Up @@ -49,7 +50,7 @@ public function update(User $user, Author $author)
{
// this record isn't associated with a user,
// and user can update authors.
if ($author->user_id === null && $user->can('update_authors')) {
if ($author->user_id === null && $user->can(UserPermission::UPDATE_AUTHORS)) {
return true;
}

Expand Down
3 changes: 2 additions & 1 deletion app/Policies/ManuscriptRecordPolicy.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
namespace App\Policies;

use App\Enums\ManuscriptRecordStatus;
use App\Enums\Permissions\UserPermission;
use App\Models\ManuscriptRecord;
use App\Models\User;
use Illuminate\Auth\Access\HandlesAuthorization;
Expand Down Expand Up @@ -59,7 +60,7 @@ public function view(User $user, ManuscriptRecord $manuscriptRecord)
*/
public function create(User $user)
{
return $user->can('create_manuscript_records');
return $user->can(UserPermission::CREATE_MANUSCRIPT_RECORDS);
}

/**
Expand Down
3 changes: 2 additions & 1 deletion app/Policies/PublicationPolicy.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

namespace App\Policies;

use App\Enums\Permissions\UserPermission;
use App\Enums\PublicationStatus;
use App\Models\Publication;
use App\Models\User;
Expand Down Expand Up @@ -82,7 +83,7 @@ public function viewPdf(User $user, Publication $publication)
*/
public function create(User $user)
{
return $user->can('create_publications');
return $user->can(UserPermission::CREATE_PUBLICATIONS);
}

/**
Expand Down
5 changes: 3 additions & 2 deletions app/Policies/UserPolicy.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

namespace App\Policies;

use App\Enums\Permissions\UserPermission;
use App\Models\User;
use Illuminate\Auth\Access\HandlesAuthorization;

Expand All @@ -16,7 +17,7 @@ class UserPolicy
*/
public function viewAny(User $user)
{
return $user->can('view_any_users');
return $user->can(UserPermission::VIEW_ANY_USERS);
}

/**
Expand Down Expand Up @@ -49,7 +50,7 @@ public function create(User $user)
public function update(User $user, User $model)
{

if ($user->can('administer_users')) {
if ($user->can(UserPermission::ADMINISTER_USERS)) {
return true;
}

Expand Down
3 changes: 2 additions & 1 deletion app/Providers/HorizonServiceProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

namespace App\Providers;

use App\Enums\Permissions\UserPermission;
use Illuminate\Support\Facades\Gate;
use Laravel\Horizon\Horizon;
use Laravel\Horizon\HorizonApplicationServiceProvider;
Expand Down Expand Up @@ -30,7 +31,7 @@ public function boot(): void
protected function gate(): void
{
Gate::define('viewHorizon', function ($user) {
return $user->can('view_horizon');
return $user->can(UserPermission::VIEW_HORIZON);
});
}
}
3 changes: 2 additions & 1 deletion app/Providers/TelescopeServiceProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

namespace App\Providers;

use App\Enums\Permissions\UserPermission;
use Illuminate\Support\Facades\Gate;
use Laravel\Telescope\IncomingEntry;
use Laravel\Telescope\Telescope;
Expand Down Expand Up @@ -63,7 +64,7 @@ protected function hideSensitiveRequestDetails()
protected function gate()
{
Gate::define('viewTelescope', function ($user) {
return $user->can('view_telescope');
return $user->can(UserPermission::VIEW_TELESCOPE);
});
}
}

0 comments on commit 1b99b5c

Please sign in to comment.