bdd30f0a88
- deps.py: _create_redis_client 增加同步 ping 校验,Redis 不可达时正确降级为内存模式 - main.py: lifespan 复用 deps 的 UserStore 单例,避免 admin 与 API 请求实例不一致 - 前端: 强制改密弹窗(must_change_password 用户)、兼容新旧登录返回格式、markPasswordChanged - 新增 NAS SSH 部署脚本与批处理测试;gitignore 前端构建产物
78 lines
2.1 KiB
JavaScript
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
|
|
})
|
|
}
|