feat: 平台管理员端 — SUPER_ADMIN 角色 + 企业租户管理 + 用户管理 + 数据总览

This commit is contained in:
selfrelease
2026-07-29 11:49:48 +08:00
parent fb36b10402
commit 987a4678f7
17 changed files with 1744 additions and 14 deletions
+37
View File
@@ -42,6 +42,43 @@ export async function register(orgName: string, phone: string, password: string)
}
}
/**
* 平台管理员登录(仅 SUPER_ADMIN 角色可登录平台端)
*/
export async function platformLogin(phone: string, password: string) {
const user = await prisma.user.findUnique({ where: { phone } })
if (!user) {
throw { code: 'NOT_FOUND', message: '手机号或密码错误' }
}
const valid = await bcrypt.compare(password, user.passwordHash)
if (!valid) {
throw { code: 'AUTH_FAILED', message: '手机号或密码错误' }
}
if (user.role !== 'SUPER_ADMIN') {
throw { code: 'FORBIDDEN', message: '该账号无平台管理权限' }
}
if (user.disabled) {
throw { code: 'ACCOUNT_DISABLED', message: '该账号已被禁用' }
}
await prisma.user.update({
where: { id: user.id },
data: { lastLoginAt: new Date() },
})
const accessToken = signAccessToken({ id: user.id, orgId: user.orgId, role: user.role })
const refreshToken = signRefreshToken({ id: user.id, orgId: user.orgId, role: user.role })
return {
user: { id: user.id, orgId: user.orgId, name: user.name, phone: user.phone, role: user.role },
accessToken,
refreshToken,
}
}
export async function login(phone: string, password: string) {
const user = await prisma.user.findUnique({ where: { phone } })
if (!user) {