Skip to content

Commit 33b941a

Browse files
committed
Move login username trimming into API handlers
1 parent 0491689 commit 33b941a

2 files changed

Lines changed: 7 additions & 10 deletions

File tree

ddpui/api/user_org_api.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -149,15 +149,16 @@ def post_organization_user(request, payload: OrgUserCreate): # pylint: disable=
149149
@user_org_router.post("/login/", auth=None)
150150
def post_login(request, payload: LoginPayload):
151151
"""Uses the username and password in the request to return a JWT auth token"""
152+
username = payload.username.strip()
152153
serializer = CustomTokenObtainSerializer(
153154
data={
154-
"username": payload.username,
155+
"username": username,
155156
"password": payload.password,
156157
}
157158
)
158159
serializer.is_valid(raise_exception=True)
159160
token_data = serializer.validated_data
160-
retval = orguserfunctions.lookup_user(payload.username)
161+
retval = orguserfunctions.lookup_user(username)
161162
retval["token"] = token_data["access"]
162163
retval["refresh_token"] = token_data["refresh"]
163164
return retval
@@ -633,17 +634,18 @@ def get_organization_wren(request):
633634
@user_org_router.post("/v2/login/", auth=None)
634635
def post_login_v2(request, payload: LoginPayload):
635636
"""Login endpoint that sets httpOnly cookies instead of returning tokens in response"""
637+
username = payload.username.strip()
636638
serializer = CustomTokenObtainSerializer(
637639
data={
638-
"username": payload.username,
640+
"username": username,
639641
"password": payload.password,
640642
}
641643
)
642644
serializer.is_valid(raise_exception=True)
643645
token_data = serializer.validated_data
644646

645647
# Get user data (same as v1)
646-
retval = orguserfunctions.lookup_user(payload.username)
648+
retval = orguserfunctions.lookup_user(username)
647649

648650
# Create JsonResponse and set cookies
649651
response = JsonResponse(retval)

ddpui/models/org_user.py

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
from django.contrib.auth.models import User
1010

1111
from ninja import Schema
12-
from pydantic import SecretStr, BaseModel, field_validator
12+
from pydantic import SecretStr, BaseModel
1313

1414
from ddpui.models.org import Org
1515
from ddpui.models.role_based_access import Role
@@ -216,11 +216,6 @@ class LoginPayload(BaseModel):
216216
username: str
217217
password: str
218218

219-
@field_validator("username")
220-
@classmethod
221-
def strip_username_whitespace(cls, value: str) -> str:
222-
return value.strip()
223-
224219

225220
class LogoutPayload(BaseModel):
226221
"""the payload for the login workflow"""

0 commit comments

Comments
 (0)