add login route

This commit is contained in:
2026-04-17 06:34:45 +03:00
parent 54ed6fef3a
commit 76d600f01d
4 changed files with 53 additions and 14 deletions

View File

@@ -1,28 +1,46 @@
from flask import Blueprint, redirect, url_for, render_template, request, session
from functools import wraps
from ..auth import digest, verify, create_session
from ..auth import digest, verify, create_session, is_logged_in
from ..models import Users
bp = Blueprint('users', __name__, url_prefix='/users/')
def redirect_if_logged_in(destination='topics.all_topics'):
def decorator(view_func):
@wraps(view_func)
def wrapper(*args, **kwargs):
if is_logged_in():
return redirect(url_for(destination))
return view_func(*args, **kwargs)
return wrapper
return decorator
@bp.get('/log-in')
def log_in_page():
return 'stub/please log in'
@redirect_if_logged_in()
def log_in():
return render_template('users/log_in.html')
@bp.post('/log-in')
@redirect_if_logged_in()
def log_in_post():
user = Users.find({'username': request.form['username']})
if not user:
return 'no user'
return redirect(url_for('.log_in', error='The username or password you entered is incorrect.'))
if not verify(user.password_hash, request.form['password']):
return 'no'
return redirect(url_for('.log_in', error='The username or password you entered is incorrect.'))
sess = create_session(user.id)
session['pyrom_session_key'] = sess.key
session['remember'] = request.form.get('remember') == 'on'
sess = create_session(user.id, not session['remember'])
session['pyrom_session_key'] = sess.key
if session['remember']:
session.permanent = True
return redirect(request.form['return_to'])
return redirect(request.form.get('return_to', default=url_for('topics.all_topics')))
@bp.get('/sign-up')
@redirect_if_logged_in()
def sign_up():
return 'stub'
@bp.get('/<username>')
def user_page(username):
@@ -40,6 +58,3 @@ def inbox(username):
def bookmarks(username):
return 'stub'
@bp.get('/sign-up')
def sign_up():
return 'stub'