Hammad712 commited on
Commit
e706e84
·
verified ·
1 Parent(s): 04d5a0b

Create model.py

Browse files
Files changed (1) hide show
  1. model.py +54 -0
model.py ADDED
@@ -0,0 +1,54 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from pydantic import BaseModel, EmailStr, Field, validator
2
+ from typing import List, Optional
3
+
4
+ # === Authentication Models ===
5
+ class User(BaseModel):
6
+ name: str = Field(..., min_length=3, max_length=50)
7
+ email: EmailStr
8
+ password: str
9
+
10
+ @validator("password")
11
+ def validate_password(cls, value):
12
+ if len(value) < 8:
13
+ raise ValueError("Password must be at least 8 characters long.")
14
+ if not any(char.isdigit() for char in value):
15
+ raise ValueError("Password must include at least one number.")
16
+ if not any(char.isupper() for char in value):
17
+ raise ValueError("Password must include at least one uppercase letter.")
18
+ if not any(char.islower() for char in value):
19
+ raise ValueError("Password must include at least one lowercase letter.")
20
+ if not any(char in "!@#$%^&*()-_+=<>?/" for char in value):
21
+ raise ValueError("Password must include at least one special character.")
22
+ return value
23
+
24
+ class UserUpdate(BaseModel):
25
+ name: Optional[str] = Field(None, min_length=3, max_length=50)
26
+ email: Optional[EmailStr]
27
+ password: Optional[str]
28
+
29
+ @validator("password")
30
+ def validate_password(cls, value):
31
+ if value is not None:
32
+ if len(value) < 8:
33
+ raise ValueError("Password must be at least 8 characters long.")
34
+ if not any(char.isdigit() for char in value):
35
+ raise ValueError("Password must include at least one number.")
36
+ if not any(char.isupper() for char in value):
37
+ raise ValueError("Password must include at least one uppercase letter.")
38
+ if not any(char.islower() for char in value):
39
+ raise ValueError("Password must include at least one lowercase letter.")
40
+ if not any(char in "!@#$%^&*()-_+=<>?/" for char in value):
41
+ raise ValueError("Password must include at least one special character.")
42
+ return value
43
+
44
+ class Token(BaseModel):
45
+ access_token: str
46
+ refresh_token: str
47
+ token_type: str
48
+
49
+ class LoginResponse(Token):
50
+ name: str
51
+ avatar: Optional[str] = None
52
+
53
+ class TokenData(BaseModel):
54
+ email: Optional[str] = None