UnisKB/ui/src/api/user.ts

173 lines
4.2 KiB
TypeScript
Raw Normal View History

2024-07-11 11:51:28 +00:00
import {Result} from '@/request/Result'
import {get, post} from '@/request/index'
2023-09-15 09:40:35 +00:00
import type {
2024-07-11 11:51:28 +00:00
LoginRequest,
RegisterRequest,
CheckCodeRequest,
ResetPasswordRequest,
User,
ResetCurrentUserPasswordRequest
2023-10-20 03:26:14 +00:00
} from '@/api/type/user'
2024-07-11 11:51:28 +00:00
import type {Ref} from 'vue'
2023-09-15 09:40:35 +00:00
/**
*
2024-07-11 11:51:28 +00:00
* @param auth_type
2023-09-15 09:40:35 +00:00
* @param request
* @param loading
* @returns
*/
2024-07-11 11:51:28 +00:00
const login: (auth_type: string, request: LoginRequest, loading?: Ref<boolean>) => Promise<Result<string>> = (
auth_type,
request,
loading
2023-09-15 09:40:35 +00:00
) => {
2024-07-11 11:51:28 +00:00
if (auth_type !== '') {
return post(`/${auth_type}/login`, request, undefined, loading)
}
return post('/user/login', request, undefined, loading)
2023-09-15 09:40:35 +00:00
}
/**
*
* @param loading
* @returns
*/
const logout: (loading?: Ref<boolean>) => Promise<Result<boolean>> = (loading) => {
2024-07-11 11:51:28 +00:00
return post('/user/logout', undefined, undefined, loading)
2023-09-15 09:40:35 +00:00
}
/**
*
* @param request
* @param loading
* @returns
*/
const register: (request: RegisterRequest, loading?: Ref<boolean>) => Promise<Result<string>> = (
2024-07-11 11:51:28 +00:00
request,
loading
2023-09-15 09:40:35 +00:00
) => {
2024-07-11 11:51:28 +00:00
return post('/user/register', request, undefined, loading)
2023-09-15 09:40:35 +00:00
}
/**
*
* @param request
* @param loading
* @returns
*/
const checkCode: (request: CheckCodeRequest, loading?: Ref<boolean>) => Promise<Result<boolean>> = (
2024-07-11 11:51:28 +00:00
request,
loading
2023-09-15 09:40:35 +00:00
) => {
2024-07-11 11:51:28 +00:00
return post('/user/check_code', request, undefined, loading)
2023-09-15 09:40:35 +00:00
}
/**
*
* @param email
* @param loading
* @returns
*/
const sendEmit: (
2024-07-11 11:51:28 +00:00
email: string,
type: 'register' | 'reset_password',
loading?: Ref<boolean>
2023-09-15 09:40:35 +00:00
) => Promise<Result<boolean>> = (email, type, loading) => {
2024-07-11 11:51:28 +00:00
return post('/user/send_email', {email, type}, undefined, loading)
2023-09-15 09:40:35 +00:00
}
/**
*
* @param loading
* @returns
*/
const sendEmailToCurrent: (loading?: Ref<boolean>) => Promise<Result<boolean>> = (loading) => {
2024-07-11 11:51:28 +00:00
return post('/user/current/send_email', undefined, undefined, loading)
2023-09-15 09:40:35 +00:00
}
/**
*
* @param request
* @param loading
* @returns
*/
const resetCurrentUserPassword: (
2024-07-11 11:51:28 +00:00
request: ResetCurrentUserPasswordRequest,
loading?: Ref<boolean>
2023-09-15 09:40:35 +00:00
) => Promise<Result<boolean>> = (request, loading) => {
2024-07-11 11:51:28 +00:00
return post('/user/current/reset_password', request, undefined, loading)
2023-09-15 09:40:35 +00:00
}
/**
*
* @param loading
* @returns
*/
const profile: (loading?: Ref<boolean>) => Promise<Result<User>> = (loading) => {
2024-07-11 11:51:28 +00:00
return get('/user', undefined, loading)
2023-09-15 09:40:35 +00:00
}
/**
*
* @param request
* @param loading
* @returns
*/
const resetPassword: (
2024-07-11 11:51:28 +00:00
request: ResetPasswordRequest,
loading?: Ref<boolean>
2023-09-15 09:40:35 +00:00
) => Promise<Result<boolean>> = (request, loading) => {
2024-07-11 11:51:28 +00:00
return post('/user/re_password', request, undefined, loading)
2023-09-15 09:40:35 +00:00
}
2023-12-05 08:30:22 +00:00
/**
*
* @param loading
* email_or_username
*/
const getUserList: (email_or_username: string, loading?: Ref<boolean>) => Promise<Result<any>> = (
2024-07-11 11:51:28 +00:00
email_or_username,
loading
2023-12-05 08:30:22 +00:00
) => {
2024-07-11 11:51:28 +00:00
return get('/user/list', {email_or_username}, loading)
2023-12-05 08:30:22 +00:00
}
2024-03-21 08:26:03 +00:00
/**
2024-07-11 10:28:01 +00:00
* profile
2024-03-21 08:26:03 +00:00
*/
2024-07-11 10:28:01 +00:00
const getProfile: (loading?: Ref<boolean>) => Promise<Result<any>> = (loading) => {
2024-07-11 11:51:28 +00:00
return get('/profile', undefined, loading)
2024-03-21 08:26:03 +00:00
}
/**
*
* @param valid_type : application|dataset|user
* @param valid_count : 5 | 50 | 2
*/
const getValid: (
2024-07-11 11:51:28 +00:00
valid_type: string,
valid_count: number,
loading?: Ref<boolean>
) => Promise<Result<any>> = (valid_type, valid_count, loading) => {
2024-07-11 11:51:28 +00:00
return get(`/valid/${valid_type}/${valid_count}`, undefined, loading)
}
/**
*
*/
const getAuthType: (loading?: Ref<boolean>) => Promise<Result<any>> = (loading) => {
return get('auth/types', undefined, loading)
}
2023-09-15 09:40:35 +00:00
export default {
2024-07-11 11:51:28 +00:00
login,
register,
sendEmit,
checkCode,
profile,
resetPassword,
sendEmailToCurrent,
resetCurrentUserPassword,
logout,
getUserList,
getProfile,
getValid,
getAuthType
2023-09-15 09:40:35 +00:00
}