Browse Source

使用token问题,(企业邮箱登录先跳转到企业相关路径,否则默认使用求职token)

lifanagju_citu 7 tháng trước cách đây
mục cha
commit
5fe4c77264

+ 1 - 0
src/api/common/index.js

@@ -213,6 +213,7 @@ export const userRefreshToken = async (refreshToken) => {
 export const getEnterpriseUserAccount = async () => {
   return await request.get({
     // url: '/app-api/menduner/system/recruit/user/get/account'
+    tokenIndex: 1, // 使用招聘token
     url: '/app-api/pay/currency/get' // 获取货币账户
   })
 }

+ 1 - 1
src/api/enterprise.js

@@ -156,7 +156,7 @@ export const updateEnterpriseTag = async (data) => {
   })
 }
 
-// 根据类型获取标签信息
+// 招聘端-根据类型获取标签信息
 export const getTagTreeDataApi = async (params) => {
   return await request.get({
     url: '/admin-api/menduner/system/tag/get/by/type',

+ 12 - 5
src/config/axios/service.js

@@ -20,6 +20,8 @@ import { useI18n } from '@/hooks/web/useI18n'
 
 const tenantEnable = import.meta.env.VITE_APP_TENANT_ENABLE
 const { result_code, base_url, request_timeout } = config
+// const entUrlStr = '/recruit' // 包含这个就是企业接口,特殊的在api function中设置tokenIndex(优先)
+// let isEnterprise = config.url.includes(entUrlStr)
 
 // 需要忽略的提示。忽略后,自动 Promise.reject('error')
 const ignoreMsgs = [
@@ -58,6 +60,8 @@ service.interceptors.request.use(
     config.headers['Accept-Language'] = getCurrentLocaleLang() ?? 'zh_CN'
     // 是否需要设置 token
     let isToken = (config.headers || {}).isToken === false
+    // token类型
+    const tokenIndex = config.tokenIndex ? config.tokenIndex : getIsEnterprise() ? 1 : 2
     whiteList.some((v) => {
       if (config.url) {
         config.url.indexOf(v) > -1
@@ -65,8 +69,8 @@ service.interceptors.request.use(
       }
     })
     
-    if (getToken(config.tokenIndex) && !isToken) {
-      (config).headers.Authorization = 'Bearer ' + getToken(config.tokenIndex) // 让每个请求携带自定义token
+    if (getToken(tokenIndex) && !isToken) {
+      (config).headers.Authorization = 'Bearer ' + getToken(tokenIndex) // 让每个请求携带自定义token
     }
     // 设置租户
     if (tenantEnable && tenantEnable === 'true') {
@@ -146,6 +150,9 @@ service.interceptors.response.use(
       return Promise.reject(msg)
     } else if (code === 401) {
       // 如果未认证,并且未进行刷新令牌,说明可能是访问令牌过期了
+      // token类型
+      const tokenIndex = config.tokenIndex ? config.tokenIndex : getIsEnterprise() ? 1 : 2
+
       if (!isRefreshToken) {
         isRefreshToken = true
         // 1. 如果获取不到刷新令牌,则只能执行登出操作
@@ -155,11 +162,11 @@ service.interceptors.response.use(
         // 2. 进行刷新访问令牌
         try {
           // 2.1 刷新成功,则回放队列的请求 + 当前请求
-          const data = getIsEnterprise() ? await enterpriseRefreshToken(getRefreshToken()) : await userRefreshToken(getRefreshToken())
+          const data = tokenIndex === 1 ? await enterpriseRefreshToken(getRefreshToken()) : await userRefreshToken(getRefreshToken())
           setToken(data.accessToken)
           setRefreshToken(data.refreshToken)
 
-          config.headers.Authorization = 'Bearer ' + getToken(config.tokenIndex)
+          config.headers.Authorization = 'Bearer ' + getToken(tokenIndex)
           requestList.forEach((cb) => {
             cb()
           })
@@ -181,7 +188,7 @@ service.interceptors.response.use(
         // 添加到队列,等待刷新获取到新的令牌
         return new Promise((resolve) => {
           requestList.push(() => {
-            config.headers.Authorization = 'Bearer ' + getToken(config.tokenIndex) // 让每个请求携带自定义token 请根据实际情况自行修改
+            config.headers.Authorization = 'Bearer ' + getToken(tokenIndex) // 让每个请求携带自定义token 请根据实际情况自行修改
             resolve(service(config))
           })
         })

+ 1 - 1
src/locales/en.js

@@ -176,7 +176,7 @@ export default {
     companyInfo: 'Company Information',
     moreBtn: 'View More Enterprises',
     joiningEnterprise: 'Joining Enterprise',
-    registeringNewEnterprise: 'Registering A New Enterprise',
+    registeringNewEnterprise: 'Registering A Enterprise',
     infoSetting: { // 企业信息设置
       basicInfo: 'Basic Information',
       enterpriseLogo: 'Enterprise LOGO',

+ 1 - 1
src/locales/zh-CN.js

@@ -176,7 +176,7 @@ export default {
     companyInfo: '公司信息',
     moreBtn: '查看更多企业',
     joiningEnterprise: '加入已有企业',
-    registeringNewEnterprise: '注册企业',
+    registeringNewEnterprise: '注册企业',
     infoSetting: { // 企业信息设置
       basicInfo: '基本信息',
       enterpriseLogo: '企业LOGO',

+ 3 - 2
src/permission.js

@@ -1,7 +1,7 @@
 import router from './router'
 import { useNProgress } from '@/hooks/web/useNProgress'
 import { useTitle } from '@/hooks/web/useTitle'
-import { getToken } from '@/utils/auth'
+import { getToken, getIsEnterprise } from '@/utils/auth'
 import { useDictStore } from '@/store/dict'
 import { useUserStore } from '@/store/user'
 import Confirm from '@/plugins/confirm'
@@ -14,12 +14,13 @@ const { start, done } = useNProgress()
 // 路由守卫
 router.beforeEach(async (to, from, next) => {
   localStorage.setItem('routerTest', to.path) // 本地环境保存代码热更新会导致路径缺失问题
+  const tokenIndex = getIsEnterprise() ? 1: 2
   start()
   // loadStart()
   if (to.path === '/enterpriseVerification') {
     useUserStore().changeRole()
     next()
-  } else if (getToken()) {
+  } else if (getToken(tokenIndex)) {
     // 企业信息完成度提示
     if (localStorage.getItem('checkEnterpriseBaseInfoFalseHref')) {
       const href = localStorage.getItem('checkEnterpriseBaseInfoFalseHref')

+ 10 - 0
src/views/login/index.vue

@@ -72,7 +72,17 @@ const handleLogin = async () => {
     let params, api = {}
     if (tab.value === 1) { params = { ...phoneRef.value.loginData }; api = 'handleSmsLogin'}
     else { params = { ...passRef.value.loginData }; api = 'handlePasswordLogin'}
+    
+    // 邮箱为企业招聘, 手机号为个人求职
+    if (tab.value === 2) {
+      const pattern = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
+      const isEnterprise = pattern.test(params.phone)
+      params.isEnterprise = isEnterprise
+    }
+    if (params.isEnterprise) router.push({ path: '/enterpriseVerification' }) // 先跳转到会使用企业token的路由
     await userStore[api](params)
+    // 跳转
+    if (params.isEnterprise) return // 企业邮箱登录
     Snackbar.success(t('login.loginSuccess'))
     router.push({ path: '/recruitHome' })
   }