Ваша вспомогательная функция возвращает новый ответ, но возвращает его контроллеру не как HTTP-ответ, поэтому вы можете получить возвращаемое значение следующим образом:
public function index()
{
// PERMISSIONS CHECK
$response = userHasPermission('users show active');
$getUsers = $this -> users -> getAllActive();
return Response::json($getUsers);
}
Итак, вам нужно проверить ответесли оно имеет значение, но при таком подходе у вас возникнет та же проблема, что и у вашего первого.
Чтобы решить его: выведите исключение из вспомогательной функции вместо возврата какого-либо ответа.
Лучшее решение состоит в том, чтобы использовать FormRequest, для этого проверьте ссылку , обязательно проверьте раздел «Авторизация запросов формы», в котором указана функция авторизации.
РЕДАКТИРОВАТЬ:
вам нужно сделать следующее:
создать новый класс, назовем его «IndexRequest», который наследует от класса «FormRequest», а затем реализовать метод authorize.
так что-то вроде этого:
class IndexRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return Auth::user() -> hasPermissionTo('show all users');
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
];
}
}
тогда в вашем методе:
public function index(IndexRequest $request)
{
$getUsers = $this -> users -> getAllActive();
return Response::json($getUsers);
}
вам не нужно проверять это вручную, Laravel сделает это за васиспользуя функцию авторизациикласс класса IndexRequest.