mominah commited on
Commit
6bc8519
·
verified ·
1 Parent(s): b6da4cd

Update models.py

Browse files
Files changed (1) hide show
  1. models.py +52 -0
models.py CHANGED
@@ -27,3 +27,55 @@ class QueryRequest(BaseModel):
27
  class QueryResponse(BaseModel):
28
  response: str
29
  web_sources: List[str]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
27
  class QueryResponse(BaseModel):
28
  response: str
29
  web_sources: List[str]
30
+
31
+ # === Authentication Models ===
32
+ class User(BaseModel):
33
+ name: str = Field(..., min_length=3, max_length=50)
34
+ email: EmailStr
35
+ password: str
36
+
37
+ @validator("password")
38
+ def validate_password(cls, value):
39
+ if len(value) < 8:
40
+ raise ValueError("Password must be at least 8 characters long.")
41
+ if not any(char.isdigit() for char in value):
42
+ raise ValueError("Password must include at least one number.")
43
+ if not any(char.isupper() for char in value):
44
+ raise ValueError("Password must include at least one uppercase letter.")
45
+ if not any(char.islower() for char in value):
46
+ raise ValueError("Password must include at least one lowercase letter.")
47
+ if not any(char in "!@#$%^&*()-_+=<>?/" for char in value):
48
+ raise ValueError("Password must include at least one special character.")
49
+ return value
50
+
51
+ class UserUpdate(BaseModel):
52
+ name: Optional[str] = Field(None, min_length=3, max_length=50)
53
+ email: Optional[EmailStr]
54
+ password: Optional[str]
55
+
56
+ @validator("password")
57
+ def validate_password(cls, value):
58
+ if value is not None:
59
+ if len(value) < 8:
60
+ raise ValueError("Password must be at least 8 characters long.")
61
+ if not any(char.isdigit() for char in value):
62
+ raise ValueError("Password must include at least one number.")
63
+ if not any(char.isupper() for char in value):
64
+ raise ValueError("Password must include at least one uppercase letter.")
65
+ if not any(char.islower() for char in value):
66
+ raise ValueError("Password must include at least one lowercase letter.")
67
+ if not any(char in "!@#$%^&*()-_+=<>?/" for char in value):
68
+ raise ValueError("Password must include at least one special character.")
69
+ return value
70
+
71
+ class Token(BaseModel):
72
+ access_token: str
73
+ refresh_token: str
74
+ token_type: str
75
+
76
+ class LoginResponse(Token):
77
+ name: str
78
+ avatar: Optional[str] = None
79
+
80
+ class TokenData(BaseModel):
81
+ email: Optional[str] = None