Merge branch 'feat/inda-383-daily-stat' into 'main'
[ProtonMail-WebClient.git] / packages / srp / lib / getAuthVersionWithFallback.ts
blob459c42f7a3a0fe5c0251918be7e4245ba700c3df
1 import { AUTH_FALLBACK_VERSION } from './constants';
2 import type { AuthVersion } from './interface';
3 import { cleanUsername } from './utils/username';
5 /**
6  * Get the next auth version to use and if it's the last attempt.
7  */
8 export default (
9     { Version }: { Version: AuthVersion },
10     username: string,
11     lastAuthVersion?: AuthVersion
12 ): { version: AuthVersion; done: boolean } => {
13     if (Version !== 0) {
14         return {
15             version: Version,
16             done: true,
17         };
18     }
20     if (typeof lastAuthVersion === 'undefined') {
21         return {
22             version: AUTH_FALLBACK_VERSION,
23             done: false,
24         };
25     }
27     if (lastAuthVersion === 2 && cleanUsername(username) !== username.toLowerCase()) {
28         return {
29             version: 1,
30             done: false,
31         };
32     }
34     if (lastAuthVersion === 1 || lastAuthVersion === 2) {
35         return {
36             version: 0,
37             done: true,
38         };
39     }
41     throw new Error('Can not provide any other auth version');