chore(login): schema validation improvements

This commit is contained in:
ITQ
2025-01-20 17:29:44 +03:00
parent 6501dfe337
commit 36275caf40
+15 -7
View File
@@ -1,8 +1,9 @@
import re
import uuid import uuid
from typing import ClassVar from typing import ClassVar
from ninja import ModelSchema, Schema from ninja import ModelSchema, Schema
from pydantic import EmailStr from pydantic import EmailStr, field_validator
from apps.business.models import Business from apps.business.models import Business
@@ -23,14 +24,21 @@ class BusinessSignUpOut(Schema):
company_id: uuid.UUID company_id: uuid.UUID
class BusinessSignInIn(ModelSchema): class BusinessSignInIn(Schema):
email: EmailStr email: EmailStr
password: str
class Meta: @field_validator("password")
model = Business def validate_password(cls, value: str) -> str: # noqa: N805
fields: ClassVar[list[str]] = [ pattern = r"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,60}$" # noqa: E501
Business.password.field.name, if not re.match(pattern, value):
] e = (
"Password must contain at least 8 characters, one uppercase "
"letter, one lowercase letter, one number, and one special "
"character (@$!%*?&)."
)
raise ValueError(e)
return value
class BusinessSignInOut(Schema): class BusinessSignInOut(Schema):