Files
guilixu-admin/src/api/layout/index.ts
赵忠林 d6b56d99ce feat(passport): 新增忘记密码功能及相关接口
- 新增忘记密码页面,支持邮箱找回和手机找回两种方式,包含验证码倒计时
- 添加密码强度和一致性校验,确保新密码安全性
- 开启对应路由 /forget,恢复已注释的忘记密码入口
- 新增发送短信验证码和邮箱验证码接口,适配未登录场景
- 新增重置密码接口,支持手机短信码及邮箱验证码方式
- 请求拦截器支持 X-Tenant-Skip 头,跳过租户信息注入,避免跨租户串扰
- 国际化新增忘记密码相关英文和中文文案
- 页面样式与登录页视觉风格一致,跨屏幕响应式布局优化
2026-07-24 22:07:53 +08:00

166 lines
4.3 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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: []
};
}