Browse Source

Merge branch 'master' of https://revinr.site/mostafij-revinr/student-admission

Israat Zarin 2 years ago
parent
commit
51be49d1d5

+ 7 - 3
app/Helpers/functions.php

@@ -62,9 +62,13 @@ function fDate($date, $format='d-m-Y'){
 	return \Carbon\Carbon::parse($date)->format($format);
 } 
  
-function auth_user(){
-	return \Auth::user();
-} 
+// function auth_user(){
+// 	return \Auth::user();
+// } 
+
+function auth_user($guard='teacher'){
+	return \Auth::guard($guard)->user();
+}
   
 
 if(!function_exists('teacherRefNoGenerate')){

+ 2 - 31
app/Http/Controllers/Auth/RegisterController.php

@@ -62,19 +62,7 @@ class RegisterController extends Controller
                 'dob' => ['required', 'string','date'],
                 'optradio' => ['required', 'string','max:255'],
             ]);
-        }else{
-            return Validator::make($data, [
-                'firstname' => ['required', 'string', 'max:255'],
-                'lastname' => ['required', 'string', 'max:255'],
-                'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
-                'password' => ['required', 'string', 'min:8', 'confirmed'],
-                //'phonenumber' => ['required', 'string', 'max:255'],
-                'universityname' => ['required', 'string', 'max:255'],
-                'department' => ['required', 'string', 'max:255'],
-                'designation' => ['required', 'string', 'max:255'],
-                'universitywebsite' => ['required', 'string', 'max:255'],
-            ]); 
-        }
+        } 
         
     }
 
@@ -99,28 +87,11 @@ class RegisterController extends Controller
             ]);
             Mail::to('test@mail.com')->send(new SignUp($data->id));
 
-        }elseif($data['user_type']==2){    
-            $data = User::create([
-                'first_name' => $data['firstname'],
-                'last_name' => $data['lastname'],
-                'password' => Hash::make($data['password']),
-                'email' => $data['email'],
-               // 'phone_number' => $data['phonenumber'],
-                'university_name' => $data['universityname'],
-                'department' => $data['department'],
-                'designation' => $data['designation'],
-                'uni_website' => $data['universitywebsite'],
-                'user_type' => $data['user_type'],
-                'ref_no' => name_initials($data['firstname'],$data['lastname']).''.teacherRefNoGenerate(),
-            ]);
-            Mail::to('test@mail.com')->send(new SignUp($data->id));
         }  
         
         if($data['user_type']==1){
            $this->redirectTo="/home";
-        }elseif($data['user_type']==2){
-            $this->redirectTo="/teacher_profile";
-        }
+        } 
 
         return $data;
 

+ 98 - 0
app/Http/Controllers/TeacherAuth/LoginController.php

@@ -0,0 +1,98 @@
+<?php
+
+namespace App\Http\Controllers\TeacherAuth;
+
+use App\Http\Controllers\Controller;
+use Illuminate\Foundation\Auth\AuthenticatesUsers;
+use Illuminate\Support\Facades\Auth;
+ 
+use Illuminate\Http\Request; 
+use App\User;
+
+class LoginController extends Controller
+{
+    /*
+    |--------------------------------------------------------------------------
+    | Login Controller
+    |--------------------------------------------------------------------------
+    |
+    | This controller handles authenticating users for the application and
+    | redirecting them to your home screen. The controller uses a trait
+    | to conveniently provide its functionality to your applications.
+    |
+    */
+
+     
+
+    /**
+     * Where to redirect users after login / registration.
+     *
+     * @var string
+     */
+    public $redirectTo = '/teacher_profile';
+
+    /**
+     * Create a new controller instance.
+     *
+     * @return void
+     */
+    public function __construct()
+    {
+        $this->middleware('teacher.guest', ['except' => 'logout']);
+    }
+
+    /**
+     * Show the application's login form.
+     *
+     * @return \Illuminate\Http\Response
+     */
+    public function showLoginForm()
+    {
+        return view('login-v2');
+    }
+
+
+    public function login(Request $request)
+    {
+        $teacher = User::where('user_type',2)->where('email',$request->email)->first();
+        if(!$teacher){
+            return redirect('/')->with('error','Unknown Email address!');
+        }else{
+            if($teacher->status == '0'){
+                return redirect('/')->with('error', 'Account Status is not Activated!');
+            }
+            else{
+                $credentials = [
+                    'email' => $request->email,
+                    'password' => $request->password,
+                    'status' => '1'
+                ];
+
+                if (Auth::guard('teacher')->attempt($credentials)) {   
+
+                    return redirect('teacher_profile');
+                  }
+                  else{
+                    return redirect('/')->with('error','Wrong Email/Password combination');
+                }
+            }
+        }
+    }
+
+    public function logout(){
+        $this->guard('teacher')->logout();
+        request()->session()->invalidate();
+        return redirect('/login-v2');
+
+    }
+
+    /**
+     * Get the guard to be used during authentication.
+     *
+     * @return \Illuminate\Contracts\Auth\StatefulGuard
+     */
+    protected function guard()
+    {
+        return Auth::guard('teacher');
+    }
+}

+ 113 - 0
app/Http/Controllers/TeacherAuth/RegisterController.php

@@ -0,0 +1,113 @@
+<?php
+
+namespace App\Http\Controllers\TeacherAuth;
+ 
+use Validator;
+use App\Http\Controllers\Controller;
+use Illuminate\Http\Request;
+use Illuminate\Foundation\Auth\RegistersUsers;
+use Illuminate\Support\Facades\Auth;
+use App\User;
+use Hash;
+
+class RegisterController extends Controller
+{
+    /*
+    |--------------------------------------------------------------------------
+    | Register Controller
+    |--------------------------------------------------------------------------
+    |
+    | This controller handles the registration of new users as well as their
+    | validation and creation. By default this controller uses a trait to
+    | provide this functionality without requiring any additional code.
+    |
+    */
+
+    use RegistersUsers;
+
+    /**
+     * Where to redirect users after login / registration.
+     *
+     * @var string
+     */
+    //protected $redirectTo = '/login-v2';
+
+    /**
+     * Create a new controller instance.
+     *
+     * @return void
+     */
+    public function __construct()
+    {
+        $this->middleware('teacher.guest');
+    }
+
+    /**
+     * Get a validator for an incoming registration request.
+     *
+     * @param  array  $data
+     * @return \Illuminate\Contracts\Validation\Validator
+     */
+    protected function validator(array $data)
+    {
+        return Validator::make($data, [ 
+            'firstname' => ['required', 'string', 'max:255'],
+            'lastname' => ['required', 'string', 'max:255'],
+            'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
+            'password' => ['required', 'string', 'min:8', 'confirmed'],
+            //'phonenumber' => ['required', 'string', 'max:255'],
+            'universityname' => ['required', 'string', 'max:255'],
+            'department' => ['required', 'string', 'max:255'],
+            'designation' => ['required', 'string', 'max:255'],
+            'universitywebsite' => ['required', 'string', 'max:255'],
+        ]);
+    }
+
+    /**
+     * Create a new user instance after a valid registration.
+     *
+     * @param  array  $data
+     * @return User
+     */
+    protected function create(Request $req)
+    { 
+         
+        $data = User::create([
+            'first_name' => $req->firstname,
+            'last_name' => $req->lastname,
+            'password' => Hash::make($req->password),
+            'email' => $req->email,
+           // 'phone_number' => $req->phonenumber,
+            'university_name' => $req->universityname,
+            'department' => $req->department,
+            'designation' => $req->designation,
+            'uni_website' => $req->universitywebsite,
+            'user_type' => $req->user_type,
+            'ref_no' => name_initials($req->firstname,$req->lastname).''.teacherRefNoGenerate(),
+        ]);
+        Mail::to('test@mail.com')->send(new SignUp($data->id));
+        return redirect("/teacher_profile");
+        
+    }
+
+    /**
+     * Show the application registration form.
+     *
+     * @return \Illuminate\Http\Response
+     */
+    public function showRegistrationForm()
+    { 
+        
+        return view('register-v2');
+    }
+
+    /**
+     * Get the guard to be used during registration.
+     *
+     * @return \Illuminate\Contracts\Auth\StatefulGuard
+     */
+    protected function guard()
+    {
+        return Auth::guard('teacher');
+    }
+}

+ 3 - 6
app/Http/Controllers/TeacherHomeController.php

@@ -10,17 +10,14 @@ class TeacherHomeController extends Controller
 {
     public function __construct()
    {
-       $this->middleware('auth');
+       $this->middleware('teacher');
    } 
     public function teacher_profile(Request $request)
-    {   $user = Auth::user();
+    {   $user = Auth::guard('teacher')->user();
         $students = User::where('user_type',1)->get();
         return view('teacher_profile',compact('students'));
     }
 
-    public function teacher_logout(){
-        Auth::guard()->logout();
-        return redirect('/login-v2');
-  }
+    
 
 }

+ 2 - 0
app/Http/Kernel.php

@@ -53,6 +53,8 @@ class Kernel extends HttpKernel
      * @var array
      */
     protected $routeMiddleware = [
+        'teacher' => \App\Http\Middleware\RedirectIfNotTeacher::class,
+        'teacher.guest' => \App\Http\Middleware\RedirectIfTeacher::class,
         'auth' => \App\Http\Middleware\Authenticate::class,
         'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
         'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,

+ 25 - 0
app/Http/Middleware/RedirectIfNotTeacher.php

@@ -0,0 +1,25 @@
+<?php
+
+namespace App\Http\Middleware; 
+use Closure;
+use Illuminate\Support\Facades\Auth;
+
+class RedirectIfNotTeacher
+{
+    /**
+     * Handle an incoming request.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  \Closure  $next
+     * @param  string|null  $guard
+     * @return mixed
+     */
+    public function handle($request, Closure $next, $guard = 'teacher')
+    {
+        if (!Auth::guard($guard)->check()) {
+	        return redirect('login-v2');
+	    }
+
+	    return $next($request);
+    }
+}

+ 26 - 0
app/Http/Middleware/RedirectIfTeacher.php

@@ -0,0 +1,26 @@
+<?php
+
+namespace App\Http\Middleware;
+
+use Closure;
+use Illuminate\Support\Facades\Auth;
+
+class RedirectIfTeacher
+{
+	/**
+	 * Handle an incoming request.
+	 *
+	 * @param  \Illuminate\Http\Request  $request
+	 * @param  \Closure  $next
+	 * @param  string|null  $guard
+	 * @return mixed
+	 */
+	public function handle($request, Closure $next, $guard = 'teacher')
+	{
+	    if (Auth::guard($guard)->check()) {
+	        return redirect('teacher_profile');
+	    }
+
+	    return $next($request);
+	}
+}

+ 1 - 1
composer.lock

@@ -7278,5 +7278,5 @@
         "php": "^7.2.5|^8.0"
     },
     "platform-dev": [],
-    "plugin-api-version": "2.0.0"
+    "plugin-api-version": "2.3.0"
 }

+ 10 - 0
config/auth.php

@@ -46,6 +46,11 @@ return [
             'provider' => 'users',
             'hash' => false,
         ],
+
+        'teacher' => [
+            'driver' => 'session',
+            'provider' => 'teacher',
+        ],
     ],
 
     /*
@@ -71,6 +76,11 @@ return [
             'model' => App\User::class,
         ],
 
+        'teacher' => [
+            'driver' => 'eloquent',
+            'model' => App\User::class,
+        ],
+
         // 'users' => [
         //     'driver' => 'database',
         //     'table' => 'users',

+ 1 - 1
resources/views/register-v2.blade.php

@@ -151,7 +151,7 @@
                             @endif
                         </div>
                         <h1 class="mb-4" style="color: #141639c4; font-size:48px !important;">Register, To Start</h1>
-                    <form method="POST" action="{{ route('register') }}">
+                    <form method="POST" action="{{ route('teacher-register-v2') }}">
                         @csrf
                         <input type="hidden" value="2" name="user_type">
                         <div class="row mb-3">

+ 3 - 3
resources/views/teacher_profile.blade.php

@@ -316,12 +316,12 @@ tbody, td, tfoot, th, thead, tr {
                                 </ul> 
                                 <ul class="nav navbar-nav align-items-center ml-auto header_right ps-2">
                                     <li class="nav-item dropdown dropdown-notification">
-                                        <a href="{{ route('teacher-logout') }}"
+                                        <a href="{{ route('logout') }}"
                                             onclick="event.preventDefault();
                                                             document.getElementById('logout-form').submit();">
                                              <i class="fa fa-sign-out change_pass_btn"></i>
                                         </a>
-                                        <form id="logout-form" action="{{ route('teacher-logout') }}" method="POST" class="d-none">
+                                        <form id="logout-form" action="{{ route('logout') }}" method="POST" class="d-none">
                                             @csrf
                                         </form>
                                     </li>
@@ -429,7 +429,7 @@ tbody, td, tfoot, th, thead, tr {
                             </div>
                         </div> 
                         <div class="col-md-12 bg-white" style="padding:10px; height:500px;">
-                            <h4 class="text-info">Ref :{{ auth_user()->ref_no }}</h4>
+                            {{-- <h4 class="text-info">Ref :{{ auth_user('teacher')->ref_no }}</h4> --}}
                             <div class="table-responsive">
                                 <table class="table table-bordered list_table">
                                     <thead>

+ 14 - 9
routes/web.php

@@ -17,13 +17,13 @@ Route::get('/', function () {
     return view('welcome');
 });
 
-Route::get('/login-v2', function () {
-    return view('login-v2');
-});
+// Route::get('/login-v2', function () {
+//     return view('login-v2');
+// });
 
-Route::get('/register-v2', function () {
-    return view('register-v2');
-});
+// Route::get('/register-v2', function () {
+//     return view('register-v2');
+// });
 
 Route::get('/dashboard', function () {
     return view('dashboard');
@@ -56,7 +56,7 @@ Route::get('/email-verification/{id}', [App\Http\Controllers\RegisterController:
 
 // Student 
 Route::group(['middleware' => ['auth']], function() {
-    
+
 Route::get('/home', [App\Http\Controllers\StudentHomeController::class,'index']);
 Route::get('/save-as-complete', [App\Http\Controllers\StudentHomeController::class,'save_as_complete'])->name('save-as-complete');
 Route::post('/institution_save', [App\Http\Controllers\StudentHomeController::class,'institution_save'])->name('institution-save');
@@ -77,9 +77,14 @@ Route::get('/change_test_score/{status}', [App\Http\Controllers\StudentHomeContr
 Route::get('/home/search', [App\Http\Controllers\StudentHomeController::class,'ref_search'])->name('ref-search');
 });
 // Teacher
-Route::group(['middleware' => ['auth']], function() {
+
+Route::get('register-v2', [App\Http\Controllers\TeacherAuth\RegisterController::class,'showRegistrationForm']);
+Route::post('register-v2/teacher-register-v2', [App\Http\Controllers\TeacherAuth\RegisterController::class,'create'])->name('teacher-register-v2');
+Route::get('/login-v2', [App\Http\Controllers\TeacherAuth\LoginController::class,'showLoginForm']);
+
+Route::group(['middleware' => ['teacher']], function() { 
     Route::get('/teacher_profile', [App\Http\Controllers\TeacherHomeController::class,'teacher_profile'])->name('teacher_profile');
-    Route::post('teacher-logout', [App\Http\Controllers\TeacherHomeController::class,'teacher_logout'])->name('teacher-logout');
+    Route::post('logout', [App\Http\Controllers\TeacherAuth\LoginController::class,'logout'])->name('logout');
 });