- 新增忘记密码页面,支持邮箱找回和手机找回两种方式,包含验证码倒计时 - 添加密码强度和一致性校验,确保新密码安全性 - 开启对应路由 /forget,恢复已注释的忘记密码入口 - 新增发送短信验证码和邮箱验证码接口,适配未登录场景 - 新增重置密码接口,支持手机短信码及邮箱验证码方式 - 请求拦截器支持 X-Tenant-Skip 头,跳过租户信息注入,避免跨租户串扰 - 国际化新增忘记密码相关英文和中文文案 - 页面样式与登录页视觉风格一致,跨屏幕响应式布局优化
166 lines
4.3 KiB
TypeScript
166 lines
4.3 KiB
TypeScript
import request from '@/utils/request';
|
||
import type { ApiResult } from '@/api';
|
||
import type { User } from '@/api/system/user/model';
|
||
import type { UpdatePasswordParam, ResetPasswordParam, NoticeResult } from './model';
|
||
import { SERVER_API_URL } from '@/config/setting';
|
||
import { Company } from '@/api/system/company/model';
|
||
import { CmsWebsite } from '@/api/cms/cmsWebsite/model';
|
||
import { Menu } from '@/api/system/menu/model';
|
||
|
||
/**
|
||
* 获取当前登录的用户信息、菜单、权限、角色
|
||
*/
|
||
export async function getTenantInfo(): Promise<Company> {
|
||
const res = await request.get<ApiResult<Company>>(
|
||
SERVER_API_URL + '/auth/tenant'
|
||
);
|
||
if (res.data.code === 0 && res.data.data) {
|
||
return res.data.data;
|
||
}
|
||
return Promise.reject(new Error(res.data.message));
|
||
}
|
||
|
||
/**
|
||
* 获取网站信息 https://cms-api.websoft.top/api
|
||
*/
|
||
export async function getSiteInfo() {
|
||
const res = await request.get<ApiResult<CmsWebsite>>('/shop/getShopInfo', {
|
||
params: {}
|
||
});
|
||
if (res.data.code === 0 && res.data.data) {
|
||
return res.data.data;
|
||
}
|
||
return Promise.reject(new Error(res.data.message));
|
||
}
|
||
|
||
/**
|
||
* 获取当前登录的用户信息、菜单、权限、角色
|
||
*/
|
||
export async function getUserInfo(): Promise<User> {
|
||
const res = await request.get<ApiResult<User>>(SERVER_API_URL + '/auth/user');
|
||
if (res.data.code === 0 && res.data.data) {
|
||
return res.data.data;
|
||
}
|
||
return Promise.reject(new Error(res.data.message));
|
||
}
|
||
|
||
/**
|
||
* 修改当前登录用户信息
|
||
*/
|
||
export async function updateLoginUser(data: User) {
|
||
const res = await request.put<ApiResult<unknown>>(
|
||
SERVER_API_URL + '/auth/user',
|
||
data
|
||
);
|
||
if (res.data.code === 0) {
|
||
return res.data.message;
|
||
}
|
||
return Promise.reject(new Error(res.data.message));
|
||
}
|
||
|
||
/**
|
||
* 获取服务器时间(实时)
|
||
* @return
|
||
*/
|
||
export async function getServerTime() {
|
||
const res = await request.get<ApiResult<any>>('/cms/website/getServerTime');
|
||
if (res.data.code === 0 && res.data.data) {
|
||
return res.data.data;
|
||
}
|
||
return Promise.reject(new Error(res.data.message));
|
||
}
|
||
|
||
/**
|
||
* 获取未来7天的日期
|
||
* @return
|
||
*/
|
||
export async function getNext7day() {
|
||
const res = await request.get<ApiResult<any>>('/cms/website/getNext7day');
|
||
console.log('res.data.code: ', res.data.code);
|
||
if (res.data.code === 0 && res.data.data) {
|
||
return res.data.data;
|
||
}
|
||
return Promise.reject(new Error(res.data.message));
|
||
}
|
||
|
||
/**
|
||
* 向子模块传递token
|
||
* @param url
|
||
*/
|
||
export async function transferToken(url: string): Promise<string> {
|
||
const res = await request.get<ApiResult<unknown>>(url);
|
||
return Promise.reject(new Error(res.data.message));
|
||
}
|
||
|
||
/**
|
||
* 修改当前登录的用户密码
|
||
*/
|
||
export async function updatePassword(
|
||
data: UpdatePasswordParam
|
||
): Promise<string> {
|
||
const res = await request.put<ApiResult<unknown>>(
|
||
SERVER_API_URL + '/auth/password',
|
||
data
|
||
);
|
||
if (res.data.code === 0) {
|
||
return res.data.message ?? '修改成功';
|
||
}
|
||
return Promise.reject(new Error(res.data.message));
|
||
}
|
||
|
||
/**
|
||
* 找回/重置密码(未登录场景,登录页"忘记密码"入口)
|
||
* 后端对应 POST /resetPassword,支持手机或邮箱两种方式
|
||
*/
|
||
export async function resetPassword(
|
||
data: ResetPasswordParam
|
||
): Promise<string> {
|
||
const res = await request.post<ApiResult<unknown>>(
|
||
SERVER_API_URL + '/resetPassword',
|
||
data,
|
||
{ headers: { 'X-Tenant-Skip': '1' } }
|
||
);
|
||
if (res.data.code === 0) {
|
||
return res.data.message ?? '密码重置成功';
|
||
}
|
||
return Promise.reject(new Error(res.data.message));
|
||
}
|
||
|
||
/**
|
||
* 创建完整网站并初始化
|
||
*/
|
||
export async function createCmsWebSite(data: CmsWebsite) {
|
||
const res = await request.post<ApiResult<unknown>>(
|
||
SERVER_API_URL + '/superAdminRegister',
|
||
data
|
||
);
|
||
if (res.data.code === 0) {
|
||
return res.data.message;
|
||
}
|
||
return Promise.reject(new Error(res.data.message));
|
||
}
|
||
|
||
/**
|
||
* 租户初始化
|
||
*/
|
||
export async function initialization(roleId?: number) {
|
||
const res = await request.get<ApiResult<Menu[]>>(
|
||
SERVER_API_URL + '/system/tenant/role-menu/' + roleId
|
||
);
|
||
if (res.data.code === 0) {
|
||
return res.data.data;
|
||
}
|
||
return Promise.reject(new Error(res.data.message));
|
||
}
|
||
|
||
/**
|
||
* 查询未读通知
|
||
*/
|
||
export async function getUnreadNotice(): Promise<NoticeResult> {
|
||
return {
|
||
notice: [],
|
||
letter: [],
|
||
todo: []
|
||
};
|
||
}
|