У меня есть часть моего файла header.blade.php проекта.
@guest
@else
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false" aria-haspopup="true">
{{ Auth::user()->name }} <span class="caret"></span>
</a>
@if(condition here)
$profile='/myprofile';
$logout='/logout';
@else
$profile='/admin/myprofile';
$logout='/admin/logout';
@endif
<ul class="dropdown-menu">
<li><a href="{{$profile}}">My Profile</a></li>
<li> <a href="{{$logout}}">Log Out</a>
</li>
</ul>
@endif
</li>
@endguest
У меня есть 2 охранника, а именно веб и админ. Я хочу $profile
а также $logout
быть '/profile'
а также '/logout'
&& '/admin/profile'
а также '/admin/logout'
соответственно для каждого из 2 охранников.
Теперь я знаю, что могу проверить каждого охранника как Auth::guard('name')->check();
Но когда оба охранника входят в систему в одно и то же время, это создает своего рода проблему таким образом, т.е.
if(Auth::guard('web')->check())
{$profile="/myprofile";}
if(Auth::guard('admin')->check())
{$profile="/admin/myprofile";}
Так как оба будут активны, $ profile будет иметь последнее значение в каждом случае.
Итак, есть ли способ, которым эта проблема может быть решена?
Что-то вроде
if(Auth::guard()=='admin'){
////////////////
}
что, конечно, не работает.
Я полагаю, у вас должны быть отдельные заголовки для каждого из интерфейсов, о которых заботится каждый из ваших охранников. очевидноif(Auth::guard()=='admin'){
не действителен без указания имени охранника
////////////////
}
Других решений пока нет …