src/store/modules/user.js
@@ -15,19 +15,29 @@
      id: '',
      name: '',
      nickName: '',
      nameEn: '',
      userName: '',
      avatar: '',
      roles: [],
      permissions: []
    }),
    actions: {
      // 更新按钮权限,不重复触发登录时的密码提示。
      async refreshPermissions() {
        const token = this.token
        const res = await getInfo()
        if (this.token === token) {
          this.roles = res.roles?.length ? res.roles : ['ROLE_DEFAULT']
          this.permissions = res.permissions || []
        }
        return res
      },
      // 登录
      login(userInfo) {
        const username = userInfo.username.trim()
        const password = userInfo.password
        const code = userInfo.code
        const uuid = userInfo.uuid
        return new Promise((resolve, reject) => {
          login(username, password, code, uuid).then(res => {
          login(username, password).then(res => {
            setToken(res.token)
            this.token = res.token
            useLockStore().unlockScreen()
@@ -55,6 +65,8 @@
            this.id = user.userId
            this.name = user.userName
            this.nickName = user.nickName
            this.nameEn = user.nameEn
            this.userName = user.userName
            this.avatar = avatar
            cache.session.set('pwrChrtype', res.pwdChrtype)
            /* 初始密码提示 */
@@ -78,12 +90,18 @@
      // 退出系统
      logOut() {
        return new Promise((resolve, reject) => {
          logout(this.token).then(() => {
            this.token = ''
            this.roles = []
            this.permissions = []
            removeToken()
            resolve()
          logout(this.token).then((res) => {
            // 业务定制:后端返回跳转地址时走统一认证登出(如 SSO 单点退出),
            // 返回空则按常规前端登出处理
            if (res.data) {
              window.location.href = res.data
            } else {
              this.token = ''
              this.roles = []
              this.permissions = []
              removeToken()
              resolve()
            }
          }).catch(error => {
            reject(error)
          })