Only allow one session

This commit is contained in:
richard-dds 2019-05-15 16:57:09 -04:00
parent 48fbc1c997
commit e037c81338
4 changed files with 40 additions and 1 deletions

View File

@ -0,0 +1,28 @@
"""add_user_last_session_id
Revision ID: ab1167fc8260
Revises: 432c5287256d
Create Date: 2019-05-15 16:25:48.766451
"""
from alembic import op
import sqlalchemy as sa
from sqlalchemy.dialects import postgresql
# revision identifiers, used by Alembic.
revision = 'ab1167fc8260'
down_revision = '432c5287256d'
branch_labels = None
depends_on = None
def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.add_column('users', sa.Column('last_session_id', postgresql.UUID(as_uuid=True), server_default=sa.text('uuid_generate_v4()'), nullable=True))
# ### end Alembic commands ###
def downgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.drop_column('users', 'last_session_id')
# ### end Alembic commands ###

View File

@ -89,6 +89,13 @@ class Users(object):
db.session.add(user)
db.session.commit()
@classmethod
def update_last_session_id(cls, user, session_id):
user.last_session_id = session_id
db.session.add(user)
db.session.commit()
@classmethod
def finalize(cls, user):
user.provisional = False

View File

@ -58,6 +58,7 @@ class User(
designation = Column(String)
date_latest_training = Column(Date)
last_login = Column(TIMESTAMP(timezone=True), nullable=True)
last_session_id = types.Id()
provisional = Column(Boolean)

View File

@ -8,9 +8,9 @@ from flask import (
url_for,
request,
make_response,
current_app as app
)
from flask import current_app as app
from jinja2.exceptions import TemplateNotFound
import pendulum
import os
@ -123,8 +123,11 @@ def redirect_after_login_url():
def current_user_setup(user):
session_id = session.sid
app.redis.delete("session:{}".format(user.last_session_id))
session["user_id"] = user.id
session["last_login"] = user.last_login
Users.update_last_session_id(user, session_id)
Users.update_last_login(user)