86 lignes
2.4 KiB
TypeScript
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;
|
|
});
|
|
}
|
|
}
|