feat(admin): 新增模板管理功能并完善用户认证

- 新增模板管理模块,包含模板列表和详情页面
- 重构用户认证逻辑,支持用户ID存储和API调用
- 新增排行榜API接口和类型定义
- 更新环境配置,添加开发环境配置
- 优化表格操作钩子,增强类型安全性
- 新增文件上传工具类和验证工具函数
- 更新路由配置,支持模板详情页面导航
- 修复登录表单默认值问题
This commit is contained in:
2026-01-27 09:48:42 +08:00
parent 264f600250
commit 5a48a65ef8
56 changed files with 2907 additions and 434 deletions

View File

@ -9,7 +9,7 @@ import { fetchGetUserInfo, fetchLogin } from '@/service/api'
import { localStg } from '@/utils/storage'
import { useRouteStore } from '../route'
import { useTabStore } from '../tab'
import { clearAuthStorage, getToken } from './shared'
import { clearAuthStorage, getToken, getUserId } from './shared'
export const useAuthStore = defineStore(SetupStoreId.Auth, () => {
const route = useRoute()
@ -98,7 +98,6 @@ export const useAuthStore = defineStore(SetupStoreId.Auth, () => {
*/
async function login(userName: string, password: string, redirect = true) {
startLoading()
const { data: loginToken, error } = await fetchLogin(userName, password)
if (!error) {
@ -133,9 +132,10 @@ export const useAuthStore = defineStore(SetupStoreId.Auth, () => {
// 1. stored in the localStorage, the later requests need it in headers
localStg.set('token', loginToken.token)
localStg.set('refreshToken', loginToken.refreshToken)
localStg.set('userId', loginToken.id)
// 2. get user info
const pass = await getUserInfo()
const pass = await getUserInfo(loginToken.id)
if (pass) {
token.value = loginToken.token
@ -146,8 +146,8 @@ export const useAuthStore = defineStore(SetupStoreId.Auth, () => {
return false
}
async function getUserInfo() {
const { data: info, error } = await fetchGetUserInfo()
async function getUserInfo(userId: number) {
const { data: info, error } = await fetchGetUserInfo(userId)
if (!error) {
// update store
@ -161,9 +161,10 @@ export const useAuthStore = defineStore(SetupStoreId.Auth, () => {
async function initUserInfo() {
const hasToken = getToken()
const userId = getUserId()
if (hasToken) {
const pass = await getUserInfo()
if (hasToken && userId) {
const pass = await getUserInfo(userId)
if (!pass) {
resetStore()

View File

@ -5,8 +5,14 @@ export function getToken() {
return localStg.get('token') || ''
}
export function getUserId() {
const userId = localStg.get('userId')
return userId || 0
}
/** Clear auth storage */
export function clearAuthStorage() {
localStg.remove('token')
localStg.remove('refreshToken')
localStg.remove('userId')
}