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
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 });
|
|
}
|
|
|