【发布时间】:2021-02-02 11:35:46
【问题描述】:
这是我的管理中间件,在我的中间件中我使用了管理守卫。我第一次在我的项目中使用 Laravel 角色和权限。但是当我为中间件的角色和权限编写代码时,我无法访问管理面板。
什么是错误?我现在能做什么?我的中间件代码中是否有任何逻辑错误?
<?php
namespace App\Http\Middleware;
use Illuminate\Support\Facades\Route;
use Closure;
use Session;
use App\Admin;
use Auth;
class CheckRole {
public function handle($request, Closure $next) {
if (Auth::guard('admin')->check() && Admin::where(['status' => '1'])) {
$adminDetails = Admin::where('email', Session::get('remember_token'))->first();
$adminDetails = json_decode(json_encode($adminDetails), true);
if ($adminDetails['type'] === "admin") {
$adminDetails['categories_access'] = 1;
$adminDetails['products_access'] = 1;
$adminDetails['orders_access'] = 1;
$adminDetails['users_access'] = 1;
}
Session::put('adminDetails', $adminDetails);
// Get Current Path
$currentPath = Route::getFacadeRoot()->current()->uri();
if ($currentPath === "admin/view-category" && Session::get('adminDetails')['categories_access'] == 0) {
return redirect('/admin/dashboard')->with('flash_message_error', 'You have no access for this module');
}
if ($currentPath === "admin/view-product" && Session::get('adminDetails')['products_access'] == 0) {
return redirect('/admin/dashboard')->with('flash_message_error', 'You have no access for this module');
}
if ($currentPath === "admin/add-product" && Session::get('adminDetails')['products_access'] == 0) {
return redirect('/admin/dashboard')->with('flash_message_error', 'You have no access for this module');
}
return $next($request);
}
return redirect('admin/login');
}
}
【问题讨论】:
标签: laravel permissions middleware roles