Browse Source

update: session manage

v2board 2 years ago
parent
commit
044e8f6c30

+ 12 - 0
app/Http/Controllers/User/UserController.php

@@ -31,6 +31,18 @@ class UserController extends Controller
         ]);
     }
 
+    public function removeActiveSession(Request $request)
+    {
+        $user = User::find($request->user['id']);
+        if (!$user) {
+            abort(500, __('The user does not exist'));
+        }
+        $authService = new AuthService($user);
+        return response([
+            'data' => $authService->delSession($request->input('session_id'))
+        ]);
+    }
+
     public function checkLogin(Request $request)
     {
         $data = [

+ 1 - 1
app/Http/Routes/UserRoute.php

@@ -22,11 +22,11 @@ class UserRoute
             $router->post('/transfer', 'User\\UserController@transfer');
             $router->post('/getQuickLoginUrl', 'User\\UserController@getQuickLoginUrl');
             $router->get ('/getActiveSession', 'User\\UserController@getActiveSession');
+            $router->post('/removeActiveSession', 'User\\UserController@removeActiveSession');
             // Order
             $router->post('/order/save', 'User\\OrderController@save');
             $router->post('/order/checkout', 'User\\OrderController@checkout');
             $router->get ('/order/check', 'User\\OrderController@check');
-            $router->get ('/order/details', 'User\\OrderController@detail');                                            // TODO: 1.7.0 remove
             $router->get ('/order/detail', 'User\\OrderController@detail');
             $router->get ('/order/fetch', 'User\\OrderController@fetch');
             $router->get ('/order/getPaymentMethod', 'User\\OrderController@getPaymentMethod');

+ 13 - 0
app/Services/AuthService.php

@@ -76,10 +76,23 @@ class AuthService
             $cacheKey,
             $sessions
         )) return false;
+        return true;
     }
 
     public function getSessions()
     {
         return (array)Cache::get(CacheKey::get("USER_SESSIONS", $this->user->id), []);
     }
+
+    public function delSession($sessionId)
+    {
+        $cacheKey = CacheKey::get("USER_SESSIONS", $this->user->id);
+        $sessions = (array)Cache::get($cacheKey, []);
+        unset($sessions[$sessionId]);
+        if (!Cache::put(
+            $cacheKey,
+            $sessions
+        )) return false;
+        return true;
+    }
 }