перенаправить неавторизованных пользователей на другую страницу spatie laravel

Я работаю над spatie laravel. Я хочу перенаправить неавторизованных пользователей на конкретное представление, которое будет иметь простую кнопку для перенаправления назад. Я пробовал вот так, но выдает ошибку вроде

Symfony \ Component \ Debug \ Exception \ FatalThrowableError (E_ERROR)
Call to a member function setCookie() on null

это мой код в app / exception / handler.php

 public function render($request, Exception $exception)
{

if ($exception instanceof \Spatie\Permission\Exceptions\UnauthorizedException) {
// Code here ...
return view('404');
}
return parent::render($request, $exception);
}
/**
* Convert an authentication exception into an unauthenticated response.
*
* @param  \Illuminate\Http\Request  $request
* @param  \Illuminate\Auth\AuthenticationException  $exception
* @return \Illuminate\Http\Response
*/
protected function unauthenticated($request, AuthenticationException $exception)
{
if ($request->expectsJson()) {
return response()->json(['error' => 'Unauthenticated.'], 401);
}
$guard = array_get($exception->guards(), 0);
switch ($guard) {
case 'admin':
$login = 'admin.login';
break;
default:
$login = 'login';
break;
}
return redirect()->guest(route($login));
}

в 404.blade.php

 @extends('web.layouts.default')
@section('title', '404')
@section('content')
<div class="container">
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div class="card-header">You are not authorized</div>

<div class="card-body">

<a href="{{ back() }}" class="btn btn-primary"> Click here to go back</a>
</div> <br>    <br>

</div>
</div>
</div>
@endsection

У меня есть разрешение на просмотр домашней страницы пользователя, когда это разрешение есть, вы можете просмотреть страницу профиля в profileController, который я написал как

 <?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Auth;
use Spatie\Permission\Models\Permission;
class ProfileController extends Controller
{
public function __construct()
{
//$this->middleware('auth',['except' => 'otp']);
// return redirect(route('logout'));
$this->middleware(['permission:view homepage','auth']);
}

/**
* Show the application dashboard.
*
* @return \Illuminate\Http\Response
*/
public function index()
{

//$per=Auth::user()->getAllPermissions();
return view('profile');

}
}

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

пожалуйста, дайте мне знать любые входные данные, которые вы хотите от меня

1

Решение

Вы должны попытаться использовать кнопку ниже в вашем 404.blade.php файл, и он работает нормально.

<a href="{{ redirect()->back()->getTargetUrl() }}" class="btn btn-primary"> Click here to go back</a>
1

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

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

По вопросам рекламы [email protected]