Add response codes to login result

pull/81/head
MillenniumEarl 2021-03-05 11:20:46 +01:00
parent 40d13f25de
commit 48885a8604
3 changed files with 43 additions and 6 deletions

View File

@ -98,7 +98,11 @@ export async function login(
await fetchPlatformData();
shared.setIsLogged(true);
return new LoginResult(true, `${username} already authenticated (session)`);
return new LoginResult(
true,
LoginResult.ALREADY_AUTHENTICATED,
`${username} already authenticated (session)`
);
}
// Creating credentials and fetch unique platform token

View File

@ -9,17 +9,37 @@
* Object obtained in response to an attempt to login to the portal.
*/
export default class LoginResult {
//#region Login result codes
static REQUIRE_2FA = 100;
static AUTH_SUCCESSFUL = 200;
static AUTH_SUCCESSFUL_2FA = 201;
static ALREADY_AUTHENTICATED = 202;
static UNKNOWN_ERROR = 400;
static INCORRECT_CREDENTIALS = 401;
static INCORRECT_2FA_CODE = 402;
//#endregion Login result codes
//#region Properties
/**
* Result of the login operation
*/
success: boolean;
readonly success: boolean;
/**
* Code associated with the result of the login operation.
*/
readonly code: number;
/**
* Login response message
*/
message: string;
readonly message: string;
constructor(success: boolean, message: string) {
//#endregion Properties
constructor(success: boolean, code: number, message?: string) {
this.success = success;
this.code = code;
this.message = message;
}
}

View File

@ -129,6 +129,7 @@ export async function authenticate(
);
authResult = new LoginResult(
false,
LoginResult.UNKNOWN_ERROR,
`Error ${e.message} while authenticating`
);
}
@ -169,7 +170,13 @@ export async function send2faCode(
const message = result
? "Authentication successful"
: r.data.errors.join(",");
return new LoginResult(result, message);
const code = result
? LoginResult.AUTH_SUCCESSFUL_2FA
: message ===
"The two-step verification value could not be confirmed. Please try again"
? LoginResult.INCORRECT_2FA_CODE
: LoginResult.UNKNOWN_ERROR;
return new LoginResult(result, code, message as string);
});
}
@ -358,6 +365,7 @@ function manageLoginPOSTResponse(response: AxiosResponse<any>) {
if (response.config.url.startsWith(urls.F95_2FA_LOGIN)) {
return new LoginResult(
false,
LoginResult.REQUIRE_2FA,
"Two-factor authentication is needed to continue"
);
}
@ -371,7 +379,12 @@ function manageLoginPOSTResponse(response: AxiosResponse<any>) {
// Return the result of the authentication
const result = errorMessage.trim() === "";
const message = result ? "Authentication successful" : errorMessage;
return new LoginResult(result, message);
const code = result
? LoginResult.AUTH_SUCCESSFUL
: message === "Incorrect password. Please try again."
? LoginResult.INCORRECT_CREDENTIALS
: LoginResult.UNKNOWN_ERROR;
return new LoginResult(result, code, message);
}
//#endregion