Files
QMDSearch/frontend/src/api/auth.js
T
kplam bdd30f0a88 fix: 修复会话鉴权「登录后 token 无效」并补齐 NAS 部署流程
- deps.py: _create_redis_client 增加同步 ping 校验,Redis 不可达时正确降级为内存模式
- main.py: lifespan 复用 deps 的 UserStore 单例,避免 admin 与 API 请求实例不一致
- 前端: 强制改密弹窗(must_change_password 用户)、兼容新旧登录返回格式、markPasswordChanged
- 新增 NAS SSH 部署脚本与批处理测试;gitignore 前端构建产物
2026-08-04 11:38:28 +08:00

78 lines
2.1 KiB
JavaScript

import http from './client'
/**
* 用户名密码登录
* @param {string} username
* @param {string} password
* @returns {Promise<{access_token:string, expires_in:number, user:{username:string, role:string, created_at:string}}>}
*/
export function login(username, password) {
return http.post('/api/v1/auth/login', { username, password })
}
/**
* 获取当前登录用户信息
* @returns {Promise<{username:string, role:string, created_at:string}>}
*/
export function me() {
return http.get('/api/v1/auth/me')
}
/**
* 列出全部用户(admin 专用)
* @returns {Promise<Array<{username:string, role:string, enabled:boolean, must_change_password:boolean, created_at:string}>>}
*/
export function listUsers() {
return http.get('/api/v1/auth/users')
}
/**
* 创建用户(admin 专用)
* @param {string} username
* @param {string} password
* @param {'admin'|'user'} [role='user']
*/
export function createUser(username, password, role = 'user') {
return http.post('/api/v1/auth/users', { username, password, role })
}
/**
* 更新用户角色 / 启用状态(admin 专用,至少传一项)
* @param {string} username
* @param {{ role?: 'admin'|'user', enabled?: boolean }} payload
*/
export function updateUser(username, payload) {
return http.patch(`/api/v1/auth/users/${encodeURIComponent(username)}`, payload)
}
/**
* 重置指定用户密码(admin 专用)
* @param {string} username
* @param {string} newPassword
*/
export function resetPassword(username, newPassword) {
return http.post(`/api/v1/auth/users/${encodeURIComponent(username)}/password`, {
new_password: newPassword
})
}
/**
* 删除用户(admin 专用)
* @param {string} username
*/
export function deleteUser(username) {
return http.delete(`/api/v1/auth/users/${encodeURIComponent(username)}`)
}
/**
* 修改自己的密码(当前登录用户)
* @param {string} oldPassword
* @param {string} newPassword
*/
export function changeMyPassword(oldPassword, newPassword) {
return http.post('/api/v1/auth/password', {
old_password: oldPassword,
new_password: newPassword
})
}