Browse Source

新增 未登入重新導向

oransheep 2 years ago
parent
commit
5e2b7ae029
3 changed files with 18 additions and 4 deletions
  1. 11 0
      resources/js/src/router/index.js
  2. 5 1
      resources/js/src/views/Login.vue
  3. 2 3
      routes/api.php

+ 11 - 0
resources/js/src/router/index.js

@@ -75,6 +75,17 @@ const router = new VueRouter({
   ],
 })
 
+router.beforeEach((to, from, next) => {
+  if (to.path === '/login' || to.path === '/error-404' || localStorage.getItem('accessToken') != null) {
+    if (to.path === '/login') {
+      localStorage.clear()
+    }
+    next()
+  } else {
+    next({ path: '/login', query: { redirect: to.fullPath } })
+  }
+})
+
 // ? For splash screen
 // Remove afterEach hook if you are not using splash screen
 router.afterEach(() => {

+ 5 - 1
resources/js/src/views/Login.vue

@@ -259,7 +259,11 @@ export default {
             .then(res => {
               useJwt.setToken(res.data.token)
               localStorage.setItem('userData', res.data.userData)
-              this.$router.push({ path: '/' })
+              if (this.$route.query.redirect) {
+                this.$router.push(this.$route.query.redirect)
+              } else {
+                this.$router.push('/')
+              }
             })
         }
       })

+ 2 - 3
routes/api.php

@@ -38,13 +38,12 @@ Route::post('/login', function (Request $request) {
 
     return [
         'token' => $user->createToken('login')->plainTextToken,
-        'userData' => json_encode($user)
+        'userData' => json_encode($user),
     ];
 });
 
 Route::middleware('auth:sanctum')->post('/logout', function (Request $request) {
     $user = $request->user();
-    // $user->tokens()->delete();
-    $user->tokens()->where('tokenable_id', $user->id)->delete();
+    $user->tokens()->delete();
     return $user;
 });