Add remember me option to login page

This commit is contained in:
Michał Gdula 2023-04-04 17:46:07 +00:00
parent dafe49355f
commit 52a7923ee5
3 changed files with 36 additions and 2 deletions

View file

@ -30,6 +30,7 @@ def login():
username = request.form['username'].strip() username = request.form['username'].strip()
password = request.form['password'].strip() password = request.form['password'].strip()
remember = True if request.form.get('remember') else False
user = db_session.query(db.Users).filter_by(username=username).first() user = db_session.query(db.Users).filter_by(username=username).first()
@ -40,7 +41,7 @@ def login():
if error: if error:
abort(403) abort(403)
login_user(user) login_user(user, remember=remember)
logging.info('User %s logged in from %s', username, request.remote_addr) logging.info('User %s logged in from %s', username, request.remote_addr)
flash(['Logged in successfully!', '4']) flash(['Logged in successfully!', '4'])

View file

@ -30,8 +30,24 @@ function showLogin() {
passwordInput.placeholder = 'Passywassy'; passwordInput.placeholder = 'Passywassy';
passwordInput.id = 'password'; passwordInput.id = 'password';
// Container for remember me checkbox
rememberMeSpan = document.createElement('span');
rememberMeSpan.classList.add('input-checkbox');
rememberMeInput = document.createElement('input');
rememberMeInput.type = 'checkbox';
rememberMeInput.id = 'remember-me';
rememberMeLabel = document.createElement('label');
rememberMeLabel.innerHTML = 'No forgetty me pls';
rememberMeLabel.setAttribute('for', 'remember-me');
rememberMeSpan.appendChild(rememberMeInput);
rememberMeSpan.appendChild(rememberMeLabel);
loginForm.appendChild(usernameInput); loginForm.appendChild(usernameInput);
loginForm.appendChild(passwordInput); loginForm.appendChild(passwordInput);
loginForm.appendChild(rememberMeSpan);
popUpShow( popUpShow(
'Login!', 'Login!',
@ -47,6 +63,7 @@ function login(event) {
let formUsername = document.querySelector("#username").value; let formUsername = document.querySelector("#username").value;
let formPassword = document.querySelector("#password").value; let formPassword = document.querySelector("#password").value;
let formRememberMe = document.querySelector("#remember-me").checked;
if (formUsername === "" || formPassword === "") { if (formUsername === "" || formPassword === "") {
addNotification("Please fill in all fields!!!!", 3); addNotification("Please fill in all fields!!!!", 3);
@ -57,6 +74,7 @@ function login(event) {
const formData = new FormData(); const formData = new FormData();
formData.append("username", formUsername); formData.append("username", formUsername);
formData.append("password", formPassword); formData.append("password", formPassword);
formData.append("remember-me", formRememberMe);
fetch('/auth/login', { fetch('/auth/login', {
method: 'POST', method: 'POST',
@ -129,7 +147,7 @@ function showRegister() {
registerForm.appendChild(emailInput); registerForm.appendChild(emailInput);
registerForm.appendChild(passwordInput); registerForm.appendChild(passwordInput);
registerForm.appendChild(passwordInputRepeat); registerForm.appendChild(passwordInputRepeat);
popUpShow( popUpShow(
'Who are you?', 'Who are you?',
'Already have an account? <span class="link" onclick="showLogin()">Login!</span>', 'Already have an account? <span class="link" onclick="showLogin()">Login!</span>',

View file

@ -57,6 +57,21 @@
&.black &.black
@include btn-block($black) @include btn-block($black)
.input-checkbox
padding: 0
display: flex
justify-content: flex-start
align-items: center
gap: 0.5rem
position: relative
label
font-size: 1rem
font-weight: 600
text-align: left
color: RGB($fg-white)
.input-block .input-block
padding: 0.5rem 1rem padding: 0.5rem 1rem