【发布时间】:2014-05-05 18:39:39
【问题描述】:
大家好,能帮帮我吗?这个快把我逼疯了……
假设我有一个方法来检查用户是否是管理员:
public function isAdmin()
{
return Auth::user()->role === 'admin';
}
然后我将它附加到路由过滤器:
Route::filter('admin', function($route, $request)
{
if ( ! Auth::user()->isAdmin()) {
Notification::error('No permission to view this page!');
return Redirect::back();
}
});
现在,我只是将它传递给路由组
Route::group(array('before' => 'admin'), function()
{
Route::post('users/{id}/update_password', 'UserController@update_password');
Route::post('users/{id}/delete', 'UserController@force_delete');
Route::delete('users/{id}', array('as' => 'users.destroy', 'uses' => 'UserController@destroy'));
Route::post('users/{id}/restore', 'UserController@restore');
Route::get('users/create', array('as' => 'users.create', 'uses' => 'UserController@create'));
Route::post('users', array('as' => 'users.store', 'uses' => 'UserController@store'));
Route::get('users/{id}/edit', array('as' => 'users.edit', 'uses' => 'UserController@edit'));
Route::put('users/{id}', array('as' => 'users.update', 'uses' => 'UserController@update'));
});
这里的问题是,如果用户试图更新它自己的个人资料页面,但显然他不是管理员,我该如何允许他绕过此过滤器? 我只想阻止非管理员对用户路由的所有访问,但允许用户在他自己的个人资料上编辑/更新等,但也允许管理员这样做。
能否请您指出正确的方向?
【问题讨论】:
标签: laravel