21 lines
650 B
Python
21 lines
650 B
Python
from atat.domain.users import Users
|
|
|
|
|
|
class SessionLimiter(object):
|
|
def __init__(self, config, session, redis):
|
|
self.limit_logins = config["LIMIT_CONCURRENT_SESSIONS"]
|
|
self.session_prefix = config.get("SESSION_KEY_PREFIX", "session:")
|
|
self.session = session
|
|
self.redis = redis
|
|
|
|
def on_login(self, user):
|
|
if not self.limit_logins:
|
|
return
|
|
|
|
session_id = self.session.sid
|
|
self._delete_session(user.last_session_id)
|
|
Users.update_last_session_id(user, session_id)
|
|
|
|
def _delete_session(self, session_id):
|
|
self.redis.delete(f"{self.session_prefix}{session_id}")
|