[英]How to asign user's role in route prefix in Laravel?
I've done something like this:我做了这样的事情:
web.php web.php
Route::group(['prefix' => {User Role}, 'middleware' => 'AuthUser:superadmin,admindesa'], function() {
Route::get('/', 'DashboardC@index');
Route::get('/penduduk', 'PendudukC@index');
Route::get('/penduduk/{id}/detail', 'PendudukC@detail');
});
Route::group(['prefix' => 'superadmin', 'middleware' => 'AuthUser:superadmin'], function() {
Route::get('/pengguna', 'PenggunaC@index');
Route::get('/pengguna/{id}/edit', 'PenggunaC@edit');
Route::post('/pengguna/{id}/prosesedit', 'PenggunaC@prosesEdit');
Route::get('/pengguna/{id}/hapus', 'PenggunaC@hapus');
Route::post('/ajax/pengguna', 'AjaxC@pengguna');
});
AuthUser.php AuthUser.php
class AuthUser
{
public function handle($request, Closure $next, ...$roles)
{
$auth = auth('web')->user();
if (!$auth || !in_array($auth->role, $roles)){
\Session::flash('flash_message', array('pesan' => 'Silahkan login untuk melanjutkan', 'tipe' => 'warning'));
return redirect()->route('login');
}
return $next($request);
}
}
Anyone know what should I write to asign user's role in route prefix?任何人都知道我应该写什么来分配用户在路由前缀中的角色? {User Role}
{用户角色}
//group Auth superadmin and admindesa
Route::middleware(['AuthUser:superadmin,admindesa'])->group(function () {
Route::get('/', 'DashboardC@index');
Route::get('/penduduk', 'PendudukC@index');
Route::get('/penduduk/{id}/detail', 'PendudukC@detail');
});
I've found the solution by simply adding role variable to the request我通过简单地将角色变量添加到请求中找到了解决方案
web.php web.php
Route::group(['prefix' => '{role}', 'middleware' => 'AuthUser:superadmin,admindesa'], function() {
Route::get('/', 'DashboardC@index');
Route::get('/penduduk', 'PendudukC@index');
Route::get('/penduduk/{id}/detail', 'PendudukC@detail');
});
Route::group(['prefix' => 'superadmin', 'middleware' => 'AuthUser:superadmin'], function() {
Route::get('/pengguna', 'PenggunaC@index');
Route::get('/pengguna/{id}/edit', 'PenggunaC@edit');
Route::post('/pengguna/{id}/prosesedit', 'PenggunaC@prosesEdit');
Route::get('/pengguna/{id}/hapus', 'PenggunaC@hapus');
Route::post('/ajax/pengguna', 'AjaxC@pengguna');
});
AuthUser.php AuthUser.php
class AuthUser
{
public function handle($request, Closure $next, ...$roles)
{
$auth = auth('web')->user();
if (!$auth || !in_array($auth->role, $roles)){
return redirect()->route('login')->with('gagal','Silahkan login untuk melanjutkan');
}
$request->role = $auth->role; // <- this one
return $next($request);
}
}
Everytime you want to get {id} in any controller you HAVE to get {role} too like this:每次您想在任何 controller 中获得 {id} 时,您都必须像这样获得 {role} :
public function detail(Request $request, $role, $id) // <- this one
{
$penduduk = Penduduk::with(['kabupaten', 'kecamatan', 'kelurahan', 'dusun', 'pendudukjb'])->find($id);
$bantuan = array_column(json_decode($penduduk->pendudukjb, TRUE), 'id_master_jenis_bantuan');
$detail = $request->modal ? '_detail' : 'detail';
return view('penduduk/'.$detail, compact('penduduk', 'bantuan'));
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.