|
|
@@ -1,9 +1,11 @@
|
|
|
import { ref, computed } from 'vue'
|
|
|
-import { getTenantIdByName, login, smsLogin, smsCode } from '@/api/login/login.js'
|
|
|
+import { getTenantIdByName, login, smsLogin, smsCode, logout } from '@/api/login/login.js'
|
|
|
import { ElLoading, ElMessage } from 'element-plus'
|
|
|
import { updateAllDictData } from './dictUtils.js';
|
|
|
// CryptoJS 库(用于密码加密)
|
|
|
import CryptoJS from 'crypto-js';
|
|
|
+// 消息工具
|
|
|
+import { Message } from './message/Message.js';
|
|
|
|
|
|
// 加密密钥 (从环境变量获取)
|
|
|
const SECRET_KEY = import.meta.env.VITE_SECRET_KEY;
|
|
|
@@ -326,6 +328,50 @@ const autoLogin = async (tenantName, username, password, router, redirectPath) =
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+// 退出登录逻辑
|
|
|
+const logoutLogic = async (router) => {
|
|
|
+ try {
|
|
|
+ // 调用logout API 退出登录
|
|
|
+ const logoutRes = await logout()
|
|
|
+ console.log('退出登录:', logoutRes);
|
|
|
+ // 清空登录状态相关信息
|
|
|
+ localStorage.removeItem('token')
|
|
|
+ localStorage.removeItem('isLoggedIn')
|
|
|
+ localStorage.removeItem('maxCourseSections')
|
|
|
+
|
|
|
+ // 检查是否勾选了记住我
|
|
|
+ const rememberMe = localStorage.getItem('rememberMe') === 'true'
|
|
|
+
|
|
|
+ if (!rememberMe) {
|
|
|
+ // 未勾选记住我,清空所有信息
|
|
|
+ localStorage.removeItem('userName')
|
|
|
+ localStorage.removeItem('tenantName')
|
|
|
+ localStorage.removeItem('rememberMe')
|
|
|
+ }
|
|
|
+
|
|
|
+ // 跳转到登录页面
|
|
|
+ router.push({ path: '/login' })
|
|
|
+ } catch (error) {
|
|
|
+ console.error('退出登录失败:', error)
|
|
|
+ // API调用失败,也清空本地存储
|
|
|
+ localStorage.removeItem('token')
|
|
|
+ localStorage.removeItem('isLoggedIn')
|
|
|
+ localStorage.removeItem('maxCourseSections')
|
|
|
+
|
|
|
+ // 检查是否勾选了记住我
|
|
|
+ const rememberMe = localStorage.getItem('rememberMe') === 'true'
|
|
|
+
|
|
|
+ if (!rememberMe) {
|
|
|
+ // 未勾选记住我,清空所有信息
|
|
|
+ localStorage.removeItem('userName')
|
|
|
+ localStorage.removeItem('tenantName')
|
|
|
+ localStorage.removeItem('rememberMe')
|
|
|
+ }
|
|
|
+ Message().notifyError('退出登录失败,请重试', true)
|
|
|
+ router.push({ path: '/login' })
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
export {
|
|
|
createLoginData,
|
|
|
createVerificationCodeLogic,
|
|
|
@@ -334,5 +380,6 @@ export {
|
|
|
loadLoginData,
|
|
|
checkLoginStatus,
|
|
|
generateRules,
|
|
|
- autoLogin
|
|
|
+ autoLogin,
|
|
|
+ logoutLogic
|
|
|
}
|