add logout route

This commit is contained in:
2026-04-29 19:22:30 +03:00
parent 3870356ffa
commit e670c176e8
2 changed files with 16 additions and 6 deletions

View File

@@ -57,6 +57,15 @@ def create_session(user_id, temporary=False):
'expires_at': int(time.time()) + (expires_days * 24 * 60 * 60), 'expires_at': int(time.time()) + (expires_days * 24 * 60 * 60),
}) })
def revoke_session(user_id):
if not is_logged_in():
return
sess = Sessions.find({'key': session['pyrom_session_key']})
if not sess:
return
sess.delete()
session.clear()
def parse_username(username: str) -> Tuple[str, str]: def parse_username(username: str) -> Tuple[str, str]:
"""first is the unmodified name/display name, second is username""" """first is the unmodified name/display name, second is username"""
if len(username) < 3: if len(username) < 3:

View File

@@ -5,7 +5,7 @@ import time
from ..auth import ( from ..auth import (
digest, verify, create_session, digest, verify, create_session,
is_logged_in, parse_username, is_password_valid, is_logged_in, parse_username, is_password_valid,
login_required login_required, revoke_session, get_active_user
) )
from ..models import Users, Posts, Reactions, Threads from ..models import Users, Posts, Reactions, Threads
from ..constants import PermissionLevel from ..constants import PermissionLevel
@@ -29,11 +29,6 @@ def redirect_if_logged_in(destination='topics.all_topics'):
def log_in(): def log_in():
return render_template('users/log_in.html') return render_template('users/log_in.html')
@bp.post('/log-out/')
@login_required
def log_out():
return 'stub'
@bp.post('/log-in/') @bp.post('/log-in/')
@redirect_if_logged_in() @redirect_if_logged_in()
def log_in_post(): def log_in_post():
@@ -52,6 +47,12 @@ def log_in_post():
session.permanent = True session.permanent = True
return redirect(request.form.get('return_to', default=url_for('topics.all_topics'))) return redirect(request.form.get('return_to', default=url_for('topics.all_topics')))
@bp.post('/log-out/')
@login_required
def log_out():
revoke_session(get_active_user().id)
return redirect(url_for('topics.all_topics'))
@bp.get('/sign-up/') @bp.get('/sign-up/')
@redirect_if_logged_in() @redirect_if_logged_in()
def sign_up(): def sign_up():