Laravel 5.0 редирект не работает

Я занимаюсь разработкой пользовательской системы контроля доступа в Laravel 5.0. Я создал вспомогательную функцию, чтобы проверить, есть ли у пользователя разрешение, прежде чем выполнять функцию

public function index() {

if( has_permission( 'blahblah' ) ) {
// Do actions
}
}

И у меня есть вспомогательная функция has_permission

function has_permission( $action ) {
$current_user_perms = array( 'view_users', 'create_users', 'edit_users', 'delete_users' );
if( !in_array( $action, $current_user_perms ) ) {
return redirect()->route('access_denied');
}

return true;
}

Но когда разрешение не удается, оно не перенаправляет. Любая идея?

0

Решение

Вам следует вернуть перенаправить ответ, чтобы он работал.

  1. Измените помощник, чтобы он возвращал логическое значение:
function has_permission($action) {
$current_user_perms = ['view_users', 'create_users', 'edit_users'];
return in_array($action, $current_user_perms);
}
  1. В контроллере проверьте вспомогательный метод и при необходимости верните ответ перенаправления:
public function index() {

if(!has_permission('blahblah')) {
return redirect()->route('access_denied');
}

// do stuff
}

PS. Я настоятельно рекомендую прочитать о промежуточное программное и использовать их вместо помощников, это правильный путь Laravel для достижения простых функций прав доступа.

1

Другие решения

Других решений пока нет …