我正在尝试在管理员用户没有分配角色的用例中找到解决方案。
在仪表板视图中,它不会为用户呈现url,而如果直接访问仪表板/用户,则会得到:
Spatie \ Permission \ Exceptions \ UnauthorizedException
user does not have the right roles
app / Http / Kernel.php
protected $routeMiddleware = [
....
'role' => \Spatie\Permission\Middlewares\RoleMiddleware::class,
'permission' => \Spatie\Permission\Middlewares\PermissionMiddleware::class,
];
路线/web.php
Route::group(
['middleware' => ['role:admin']],
function () {
Route::get('/dashboard/users', 'UsersController@index');
Route::get('/dashboard/users/{id}', 'UsersController@edit');
Route::patch('/dashboard/users/{id}', 'UsersController@update');
}
);
查看/dashboard.blade.php
<div class="panel-body">
@hasrole('admin')
<li><a href="/dashboard/users">Manage Users</a></li>
@endhasrole
</div>
我已经成功生成了默认角色和权限
命令/GenerateRoles.php
public function handle()
{
$this->info('Generating default roles and permissions...');
$admin = User::create(
[
'name' => 'administrator',
'email' => '[email protected]',
'password' => bcrypt('12345'),
]
);
// Create roles.
$adminRole = Role::create(['name' => 'admin']);
$supportRole = Role::create(['name' => 'support']);
$admin->assignRole('admin');
// Create permissions.
$userManagement = Permission::create(['name' => 'users management']);
$deleteImages = Permission::create(['name' => 'delete images']);
$datasetStatus = Permission::create(
['name' => 'change dataset building status']
);
$adminRole->givePermissionTo($userManagement);
$deleteImages->syncRoles([$adminRole, $supportRole]);
$datasetStatus->syncRoles([$adminRole, $supportRole]);
}
它可能会出错吗?谢谢您的时间。
参考方案
您应该覆盖render方法进行重定向(或执行任何操作)。转到Expectations / Handler.php并覆盖渲染函数,如下所示:
public function render($request, Exception $exception)
{
if ($exception instanceof \Spatie\Permission\Exceptions\UnauthorizedException) {
return redirect('/');
}
return parent::render($request, $exception);
}
来源:https://github.com/spatie/laravel-permission#catching-role-and-permission-failures
检查对象是否已在集合中-Laravel - php当我循环一系列不同的结果时,我希望将对象添加到新集合中。查询:$osRed = Item::where('category', 'Hardware') ->where(function ($query) { $query->where('operating_system', '…
Laravel打印日志 - php我正在尝试在控制台上打印日志:我输入了:use Log; 然后在控制器中使用 Log::info('test log'); 但它不打印任何日志。 参考方案 我认为您需要在运行后检查storage/logs/laravel.logLog::info('test log'); 希望这对您有帮助
如何在Laravel中将变量从一个控制器传递到另一个控制器 - php我有一个名为index.blade.php的视图,该视图显示了有关供应商的信息,该信息是通过控制器传递的。 VendorController,在此视图上,我有一个“查看地址”按钮,现在我想在单击按钮时显示此供应商的数据。我还有另一个控制器,即VendorAddressController,它从数据库中获取供应商的地址。 index.blade.php文件的代…
Laravel 5错误报告抑制 - php在Laravel 4中,抑制E_NOTICE消息很容易;我似乎无法做到这一点,因为如果我添加error_reporting(E_ALL ^ E_NOTICE) 它只是被覆盖的任何地方。这似乎发生在这里:(index.php)$response = $kernel->handle( $request = Illuminate\Http\Request::…
Laravel 5发布资产 - php我正在使用Laravel 5,我想将twitter bootstrap CSS和JS发布到公共目录。我确实使用Composer来获取twitter / bootstrap软件包,并且该部分运行正常,因此我想要的文件现在位于vendor / twitter / bootstrap / dist中。但是我无法使它工作。我得到“什么都没发布”。每次尝试时都会发送消…