Skip to content

Commit

Permalink
refactor(sessionmgmt): delete and block duplicate TrustedSession objects
Browse files Browse the repository at this point in the history
Enforced on a per-user, per-session basis
  • Loading branch information
anonymoose2 authored and anonymoose2 committed Oct 13, 2019
1 parent 01d38b5 commit 0648037
Show file tree
Hide file tree
Showing 4 changed files with 50 additions and 0 deletions.
2 changes: 2 additions & 0 deletions Ion.egg-info/SOURCES.txt
Expand Up @@ -572,6 +572,8 @@ intranet/apps/sessionmgmt/tests.py
intranet/apps/sessionmgmt/urls.py
intranet/apps/sessionmgmt/views.py
intranet/apps/sessionmgmt/migrations/0001_initial.py
intranet/apps/sessionmgmt/migrations/0002_auto_20191012_1942.py
intranet/apps/sessionmgmt/migrations/0003_auto_20191012_1947.py
intranet/apps/sessionmgmt/migrations/__init__.py
intranet/apps/signage/__init__.py
intranet/apps/signage/admin.py
Expand Down
24 changes: 24 additions & 0 deletions intranet/apps/sessionmgmt/migrations/0002_auto_20191012_1942.py
@@ -0,0 +1,24 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.23 on 2019-10-12 23:42
from __future__ import unicode_literals

from django.db import migrations


def remove_duplicate_trustedsessions(apps, schema_editor):
TrustedSession = apps.get_model("sessionmgmt", "TrustedSession")
for tsession in TrustedSession.objects.all():
if TrustedSession.objects.filter(user=tsession.user, session_key=tsession.session_key).exclude(pk=tsession.pk).exists():
tsession.delete()


class Migration(migrations.Migration):

dependencies = [
('users', '0001_initial'),
('sessionmgmt', '0001_initial'),
]

operations = [
migrations.RunPython(remove_duplicate_trustedsessions, lambda *args, **kwargs: None),
]
21 changes: 21 additions & 0 deletions intranet/apps/sessionmgmt/migrations/0003_auto_20191012_1947.py
@@ -0,0 +1,21 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.23 on 2019-10-12 23:47
from __future__ import unicode_literals

from django.conf import settings
from django.db import migrations


class Migration(migrations.Migration):

dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('sessionmgmt', '0002_auto_20191012_1942'),
]

operations = [
migrations.AlterUniqueTogether(
name='trustedsession',
unique_together=set([('user', 'session_key')]),
),
]
3 changes: 3 additions & 0 deletions intranet/apps/sessionmgmt/models.py
Expand Up @@ -35,3 +35,6 @@ def delete_expired_sessions(cls, *, user=None) -> None:
for trusted_session in trusted_sessions:
if not SessionStore(session_key=trusted_session.session_key).exists(trusted_session.session_key):
trusted_session.delete()

class Meta:
unique_together = (("user", "session_key"),)

0 comments on commit 0648037

Please sign in to comment.