| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168 |
- import { getToken, setToken, removeToken, setRefreshToken, getRefreshToken, removeRefreshToken } from "@/utils/auth"
- import { login } from "@/api/login"
- import CryptoJS from "crypto-js"
- const { VITE_BX_CLIENT_ID, VITE_EDGE_CLIENT_ID } = import.meta.env
- export const useUserStore = defineStore(
- "user",
- {
- state: () => ({
- token: getToken(),
- refreshToken: getRefreshToken(),
- userInfo: {},
- menuList: [],
- roles: [],
- permissions: []
- }),
- actions: {
- //登录
- login(userInfo) {
- let data = {
- username: userInfo.username,
- password: CryptoJS.MD5(userInfo.password).toString(),
- grant_type: "password",
- scope: "all"
- }
- return new Promise((resolve, reject) => {
- login(data).then(res => {
- if (res.error_code == "400") {
- ElMessage({
- message: res.error_description,
- type: "warning"
- })
- reject("err")
- } else if (res.error_code == "204") {
- ElMessage({
- message: "由于您长时间未登录,请修改密码后登录!",
- type: "warning"
- })
- reject(204)
- } else if (res.error_code == "203") {
- ElMessage({
- message: "由于您长时间未登录,请校验手机号!",
- type: "warning"
- })
- reject(203)
- } else if (res.error_code == "500") {
- ElMessage({
- message: res.error_description,
- type: "warning"
- })
- reject("err")
- } else {
- setToken(res.access_token)
- setRefreshToken(res.refresh_token)
- this.userInfo = res.user
- this.token = res.access_token
- this.refreshToken = res.refresh_token
- this.menuList = res.menus
- this.permissions = getButtonPermiss([], res.menus)
- resolve()
- }
- }).catch(error => {
- reject(error)
- })
- })
- },
- //tips:获取信息(不需要实现持久化 刷新浏览器 重新调用接口获取最新的信息才是正确的处理方式)
- RefreshInfo() {
- return new Promise((resolve, reject) => {
- let data = {
- refresh_token: getRefreshToken(),
- grant_type: "refresh_token",
- scope: "all"
- }
- login(data).then(res => {
- setToken(res.access_token)
- setRefreshToken(res.refresh_token)
- this.token = res.access_token
- this.userInfo = res.user
- this.refreshToken = res.refresh_token
- this.roles = res.roles
- this.menuList = res.menus
- this.permissions = getButtonPermiss([], res.menus)
- resolve(res)
- }).catch(error => {
- reject(error)
- })
- })
- },
- //宝信登录
- bxLogin(code) {
- console.log("传递过code", code)
- return new Promise((resolve, reject) => {
- login({
- code,
- source: VITE_BX_CLIENT_ID,
- grant_type: "social",
- scope: "all",
- }).then(res => {
- if (res.error_code == "400") {
- ElMessage({
- message: res.error_description,
- type: "warning"
- })
- reject("err")
- } else {
- setToken(res.access_token)
- setRefreshToken(res.refresh_token)
- this.userInfo = res.user
- this.token = res.access_token
- this.refreshToken = res.refresh_token
- this.menuList = res.menus
- this.permissions = getButtonPermiss([], res.menus)
- resolve()
- }
- })
- })
- },
- //边端登录
- edgeLogin(code) {
- return new Promise((resolve, reject) => {
- login({
- code,
- source: VITE_EDGE_CLIENT_ID,
- grant_type: "edge",
- scope: "all",
- }).then(res => {
- setToken(res.access_token)
- setRefreshToken(res.refresh_token)
- this.userInfo = res.user
- this.token = res.access_token
- this.refreshToken = res.refresh_token
- this.menuList = res.menus
- this.permissions = getButtonPermiss([], res.menus)
- resolve()
- })
- })
- },
- // 退出系统
- logOut() {
- return new Promise((resolve, reject) => {
- this.token = ""
- this.refreshToken = ""
- this.userInfo = {}
- this.menuList = []
- this.roles = []
- this.permissions = []
- removeToken()
- removeRefreshToken()
- resolve()
- })
- }
- }
- }
- )
- function getButtonPermiss(keys, List) {
- for (let li of List) {
- if (li.type == 2) {
- keys.push(li.code)
- }
- if (li.children && li.children.length > 0) {
- getButtonPermiss(keys, li.children)
- }
- }
- return keys
- }
|