Как назначить гостю роль & amp; разрешений

В настоящее время я пытаюсь назначить любому гостю роль «Гость», чтобы у него были разрешения. В настоящее время у меня есть следующий код, который является частью некоторого промежуточного программного обеспечения, это, кажется, неправильное место, чтобы иметь его, я предположил бы, что есть намного лучшее место, я попытался использовать поставщика услуг, однако я не мог присоединить группа

 if($this->auth->guest())
{
$user = new User();
$user->username = 'Guest';

$role = Role::where('name', '=', 'guest')
->with('perms')
->first();$user->perms = new Collection();
$user->perms->add($role);

$perms = explode('|', $permissions);

foreach($user->perms as $p) {
foreach($p->perms as $pp) {
foreach($perms as $perm) {
if($perm === $pp->name)
return $next($request);
}
}
}
}

Как вы можете видеть, это очень специфично для промежуточного программного обеспечения. В идеале я хочу атаковать роль при первой возможности, чтобы ее можно было использовать в любой части приложения.

1

Решение

просто используйте сеансы в этом случае

  session::put('role',$role);

и в представлении

 @if(Session::has('role') == 'whatever')
// show this content

то же самое касается разрешений
добавить массив пермиса в сессию, затем использовать in_array

0

Другие решения

Я думаю, что это правильно, но помните, что вы выполняете эту проверку при каждом запросе, это выглядит тяжело. Так почему бы не использовать сессию или кеш?

Используя сессию:

if($this->auth->guest()){
$userPerms = [];

if (\Session::has('permissions')){
$userPerms = \Session::get('permissions');
}
else{
$user = new User();
$user->username = 'Guest';
// the rest of your code here...
$userPerms = $user->perms;

// update the session the first time
\Session::put('permissions', userPerms)
}

// comparison here
}

Вы можете применить ту же логику, используя Cache поставщик.

0

По вопросам рекламы [email protected]