Skip to content

Commit aa3aa0f

Browse files
committed
chore(api): move login token creation to model
1 parent b7a0845 commit aa3aa0f

File tree

2 files changed

+17
-12
lines changed

2 files changed

+17
-12
lines changed

api/desecapi/models/tokens.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
from django_prometheus.models import ExportModelOperationsMixin
1818
from netfields import CidrAddressField, NetManager
1919

20+
from .users import User
21+
2022

2123
class Token(ExportModelOperationsMixin("Token"), rest_framework.authtoken.models.Token):
2224
@staticmethod
@@ -100,6 +102,17 @@ def delete(self):
100102
self.tokendomainpolicy_set.filter(domain__isnull=True).delete()
101103
return super().delete()
102104

105+
@classmethod
106+
def create_login_token(cls, user: User):
107+
token = cls.objects.create(
108+
user=user,
109+
perm_manage_tokens=True,
110+
max_age=timedelta(days=7),
111+
max_unused_period=timedelta(hours=1),
112+
mfa=False,
113+
)
114+
return token
115+
103116

104117
@pgtrigger.register(
105118
# Ensure that token_user is consistent with token

api/desecapi/views/users.py

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
from datetime import timedelta
2-
31
from django.conf import settings
42
from django.contrib.auth import user_logged_in
53
from rest_framework import generics, mixins, status
@@ -99,16 +97,10 @@ class AccountLoginView(generics.GenericAPIView):
9997

10098
def post(self, request, *args, **kwargs):
10199
user = self.request.user
102-
token = Token.objects.create(
103-
user=user,
104-
perm_manage_tokens=True,
105-
max_age=timedelta(days=7),
106-
max_unused_period=timedelta(hours=1),
107-
mfa=False,
108-
)
109-
user_logged_in.send(sender=user.__class__, request=self.request, user=user)
110-
111-
data = self.get_serializer(token, include_plain=True).data
100+
data = self.get_serializer(
101+
Token.create_login_token(user), include_plain=True
102+
).data
103+
user_logged_in.send(sender=user.__class__, request=request, user=user)
112104
return Response(data)
113105

114106

0 commit comments

Comments
 (0)