Skip to content
Snippets Groups Projects
Commit af4d4a7a authored by Christian ZHENG's avatar Christian ZHENG
Browse files

chore(login): format

parent b226fa1d
Branches
Tags
2 merge requests!14feat: added mounted, .bashrc, .zshrc, added tests, added keycloak tests,!8feat(extension): login, open in devcontainer, automaticly save code, open briefing, publish extension
...@@ -11,13 +11,48 @@ export default class OAuth2DeviceFlowConnection { ...@@ -11,13 +11,48 @@ export default class OAuth2DeviceFlowConnection {
private _accessToken: string; private _accessToken: string;
private _refreshToken: string; private _refreshToken: string;
private _deviceAuthorizationRequestResponseData: DeviceAuthorizationRequestResponseData; private _deviceAuthorizationRequestResponseData: DeviceAuthorizationRequestResponseData;
constructor() { constructor() {
this._waitDuration = new WaitDuration([5_000, 5_000, 5_000, 10_000, 10_000, 10_000, 30_000, 30_000, 100_000]); this._waitDuration = new WaitDuration([5_000, 5_000, 5_000, 10_000, 10_000, 10_000, 30_000, 30_000, 100_000]);
this._accessToken = ''; this._accessToken = '';
this._refreshToken = ''; this._refreshToken = '';
this._deviceAuthorizationRequestResponseData = {}; this._deviceAuthorizationRequestResponseData = {};
} }
async createDeviceAuthorization(args: { url: string; body: string }): Promise<Response> {
public async start() {
const deviceAuthorizationRequestResponse: Response = await this.createDeviceAuthorization({
url: 'https://auth.dev.deadlock.io/auth/realms/Deadlock/protocol/openid-connect/auth/device',
body: (() => {
const params = new URLSearchParams();
params.append('client_id', 'deadlock-desktop');
return params.toString();
})(),
});
this._deviceAuthorizationRequestResponseData =
(await deviceAuthorizationRequestResponse.json()) as DeviceAuthorizationRequestResponseData;
console.log(this._deviceAuthorizationRequestResponseData);
try {
await this.createUserAuthentication({
url: 'https://auth.dev.deadlock.io/auth/realms/Deadlock/protocol/openid-connect/token',
body: (() => {
const params = new URLSearchParams();
params.append('response_type', 'token');
params.append('device_code', this._deviceAuthorizationRequestResponseData.device_code ?? '');
params.append('grant_type', 'urn:ietf:params:oauth:grant-type:device_code');
params.append('client_id', 'deadlock-desktop');
console.log('token query body: ', params.toString());
return params.toString();
})(),
});
console.log('access token: ', this._accessToken);
console.log('refresh token: ', this._refreshToken);
} catch (error: any) {
err(error);
return;
}
}
private async createDeviceAuthorization(args: { url: string; body: string }): Promise<Response> {
const { url, body } = args; const { url, body } = args;
return fetch(url, { return fetch(url, {
method: 'POST', method: 'POST',
...@@ -28,12 +63,13 @@ export default class OAuth2DeviceFlowConnection { ...@@ -28,12 +63,13 @@ export default class OAuth2DeviceFlowConnection {
agent: new https.Agent({ rejectUnauthorized: false }), // TODO: remove when SSL will work agent: new https.Agent({ rejectUnauthorized: false }), // TODO: remove when SSL will work
}); });
} }
/** /**
* *
* @param args API URL endpoint to ask for a new token & request form parameters * @param args API URL endpoint to ask for a new token & request form parameters
* @throw Error containing Keycloak API error_code * @throw Error containing Keycloak API error_code
*/ */
async createUserAuthentication(args: { url: string; body: string }) { private async createUserAuthentication(args: { url: string; body: string }) {
const { url, body } = args; const { url, body } = args;
let userAuthenticationRequestResponseCode = HttpStatusCode.I_AM_A_TEAPOT; let userAuthenticationRequestResponseCode = HttpStatusCode.I_AM_A_TEAPOT;
while (userAuthenticationRequestResponseCode !== HttpStatusCode.OK) { while (userAuthenticationRequestResponseCode !== HttpStatusCode.OK) {
...@@ -90,38 +126,6 @@ export default class OAuth2DeviceFlowConnection { ...@@ -90,38 +126,6 @@ export default class OAuth2DeviceFlowConnection {
} }
} }
} }
async start() {
const deviceAuthorizationRequestResponse: Response = await this.createDeviceAuthorization({
url: 'https://auth.dev.deadlock.io/auth/realms/Deadlock/protocol/openid-connect/auth/device',
body: (() => {
const params = new URLSearchParams();
params.append('client_id', 'deadlock-desktop');
return params.toString();
})(),
});
this._deviceAuthorizationRequestResponseData =
(await deviceAuthorizationRequestResponse.json()) as DeviceAuthorizationRequestResponseData;
console.log(this._deviceAuthorizationRequestResponseData);
try {
await this.createUserAuthentication({
url: 'https://auth.dev.deadlock.io/auth/realms/Deadlock/protocol/openid-connect/token',
body: (() => {
const params = new URLSearchParams();
params.append('response_type', 'token');
params.append('device_code', this._deviceAuthorizationRequestResponseData.device_code ?? '');
params.append('grant_type', 'urn:ietf:params:oauth:grant-type:device_code');
params.append('client_id', 'deadlock-desktop');
console.log('token query body: ', params.toString());
return params.toString();
})(),
});
console.log('access token: ', this._accessToken);
console.log('refresh token: ', this._refreshToken);
} catch (error: any) {
err(error);
return;
}
}
} }
export interface DeviceAuthorizationRequestResponseData { export interface DeviceAuthorizationRequestResponseData {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment