Search code examples
phplaravellaravel-5login-control

view doesn't change when login, but change after registering


I'm currently having problem with my login in the main page(I got template from w3layout to practice).

I'm using authentication with default middle ware(guest, user).

After I registered, the auth:check() worked and only show log out link in the main page.

But when I try to login the login pop up modal still there in the main view.

I'm currently new to laravel.

I hope you can help me :D

my route

Route::get('/', function () {
    return view('mainpage');
});
Route::get('/mail',function(){
    return view('mail');
});
Route::group(['prefix'=>'user'],function(){
    Route::group(['middleware' => 'guest'], function() {
        Route::post('/register',[
            'uses'=>'UserController@postSignup',
            'as'=>'signup',
        ]);
        Route::post('/login',[
            'uses'=>'UserController@postSignin',
            'as'=>'signin',
        ]);
    });
    Route::group(['middleware' => 'auth'], function() {
        Route::get('/logout',[
            'uses'=>'UserController@getLogout',
            'as'=>'logout',
        ]);
    });
});

My UserController

public function postSignup(Request $request){
    $this->validate($request,[
        'name'=>'required',
        'email'=>'email|required|unique:users',
        'password'=>'required|min:4',
        'birthday'=>'required',
        'address'=>'required',
    ]);

    $user = new User([
        'name'=>$request->input('name'),
        'email'=>$request->input('email'),
        'password'=>bcrypt($request->input('password')),
        'birthday'=>$request->input('birthday'),
        'address'=>$request->input('address'),
    ]);
    $user->save();
    Auth::login($user);
    return redirect()->back();
}
public function postSignin(Request $request){
    $this->validate($request,[
        'email'=>'email|required|unique:users',
        'password'=>'required|min:4',
    ]);
    if (Auth::attempt(['email' => $request->input('email'), 'password' => $request->input('password')])) {
        return redirect()->back();
    }
    return redirect()->back();
}
public function getLogout(){
    Auth::logout();
    return redirect()->back();
}

AND IN THE MAIN PAGE

@if(\Illuminate\Support\Facades\Auth::check())
    <div><a href="{{route('logout')}}">LOG OUT</a></div>
@else
    <div class="w3l_login">
        <a href="#" data-toggle="modal" data-target="#myModal88"><span class="glyphicon glyphicon-user" aria-hidden="true"></span></a>
    </div>
    <div class="modal fade" id="myModal88" tabindex="-1" role="dialog" aria-labelledby="myModal88" aria-hidden="true">
        <div class="modal-dialog modal-lg">
            <div class="modal-content">
                <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
                    <h4 class="modal-title" id="myModalLabel">Don't Wait, Login now!</h4>
                </div>
                <div class="modal-body modal-body-sub">
                    <div class="row">
                        <div class="col-md-8 modal_body_left modal_body_left1" style="border-right: 1px dotted #C2C2C2;padding-right:3em;">
                            <div class="sap_tabs">
                                <div id="horizontalTab" style="display: block; width: 100%; margin: 0px;">
                                    <ul>
                                        <li class="resp-tab-item" aria-controls="tab_item-0"><span>Sign in</span></li>
                                        <li class="resp-tab-item" aria-controls="tab_item-1"><span>Sign up</span></li>
                                    </ul>
                                    <div class="tab-1 resp-tab-content" aria-labelledby="tab_item-0">
                                        <div class="facts">
                                            <div class="register">
                                                <form action="{{route('signin')}}" method="post">
                                                    <input name="email" placeholder="Email Address" type="text" required="">
                                                    <input name="password" placeholder="Password" type="password" required="">
                                                    <div class="sign-up"><input type="submit"/>{{csrf_field()}}</div>
                                                </form>
                                            </div>
                                        </div>
                                    </div>
                                    <div class="tab-2 resp-tab-content" aria-labelledby="tab_item-1">
                                        <div class="facts">
                                            <div class="register">
                                                <form action="{{route('signup')}}" method="post">
                                                    <input placeholder="Name" name="name" type="text" required="">
                                                    <input placeholder="Email Address" name="email" type="email" required="">
                                                    <input placeholder="Password" name="password" type="password" required="">
                                                    <input placeholder="Confirm Password" name="password" type="password" required="">
                                                    <input placeholder="Birthday" name="birthday" type="text" required="">
                                                    <input placeholder="Address" name="address" type="text" required="">
                                                    @if(count($errors)>0)
                                                           <div class="alert alert-danger">
                                                           @foreach($errors->all() as $error))
                                                            <p>{{$error}}</p>
                                                           @endforeach
                                                          </div>
                                                    @endif
                                                    <div class="sign-up">
                                                        <input type="submit"/>
                                                        {{csrf_field()}}
                                                    </div>
                                                </form>
                                            </div>
                                        </div>
                                    </div>
                                </div>
                            </div>
                            <div id="OR" class="hidden-xs">OR</div>
                        </div>
                        <div class="col-md-4 modal_body_right modal_body_right1">
                            <div class="row text-center sign-with">
                                <div class="col-md-12">
                                    <h3 class="other-nw">Sign in with</h3>
                                </div>
                                <div class="col-md-12">
                                    <ul class="social">
                                        <li class="social_facebook"><a href="#" class="entypo-facebook"></a></li>
                                        <li class="social_dribbble"><a href="#" class="entypo-dribbble"></a></li>
                                        <li class="social_twitter"><a href="#" class="entypo-twitter"></a></li>
                                        <li class="social_behance"><a href="#" class="entypo-behance"></a></li>
                                    </ul>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
@endif

Solution

  • Maybe the problem is in the validation?

    public function postSignin(Request $request){
    $this->validate($request,[
        'email'=>'email|required|unique:users',
    

    This validation fails for an existing email. Try it:

        'email'=>'email|required',