5

I am using the Laravel multi-auth for multiple users. I have frontend controller for the public access where no login is required. I want to check there if the user is logged in. If so I want to hide Login nav and show Home/Dashboard nav link which on click should redirect users to his dashboard. How can I check this in front-end controller/view? Any help is appreciated. Thanks in advance.

I have following guards:

'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],

    'api' => [
        'driver' => 'token',
        'provider' => 'users',
    ],

    'admin' => [
        'driver' => 'session',
        'provider' => 'admins',
    ],

    'university' => [
        'driver' => 'session',
        'provider' => 'universities',
    ],

    'school' => [
        'driver' => 'session',
        'provider' => 'schools',
    ],

    'student' => [
        'driver' => 'session',
        'provider' => 'students',
    ],
],

Model:

    <?php

namespace Modules\Student\Http\Models;

use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;

class Student extends Authenticatable
{
    use Notifiable;

    protected $guard = 'student';

    protected $fillable = ['first_name', 'last_name', 'email', 'password', 'remember_token'];

    public function applications()
    {
        return $this->hasMany("Modules\Student\Http\Models\Application", 'student_id');
    }

    public function languages()
    {
        return $this->hasMany("Modules\Student\Http\Models\StudentLanguage", 'student_id');
    }

    public function certificates()
    {
        return $this->hasMany("Modules\Student\Http\Models\StudentCertificate", 'student_id');
    }

    public function educations()
    {
        return $this->hasMany("Modules\Student\Http\Models\StudentEducation", 'student_id');
    }
}

Controller:

    <?php
namespace Modules\Student\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Http\Response;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth;
use Modules\Admin\Http\Models\Country;
use Modules\Student\Http\Models\Student;
use Modules\Student\Http\Models\Application;
use Modules\Student\Http\Models\StudentCertificate;
use Modules\Student\Http\Models\StudentLanguage;
use Modules\Student\Http\Models\StudentDocument;
use Modules\Student\Http\Models\StudentEducation;
use Illuminate\Support\Facades\Session;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Storage;


class StudentController extends Controller
{
    protected $redirectTo = '/student';

    public function __construct()
    {
        $this->middleware('auth:student');
    }

    public function index()
    {
       return view('student::dashboard');
    }

    public function profileForm()
    {
        $countries = Country::get(['id', 'country_name'])->toArray();
        $student = Student::with('languages')
            ->with('certificates')
            ->with('educations')
            ->with('educations.country')
            ->with('ducuments')
            ->find(Auth::User()->id);
        $student->countries = $countries;
        $student->docsGroup = $student->ducuments->groupBy('doc_type');
        return view('student::student_profile')
            ->withStudent($student);
    }

    public function deleteEducation($id)
    {
        $language = StudentEducation::find($id);
        if($language->delete()){
            return 'success';
        }
    }

    public function addCertificate(Request $request)
    {
        $this->validate($request, [
            'certificate_name'            => 'required',
            'certificate_score'            => 'required',
        ]);

        $certificate = new StudentCertificate();
        $certificate->student_id           = Auth::id();
        $certificate->certificate_name        = $request->certificate_name;
        $certificate->score                   = $request->certificate_score;
        if($certificate->save()){
            Session::flash('success', 'New certificate added successfully!');
            return redirect()->route('student.profile');
        };
        Session::flash('success', 'Some error occured while addeding certificate!');
        return redirect()->back()
            ->withInput()->with('tab', ['basic_info']);;
    }
}

And this is my controller where I want to check if any student/admin.. logged in or not:

 <?php

namespace Modules\Student\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Http\Response;
use App\Http\Controllers\Controller;
use Modules\Admin\Http\Models\Degree;
use Modules\Admin\Http\Models\ProgramCategory;
use Modules\University\Http\Models\Program;
use Modules\University\Http\Models\Scholarship;
use Modules\University\Http\Models\University;
use Modules\Admin\Http\Models\Country;
use Illuminate\Support\Facades\Mail;
use Illuminate\Support\Facades\Session;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Auth;

class FrontendController extends Controller
{
//    public function __construct()
//    {
//        $this->middleware('auth:student');
//    }


    public static function GetSearchAttributes()
    {
        $country_ids = University::where([
            ['status', '=', 'active'],
            ['id', '>', '0']
        ])
            ->get(['country_id'])
            ->pluck('country_id')
            ->toArray();

        $countries = Country::orderBy('country_name', 'asc')
            ->whereIn('id', $country_ids)
            ->get(['id', 'country_name'])
            ->toArray();

        $categories = ProgramCategory::orderBy('category_name', 'ASC')
            ->with('ProgramsCount')
            ->where([
                ['status', '=', 'active'],
                ['parent_id', '=', null]
            ])
            ->get(['category_name', 'id'])
            ->toArray();

        $degrees = Degree::orderBy('degree_name', 'asc')
            ->where('status', '=', 'active')
            ->get(['degree_name', 'id'])
            ->toArray();

        $searchAttr['countries'] = $countries;
        $searchAttr['categories'] = $categories;
        $searchAttr['degrees'] = $degrees;
        $searchAttr = (object) $searchAttr;
        return $searchAttr;
    }

    /**
     * Display a listing of the resource.
     * @return Response
     */
    public function index()
    {
        $logos = University::orderBy('id', 'ASC')
            ->where([
                ['status', '=', 'active']
            ])
            ->limit(8)
            ->get();
        return view('student::index')->withLogos($logos);
    }
8
  • @if(Auth::user()) Commented Jan 24, 2018 at 14:49
  • I already tried this but not working. I have multiple guards as: "'guards' => [ 'web' => [ 'driver' => 'session', 'provider' => 'users', ], 'api' => [ 'driver' => 'token', 'provider' => 'users', ], 'admin' => [ 'driver' => 'session', 'provider' => 'admins', ], 'student' => [ 'driver' => 'session', 'provider' => 'students', ], ]," and I am using nwidart package and making student namespace is my default one. Commented Jan 24, 2018 at 17:24
  • could you please show us your login code?? and some code where you can access user id of logged in user, you table for multi auth, model Commented Jan 24, 2018 at 17:27
  • code public function login(Request $request) { $this->validate($request, [....]); if(Auth::guard('university')->attempt(['email' => $request->email, 'password' => $request->password], $request->remember)){ return redirect()->intended(route('university.dashboard')); } Session::flash('failed', 'Login credential incorrect!'); return redirect() ->back() ->withInput($request->only('email', 'remember')); } Commented Jan 24, 2018 at 17:38
  • please update your question with this information Commented Jan 24, 2018 at 17:39

1 Answer 1

5

Use check()

@if (Auth::guard('student')->check())
   ///show link for student
@elseif(Auth::guard('admin')->check())
   //show link for admin
@else
   ///show login
@endif

Do this for other guards too. See this for better understanding.

Sign up to request clarification or add additional context in comments.

2 Comments

Great @Sohel0415. It works like charm. Thanks a lot.
glad it helps you and don't forget to upvote as it may help others :)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.