accounts: anthentifyView: add: enter button

This commit is contained in:
starnakin 2024-02-13 12:53:38 +01:00
parent da0b8e4edb
commit 0e9bfb1fed
2 changed files with 34 additions and 26 deletions

View File

@ -16,18 +16,15 @@ class Account
/** /**
* @param {String} username * @param {String} username
* @param {String} password * @param {String} password
* @returns {?Promise<Object>} * @returns {Response}
*/ */
async create(username, password) async create(username, password)
{ {
let response = await this.client._post("/api/accounts/register", {username: username, password: password}); let response = await this.client._post("/api/accounts/register", {username: username, password: password});
let response_data = await response.json()
if (response_data == "user created") if (response.status === 201)
{
await this.client._update_logged(true); await this.client._update_logged(true);
return null;
}
return response_data return response_data
} }

View File

@ -25,17 +25,26 @@ export default class extends AbstractNonAuthentifiedView
this.update_mode(new_mode); this.update_mode(new_mode);
document.getElementById("button").onclick = this.authentificate.bind(this); document.getElementById("button").onclick = this.authentificate.bind(this);
let username_input = document.getElementById('username-input'),
password_input = document.getElementById('password-input');
[username_input, password_input].forEach(input => {
input.addEventListener('keydown', async ev => {
if (ev.key === 'Enter')
await this.authentificate.bind(this)()
});
});
} }
/** /**
* Check if field is normal * Check if field is normal
* @returns {null | Object<String>} * @param username {String}
* @param password {String}
* @returns {Boolean}
*/ */
basic_verif() basic_verif(username, password)
{ {
let username = document.getElementById('username-input').value;
let password = document.getElementById('password-input').value;
if (username === '') if (username === '')
document.getElementById('username').innerHTML = lang.get('errorEmptyField', 'This field may not be blank.'); document.getElementById('username').innerHTML = lang.get('errorEmptyField', 'This field may not be blank.');
@ -43,9 +52,9 @@ export default class extends AbstractNonAuthentifiedView
document.getElementById('password').innerHTML = lang.get('errorEmptyField', 'This field may not be blank.'); document.getElementById('password').innerHTML = lang.get('errorEmptyField', 'This field may not be blank.');
if (username === '' || password === '') if (username === '' || password === '')
return null; return false;
return { username, password }; return true
} }
/** /**
@ -102,29 +111,31 @@ export default class extends AbstractNonAuthentifiedView
*/ */
async authentificate() async authentificate()
{ {
let ret = this.basic_verif(); let username = document.getElementById("username-input").value,
password = document.getElementById("password-input").value;
if (ret === null) if (!this.basic_verif())
return return;
let {username, password} = ret; let response;
let response_data;
if (this.current_mode === "register") if (this.current_mode === "register")
response_data = await client.account.create(username, password) response = await client.account.create(username, password)
else else
response_data = await client.login(username, password); response = await client.login(username, password);
if (response_data !== null) if (response.status === 200 || response.status === 201)
{ {
navigateTo(this.redirectTo); navigateTo(this.redirectTo);
return; return;
} }
clear("innerHTML", ["username", "password", 'register']);
fill_errors(response_data, "innerHTML");
let response_data = await response.json()
console.log(response_data);
clear("innerHTML", ["username", "password", 'login']);
fill_errors(response_data, "innerHTML");
} }
async getHtml() async getHtml()
@ -147,7 +158,7 @@ export default class extends AbstractNonAuthentifiedView
</div> </div>
<div class='d-flex'> <div class='d-flex'>
<button type='button' class='btn btn-primary mt-3 mb-2' id='button'>Loading...</button> <button type='button' class='btn btn-primary mt-3 mb-2' id='button'>Loading...</button>
<span class='text-danger my-auto mx-2' id='register'></span> <span class='text-danger my-auto mx-2' id='login'></span>
<div class='ms-auto mt-auto flex-row d-flex gap-2' id="toogle"> <div class='ms-auto mt-auto flex-row d-flex gap-2' id="toogle">
<p id='toogle-register-login-label'>Loading...</p> <p id='toogle-register-login-label'>Loading...</p>
<a id="toogle-register-login" href='#'>Loading...</a> <a id="toogle-register-login" href='#'>Loading...</a>