-
Notifications
You must be signed in to change notification settings - Fork 0
/
LoginCredentials.ts
28 lines (23 loc) · 1.01 KB
/
LoginCredentials.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import { BaseUtils } from 'tdp_core';
import { SecurityStoreGeneratedRest } from '../rest';
export class LoginCredentials {
static async create(_menu: HTMLElement, dialog: HTMLElement) {
// generate random username
const cookieValue = document.cookie.replace(/(?:(?:^|.*;\s*)randomCredentials\s*=\s*([^;]*).*$)|^.*$/, '$1');
let username;
let password;
if (cookieValue) {
// restore old value
[username, password] = cookieValue.split('@');
} else {
// request new username and generate new password
username = await SecurityStoreGeneratedRest.getGeneratedUsername();
password = BaseUtils.randomId(6);
}
// store for next time
const maxAge = 2 * 7 * 24 * 60 * 60; // 2 weeks in seconds
document.cookie = `randomCredentials=${username}@${password};max-age=${maxAge};SameSite=Strict`;
(<HTMLInputElement>dialog.querySelector('input#login_username')).value = username;
(<HTMLInputElement>dialog.querySelector('input#login_password')).value = password;
}
}