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
from typing import ClassVar
from ninja import ModelSchema, Schema
from pydantic import EmailStr
from pydantic import EmailStr, field_validator
from apps.business.models import Business
@@ -23,14 +24,21 @@ class BusinessSignUpOut(Schema):
company_id: uuid.UUID
class BusinessSignInIn(ModelSchema):
class BusinessSignInIn(Schema):
email: EmailStr
password: str
class Meta:
model = Business
fields: ClassVar[list[str]] = [
Business.password.field.name,
]
@field_validator("password")
def validate_password(cls, value: str) -> str: # noqa: N805
pattern = r"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,60}$" # noqa: E501
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):