89 lines
3.3 KiB
JavaScript
89 lines
3.3 KiB
JavaScript
class AuthAPI {
|
|
async validate_username(username) {
|
|
const result = await axios.post('/api/v1/auth/validate/username', { username })
|
|
return result && result.data && result.data.data && result.data.data.is_valid
|
|
}
|
|
|
|
async validate_email(email) {
|
|
const result = await axios.post('/api/v1/auth/validate/email', { email })
|
|
return result && result.data && result.data.data && result.data.data.is_valid
|
|
}
|
|
|
|
async username_taken(username) {
|
|
const result = await axios.post('/api/v1/auth/validate/user_exists', { username })
|
|
return result && result.data && result.data.data && result.data.data.username_taken
|
|
}
|
|
|
|
async email_taken(email) {
|
|
const result = await axios.post('/api/v1/auth/validate/user_exists', { email })
|
|
return result && result.data && result.data.data && result.data.data.email_taken
|
|
}
|
|
|
|
async attempt({ username, password, create_session, ...others }) {
|
|
try {
|
|
const result = await axios.post('/api/v1/auth/attempt', {
|
|
username, password, create_session, ...others
|
|
})
|
|
|
|
if ( result && result.data && result.data.data && result.data.data ) {
|
|
return result.data.data
|
|
}
|
|
} catch (e) {}
|
|
|
|
return { success: false }
|
|
}
|
|
|
|
async mfa_generate() {
|
|
const result = await axios.post('/api/v1/auth/mfa/generate')
|
|
return result && result.data && result.data.data
|
|
}
|
|
|
|
async mfa_attempt(verify_code) {
|
|
const result = await axios.post('/api/v1/auth/mfa/attempt', { verify_code })
|
|
return result && result.data && result.data.data
|
|
}
|
|
|
|
async mfa_enable() {
|
|
const result = await axios.post('/api/v1/auth/mfa/enable')
|
|
return result && result.data && result.data.data && result.data.data.success && result.data.data.mfa_enabled
|
|
}
|
|
|
|
async mfa_disable() {
|
|
const result = await axios.post('/api/v1/auth/mfa/disable')
|
|
return result && result.data && result.data.data && result.data.data.success && !result.data.data.mfa_enabled
|
|
}
|
|
|
|
async has_mfa() {
|
|
const result = await axios.get('/api/v1/auth/mfa/enable/date')
|
|
if ( result && result.data && result.data.data ) return result.data.data
|
|
}
|
|
|
|
async app_passwords() {
|
|
const result = await axios.get('/api/v1/password/app_passwords')
|
|
if ( result && result.data && Array.isArray(result.data.data) ) return result.data.data
|
|
}
|
|
|
|
async create_app_password(name) {
|
|
const result = await axios.post('/api/v1/password/app_passwords', { name })
|
|
if ( result && result.data && result.data.data ) return result.data.data
|
|
}
|
|
|
|
async get_authenticated_user() {
|
|
const result = await axios.get('/api/v1/auth/authenticated_user')
|
|
if ( result && result.data && result.data.data && result.data.data.authenticated )
|
|
return result.data.data.uid
|
|
}
|
|
|
|
async delete_app_password(uuid) {
|
|
await axios.delete(`/api/v1/password/app_passwords/${uuid}`)
|
|
}
|
|
|
|
async register_user({ first_name, last_name, uid, email }) {
|
|
const result = await axios.post('/api/v1/auth/registration', { first_name, last_name, uid, email })
|
|
if ( result && result.data && result.data.data ) return result.data.data
|
|
}
|
|
}
|
|
|
|
const auth_api = new AuthAPI()
|
|
export { auth_api }
|