I could be doing something very stupid. Accidentally produced a piece of code which I cannot seem to figure out how it works.
I am trying to customize unauthenticated user redirection to login page. So when user tries to access a page that is protected, laravel redirects the user to the login page. I am trying to show a Javascript toastr message in such cases.
What i did was customize the unauthenticated
method in AppExceptionsHandler.php
class as follows:
protected function unauthenticated($request, AuthenticationException $exception)
{
if ($request->expectsJson()) {
return response()->json(['error' => 'Unauthenticated.'], 401);
}
//dd($request);
return redirect()->guest('login')->withError('You are not logged in or Your session has expired');
}
Note that i missed the s
in the withError
function. In my blade file i am showing the toastr notification as follows:
<script>
@if(Session::has('error'))
toastr.error("{{Session::get('error')}}");
@endif
</script>
So whenever a user is being redirected to the login page because he is not logged in yet, a Java Script toastr message is shown. However, i cannot figure out how the Session('error')
value is being populated by the withError
function. I could only find that Laravel has withErrors
function, not withError
.
Tried to troubleshoot for last couple hours without luck. Seeking some guidance here. Thanks. Btw, i am very new to Laravel.
Advertisement
Answer
It’s a “magic” method, in that any call to a method with a prefix of with
will be added to the session as flash data. So withError()
will add flash data under the key error
; withErrors()
will add flash data under the key errors
; withSuccess()
will add flash data under the key of success
; and so on.