我是Laravel的新手,目前正在尝试使用LTS。
实际上,我正在开展一个项目,我使用maatwebsite/laravel-sidebar
和trieu/trusty
。因此,为了通过实施authorize()
来使用侧边栏的SidebarExtender
功能,我无法获取/匹配当前登录的用户/当前登录的用户权限。
我还尝试使用Guard contract
的中间件,然后是Auth facade
,但没有运气。
最后,我创建了一个名为AuthenticationInterface
的Contract接口和一个名为AuthenticationRepo
的存储库hasAccess()
[返回Request::user()
OR Auth::user()
]并注册/绑定它们进入服务提供商。但在这里,Auth / Request方法也不起作用。我总是得到' null / false'即使在用户登录后也是如此。
所以,任何人都可以给我解决方案......
更新:代码
块引用
interface UserInterface
{
public function hasAccess($permissions);
}
块引用
use Illuminate\Support\Facades\Request;
use Modules\User\Models\User;
class UserRepo implements UserInterface
{
public function hasAccess($permissions)
{
if ($user = Request::user()) { // use Auth; -> Auth::user()
return $user->can($permissions);
}
return false;
}
}
块引用
use Maatwebsite\Sidebar\Menu;
use Maatwebsite\Sidebar\Item;
use Maatwebsite\Sidebar\Group;
use Maatwebsite\Sidebar\SidebarExtender;
use App\Sidebar\BaseSidebar;
class UserSidebarExtender extends BaseSidebar implements SidebarExtender
{
public function extendWith(Menu $menu)
{
dd($this->auth->check());
$menu->group('UserSidebar', function(Group $group){
$group->weight(100);
$group->item('Try', function (Item $item) {
$item->icon('fa fa-cogs');
$item->weight(100);
$item->route('dashboard');
$item->authorize(
$this->auth->hasAccess('manage.blog')
);
});
});
return $menu;
}
}
块引用
use Modules\User\Repositories\UserInterface as Auth;
//use Closure;
//use Illuminate\Contracts\Auth\Guard;
abstract class BaseSidebar
{
protected $auth;
public function __construct(Guard $auth)
{
$this->auth = $auth;
}
}
我还使用了modulesidebar
和createsidebar
两个文件,createsideabr
中使用view()->creator(...)
,modulesidebar
注册了Maatwebsite\Sidebar\SidebarManager
1}}使用侧边栏自动修改:)除hasAccess
函数...
谢谢&此致