29 lines
943 B
PHP
29 lines
943 B
PHP
<?php
|
|
|
|
namespace App\Services;
|
|
|
|
use App\Models\User;
|
|
|
|
final class SimulationTaxGovernanceAccess
|
|
{
|
|
private const ROLES = ['editors', 'reviewers', 'approvers', 'publishers'];
|
|
|
|
public static function requireRole(User $user, string $role): void
|
|
{
|
|
abort_unless(in_array($role, self::ROLES, true), 500, 'Função de governação desconhecida.');
|
|
abort_unless(in_array(strtolower($user->email), config('simulation-tax-governance.'.$role, []), true),
|
|
403, 'O utilizador não está designado para esta função de governação fiscal.');
|
|
}
|
|
|
|
public static function requireAnyRole(User $user): void
|
|
{
|
|
foreach (self::ROLES as $role) {
|
|
if (in_array(strtolower($user->email), config('simulation-tax-governance.'.$role, []), true)) {
|
|
return;
|
|
}
|
|
}
|
|
|
|
abort(403, 'O utilizador não está designado para consultar a governação fiscal.');
|
|
}
|
|
}
|