70 lines
1.9 KiB
PHP
70 lines
1.9 KiB
PHP
<?php
|
|
|
|
namespace Spatie\Permission\Exceptions;
|
|
|
|
use Symfony\Component\HttpKernel\Exception\HttpException;
|
|
|
|
class UnauthorizedException extends HttpException
|
|
{
|
|
private $requiredRoles = [];
|
|
|
|
private $requiredPermissions = [];
|
|
|
|
public static function forRoles(array $roles): self
|
|
{
|
|
$message = 'User does not have the right roles.';
|
|
|
|
if (config('permission.display_role_in_exception')) {
|
|
$message .= ' Necessary roles are '.implode(', ', $roles);
|
|
}
|
|
|
|
$exception = new static(403, $message, null, []);
|
|
$exception->requiredRoles = $roles;
|
|
|
|
return $exception;
|
|
}
|
|
|
|
public static function forPermissions(array $permissions): self
|
|
{
|
|
$message = 'User does not have the right permissions.';
|
|
|
|
if (config('permission.display_permission_in_exception')) {
|
|
$message .= ' Necessary permissions are '.implode(', ', $permissions);
|
|
}
|
|
|
|
$exception = new static(403, $message, null, []);
|
|
$exception->requiredPermissions = $permissions;
|
|
|
|
return $exception;
|
|
}
|
|
|
|
public static function forRolesOrPermissions(array $rolesOrPermissions): self
|
|
{
|
|
$message = 'User does not have any of the necessary access rights.';
|
|
|
|
if (config('permission.display_permission_in_exception') && config('permission.display_role_in_exception')) {
|
|
$message .= ' Necessary roles or permissions are '.implode(', ', $rolesOrPermissions);
|
|
}
|
|
|
|
$exception = new static(403, $message, null, []);
|
|
$exception->requiredPermissions = $rolesOrPermissions;
|
|
|
|
return $exception;
|
|
}
|
|
|
|
public static function notLoggedIn(): self
|
|
{
|
|
return new static(403, 'User is not logged in.', null, []);
|
|
}
|
|
|
|
public function getRequiredRoles(): array
|
|
{
|
|
return $this->requiredRoles;
|
|
}
|
|
|
|
public function getRequiredPermissions(): array
|
|
{
|
|
return $this->requiredPermissions;
|
|
}
|
|
}
|