Fichiers
aman-frontend/src/services/auth.ts
2022-11-05 00:52:18 +01:00

86 lignes
2.4 KiB
TypeScript

import axios from 'axios';
import { Configuration } from './configuration';
import { Session } from './session';
import {
BackendReturnStatus,
DefaultUser,
UserBackend,
User,
} from '../types';
export class Auth {
static triggerLoginFlow(): void {
const url = [
Configuration.vatsim.authorizeUrl,
`?client_id=${Configuration.vatsim.clientId}`,
`&redirect_uri=${Configuration.resourceServer}/auth/vatsim`,
`&response_type=code`,
`&scope=full_name+vatsim_details`,
`&approval_prompt=auto`,
].join('');
window.location.replace(url);
}
static async tokenIsValid(): Promise<BackendReturnStatus> {
const token = Session.bearerToken();
if (!token) return BackendReturnStatus.Unauthorized;
return axios
.get<void>(`${Configuration.resourceServer}/auth/validate`, {
headers: {
Authorization: `Bearer ${token}`,
},
})
.then(() => BackendReturnStatus.Ok)
.catch((err) => {
if (err.response.status === 401) return BackendReturnStatus.Unauthorized;
return BackendReturnStatus.Failure;
});
}
static async user(): Promise<UserBackend> {
const token = Session.bearerToken();
if (!token) {
return {
status: BackendReturnStatus.Unauthorized,
user: DefaultUser,
};
}
return axios
.get<User>(`${Configuration.resourceServer}/auth/user`, {
headers: {
Authorization: `Bearer ${token}`,
},
})
.then((response) => {
return {
status: BackendReturnStatus.Ok,
user: response.data,
};
})
.catch((err) => {
return {
status: err.response.status === 401 ? BackendReturnStatus.Unauthorized : BackendReturnStatus.Failure,
user: DefaultUser,
};
});
}
static async refreshRadarScopeKey(): Promise<BackendReturnStatus> {
const token = Session.bearerToken();
if (!token) return BackendReturnStatus.Unauthorized;
return axios
.patch<void>(`${Configuration.resourceServer}/auth/refreshRadarScopeKey`, {
headers: {
Authorization: `Bearer ${token}`,
},
})
.then(() => BackendReturnStatus.Ok)
.catch((err) => {
return err.response.status === 401 ? BackendReturnStatus.Unauthorized : BackendReturnStatus.Failure;
});
}
}