feat(miniprogram): load menu-codes into user store.

Cache menuAll and menuCodes from /web/auth/menu-codes for workbench filtering.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
wuzilongandCursor committed 2026-09-11 22:43:37 +08:00
1 parent 106ace1ea9
commit d3de3f5c45
1 file changed
+37 -1
+37 -1
View File
@@ -9,6 +9,8 @@ export const useUserStore = defineStore('user', () => {
const refreshToken = ref('')
const userInfo = ref(null)
const isLoading = ref(false)
const menuAll = ref(false)
const menuCodes = ref([])
function normalizeUserInfo(raw) {
if (!raw || typeof raw !== 'object') return raw || null
@@ -68,6 +70,34 @@ export const useUserStore = defineStore('user', () => {
uni.setStorageSync(USER_INFO_KEY, userInfo.value)
}
async function fetchMenuCodes() {
if (!token.value || !String(token.value).trim()) {
menuAll.value = false
menuCodes.value = []
return
}
try {
const res = await request({
url: AUTH_API.MENU_CODES,
method: 'GET'
})
const result = parseResponseJson(res)
if (!result || result.code !== 200 || !result.data) {
menuAll.value = false
menuCodes.value = []
return
}
const data = result.data
menuAll.value = !!(data.all || data.isSuperAdmin)
menuCodes.value = Array.isArray(data.menuCodes)
? data.menuCodes.map((c) => String(c || '').trim()).filter(Boolean)
: []
} catch {
menuAll.value = false
menuCodes.value = []
}
}
async function login(params) {
isLoading.value = true
try {
@@ -84,6 +114,7 @@ export const useUserStore = defineStore('user', () => {
refreshToken: result.data.refreshToken,
userInfo: result.data.userInfo
})
await fetchMenuCodes()
return true
}
uni.showToast({ title: (result && result.message) || '登录失败', icon: 'none' })
@@ -106,6 +137,8 @@ export const useUserStore = defineStore('user', () => {
uni.removeStorageSync(TOKEN_KEY)
uni.removeStorageSync(REFRESH_TOKEN_KEY)
uni.removeStorageSync(USER_INFO_KEY)
menuAll.value = false
menuCodes.value = []
}
async function logout() {
@@ -158,6 +191,8 @@ export const useUserStore = defineStore('user', () => {
refreshToken,
userInfo,
isLoading,
menuAll,
menuCodes,
isLoggedIn,
userRole,
homePath,
@@ -167,6 +202,7 @@ export const useUserStore = defineStore('user', () => {
clearLoginInfo,
navigateToHome,
updateUserInfo,
refreshUserInfo
refreshUserInfo,
fetchMenuCodes
}
})