в filter.php
/**
* hasAcces filter (permissions)
*
* Check if the user has permission (group/user)
*/
Route::filter('hasAccess', function($route, $request, $value)
{
try {
$user = Sentry::getUser();
if(! $user->hasAccess($value)) {
if(Sentry::check())
return Redirect::to('portal')->with('message', 'No Access.');
else
return Redirect::to('registration#login')->with('message', 'No Access.');
}
} catch (Cartalyst\Sentry\Users\UserNotFoundException $e) {
if(Sentry::check())
return Redirect::to('portal')->with('message', 'User not found.');
else
return Redirect::to('registration#login')->with('message', 'User not found.');
}
});
/**
* InGroup filter
*
* Check if the user belongs to a group
*/
Route::filter('inGroup', function($route, $request, $value) {
try {
$user = Sentry::getUser();
$group = Sentry::findGroupByName($value);
if(! $user->inGroup($group)) {
if(Sentry::check())
return Redirect::to('portal')->with('message', 'No Access.');
else
return Redirect::to('registration#login')->with('message', 'No Access.');
}
} catch (Cartalyst\Sentry\Users\UserNotFoundException $e) {
if(Sentry::check())
return Redirect::to('portal')->with('message', 'User not found.');
else
return Redirect::to('registration#login')->with('message', 'User not found.');
} catch (Cartalyst\Sentry\Groups\GroupNotFoundException $e) {
if(Sentry::check())
return Redirect::to('portal')->with('message', 'Group not found.');
else
return Redirect::to('registration#login')->with('message', 'Group not found.');
}
});
Маршруты ->
Route::group(array('before' => 'Sentry|inGroup:Administrators'), function() {
Route::get('manageusers', array('as' => 'manageusers', 'uses' => '[email protected]'));
});
Я думал о 'HasAccess()' и 'hasAnyAccess()', но я думаю, что это слишком много кода для простого проекта шахты. Я думал о чем-то вроде **, если пользователь находится в группе Admin, чем ... что-то делать **. – SONGE
Я не нашел другого пути. Я использую тот же длительный процесс. Примените фильтр в routes.php и навигации для текущего пользователя. Если вы найдете какой-либо простой способ, пожалуйста, отправьте сообщение. –