这是基于vue-vben-admin 模板适用于abp Vnext的前端管理项目
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

116 lines
2.8 KiB

import { defHttp } from '/@/utils/http/axios';
import {
LoginParams,
LoginResultModel,
GetUserInfoModel,
LoginByPhoneParams,
} from './model/userModel';
import { useGlobSetting } from '/@/hooks/setting';
import { ContentTypeEnum } from '/@/enums/httpEnum';
import { ErrorMessageMode } from '/#/axios';
import { t } from '/@/hooks/web/useI18n';
import { useMessage } from '/@/hooks/web/useMessage';
import { useUserStoreWithOut } from '/@/store/modules/user';
const { createErrorModal } = useMessage();
enum Api {
Login = '/connect/token',
Logout = '/logout',
GetUserInfo = '/connect/userinfo',
GetPermCode = '/getPermCode',
}
/**
* @description: user login api
*/
export function loginApi(params: LoginParams, mode: ErrorMessageMode = 'modal') {
const setting = useGlobSetting();
const tokenParams = {
client_id: setting.clientId,
client_secret: setting.clientSecret,
grant_type: 'password',
username: params.username,
password: params.password,
scope: 'openid email address phone profile offline_access lingyun-abp-application',
TwoFactorProvider: params.twoFactorProvider,
TwoFactorCode: params.twoFactorCode,
};
return defHttp.post<LoginResultModel>(
{
url: Api.Login,
params: tokenParams,
headers: {
'Content-Type': ContentTypeEnum.FORM_URLENCODED,
},
},
{
errorMessageMode: mode,
apiUrl: '/connect',
withToken: false,
},
);
}
/**
* 手机登录
* @param params
* @param mode
* @returns
*/
export function loginPhoneApi(params: LoginByPhoneParams, mode: ErrorMessageMode = 'modal') {
const setting = useGlobSetting();
const tokenParams = {
client_id: setting.clientId,
client_secret: setting.clientSecret,
grant_type: 'phone_verify',
phone_number: params.phoneNumber,
phone_verify_code: params.code,
};
return defHttp.post<LoginResultModel>(
{
url: Api.Login,
params: tokenParams,
headers: {
'Content-Type': ContentTypeEnum.FORM_URLENCODED,
},
},
{
errorMessageMode: mode,
apiUrl: '/connect',
},
);
}
/**
* @description: getUserInfo
*/
export function getUserInfo() {
return defHttp.get<GetUserInfoModel>(
{
url: Api.GetUserInfo,
},
{
errorMessageMode: 'none',
apiUrl: '/connect',
}).catch(() => {
const userStore = useUserStoreWithOut();
createErrorModal({
title: t('sys.api.errorTip'),
content: t('sys.api.getUserInfoErrorMessage'),
onOk: () => {
userStore.setToken(undefined);
userStore.logout(true);
}
});
});
}
export function getPermCode() {
return defHttp.get<string[]>({ url: Api.GetPermCode });
}
export function doLogout() {
return defHttp.get({ url: Api.Logout });
}