ソースを参照

Client auth middleware + client logout

Vijayakrishnan 5 年 前
コミット
d34294f822

+ 4 - 1
app/Http/Kernel.php

@@ -70,5 +70,8 @@ class Kernel extends HttpKernel
         'ensureValidProSession' => \App\Http\Middleware\EnsureValidProSession::class,
         'ensureNoValidProSession' => \App\Http\Middleware\EnsureNoValidProSession::class,
         'ensureOnlyStrangerSession' => \App\Http\Middleware\EnsureOnlyStrangerSession::class,
+
+        'ensureValidClientSession' => \App\Http\Middleware\EnsureValidClientSession::class,
+        'ensureNoValidClientSession' => \App\Http\Middleware\EnsureNoValidClientSession::class,
     ];
-}
+}

+ 43 - 0
app/Http/Middleware/EnsureNoValidClientSession.php

@@ -0,0 +1,43 @@
+<?php
+
+namespace App\Http\Middleware;
+
+use Closure;
+use App\Models\AppSession;
+
+class EnsureNoValidClientSession
+{
+    /**
+     * Handle an incoming request.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  \Closure  $next
+     * @return mixed
+     */
+    public function handle($request, Closure $next)
+    {
+        // if not valid session, redirect to /pro/request-sms-login-token
+        $sessionKey = $request->cookie("sessionKey");
+
+        if(!$sessionKey){
+            return $next($request);
+        }
+
+        $appSession = AppSession::where("session_key",$sessionKey)->first();
+
+        if(!$appSession){
+            return $next($request);
+        }
+
+        if(!$appSession->is_active){
+            return $next($request);
+        }
+
+        if ($appSession->session_type !== 'CLIENT') {
+            return $next($request);
+        }
+
+        return redirect("/client/dashboard");
+
+    }
+}

+ 44 - 0
app/Http/Middleware/EnsureValidClientSession.php

@@ -0,0 +1,44 @@
+<?php
+
+namespace App\Http\Middleware;
+
+use Closure;
+
+use App\Models\AppSession;
+
+class EnsureValidClientSession
+{
+    /**
+     * Handle an incoming request.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  \Closure  $next
+     * @return mixed
+     */
+    public function handle($request, Closure $next)
+    {
+
+        //if not valid session, redirect to /pro/request-sms-login-token
+        $sessionKey = $request->cookie("sessionKey");
+
+        $appSession = AppSession::where("session_key",$sessionKey)->first();
+
+        if(!$appSession){
+            return $this->redirectToLogIn();
+        }
+
+        if(!$appSession->is_active){
+            return $this->redirectToLogIn();
+        }
+
+        if ($appSession->session_type !== 'CLIENT') {
+            return $this->redirectToLogIn();
+        }
+
+        return $next($request);
+    }
+
+    private function redirectToLogIn(){
+        return redirect("/client/checkin");
+    }
+}

+ 17 - 1
resources/views/client-dashboard.blade.php

@@ -9,7 +9,7 @@
             <span class="mr-auto">
                 Hello {{ $client->name_first }}
             </span>
-            <a href="#">Log Out</a>
+            <a href="#" class="client-logout">Log Out</a>
         </div>
 
         <div class="">
@@ -455,6 +455,22 @@
                     }
                 };
 
+                $(document).on('click', '.client-logout', function() {
+
+                    // turn client video off
+                    $.post('/api/clientVideoVisit/turnClientVideoOff', {}, function(_data) {
+                        console.log(_data);
+
+                        // log out
+                        $.get("/api/session/logOut", function(_data) {
+                            console.log(_data);
+                            window.location = '/client/checkin';
+                        })
+                    });
+
+                    return false;
+                });
+
             }
         });
     </script>

+ 12 - 7
routes/web.php

@@ -31,18 +31,23 @@ Route::get('/join/{meetingID}', function () {
 Route::get('/meeting/{meetingID}/{participantID}', 'GuestController@meeting');
 */
 
-Route::get('/join', 'GuestController@join');
-Route::get('/get-client-checkin-token/{uid}', 'GuestController@getCheckinToken');
-Route::get('/client/checkin', 'GuestController@checkin');
-Route::get('/client/dashboard', 'GuestController@dashboard');
+Route::middleware('ensureNoValidClientSession')->group(function() {
+    Route::get('/join', 'GuestController@join');
+    Route::get('/client/checkin', 'GuestController@checkin');
+});
+
+Route::middleware('ensureValidClientSession')->group(function() {
+    Route::get('/get-client-checkin-token/{uid}', 'GuestController@getCheckinToken');
+    Route::get('/client/dashboard', 'GuestController@dashboard');
+});
 
-// Route::middleware('ensureNoValidProSession')->group(function(){
+Route::middleware('ensureNoValidProSession')->group(function() {
     Route::get('/', 'AppSessionController@proRequestSmsLogInToken')->name('pro-request-sms-login-token');
     Route::get('/pro/login', 'AppSessionController@proLogIn')->name('pro-login');
     Route::post('/pro/login', 'AppSessionController@processProLogIn')->name('process-pro-login');
-// });
+});
 
-Route::middleware('ensureValidProSession')->group(function(){
+Route::middleware('ensureValidProSession')->group(function() {
     Route::get('/dashboard', 'ProController@dashboard')->name('pro-dashboard');
 
     // old routes