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(); await fetchPlatformData();
shared.setIsLogged(true); 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 // 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. * Object obtained in response to an attempt to login to the portal.
*/ */
export default class LoginResult { 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 * 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 * 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.success = success;
this.code = code;
this.message = message; this.message = message;
} }
} }

View File

@ -129,6 +129,7 @@ export async function authenticate(
); );
authResult = new LoginResult( authResult = new LoginResult(
false, false,
LoginResult.UNKNOWN_ERROR,
`Error ${e.message} while authenticating` `Error ${e.message} while authenticating`
); );
} }
@ -169,7 +170,13 @@ export async function send2faCode(
const message = result const message = result
? "Authentication successful" ? "Authentication successful"
: r.data.errors.join(","); : 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)) { if (response.config.url.startsWith(urls.F95_2FA_LOGIN)) {
return new LoginResult( return new LoginResult(
false, false,
LoginResult.REQUIRE_2FA,
"Two-factor authentication is needed to continue" "Two-factor authentication is needed to continue"
); );
} }
@ -371,7 +379,12 @@ function manageLoginPOSTResponse(response: AxiosResponse<any>) {
// Return the result of the authentication // Return the result of the authentication
const result = errorMessage.trim() === ""; const result = errorMessage.trim() === "";
const message = result ? "Authentication successful" : errorMessage; 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 //#endregion