I have made a login page 'admin-login' which redirected to a page 'admin' when authenticated. I want to display the name of the logged in user on the 'admin' page.
Have a look at my code: Controller:
public function login(Request $req) {
$email = $req->input('email');
$password = $req->input('password');
$checkLogin = DB::table('admin')->where(['email'=>$email,'password'=>$password])->get();
if(count($checkLogin) > 0) {
return view('admin')->with(['name'=>" "]);
}
else {
// echo "Login Failed!";
return Redirect::route('admin-login')->with(['error'=> "Invalid email or Password!!"]);
}
}
I don't know what to write here 'with(['name'=>" "]);'. Plz help me out.
View:
<ul class="nav navbar-nav navbar-right">
<!-- Authentication Links -->
@guest
<li><a href="{{ route('login') }}">Login</a></li>
<li><a href="{{ route('register') }}">Register</a></li>
@else
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false" aria-haspopup="true">
{{ Session::get('name') }} <span class="caret"></span>
</a>
</li>
</ul>
if you using laravel default auth model you can simply use {{Auth::user()->name}} it will print the name of the logedin user.
You've said
Auth::user()->name
doesn't work for you and that's you're keeping password as is without hashing it. Also, it looks like you're using multiple tables to store users. In this case,Auth::check()
,@guest
,@auth
and other directives will not work for you.You need to add a new a new guard, modify some Laravel code and login users manually. But since you're new to Laravel, I think the easier solution for you will be checking users manually:
You can also pass the variable to a view and share it between requests using session:
And do this instead of
@auth
:And this instead of
@guest
:And to show admin name:
If you also want to avoid an error when there is no user, use the
optional()
helper:It will print a name if a user is he is authenticated and will print nothing if he is not.
And I'd really recommend you to hash passwords with
brcypt()
helper and use one table for all users and just assign roles to the users. In this case, you'll be able to use built-in auth system and users' credentials will be safe.Try to use this in the controller:
Then in the views, you need to create a foreach loop:
Also, you can use this if you're using laravel's default auth:
You can get the currently authenticated user via
Auth::user()
And his name like
Auth::user()->name
;try using the below code :