Skip to content

Commit 01f61db

Browse files
committed
generated file: api/schemas/user.py
1 parent 8395862 commit 01f61db

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed

Diff for: api/schemas/user.py

+48
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
from pydantic import BaseModel, validator
2+
from typing import Optional, List
3+
4+
class UserCreate(BaseModel):
5+
username: str
6+
email: str
7+
password: str
8+
9+
@validator("username")
10+
def username_must_be_unique(cls, value, values):
11+
# Check if username is already taken (use database query)
12+
if User.objects.filter(username=value).exists():
13+
raise ValueError("Username already exists.")
14+
return value
15+
16+
@validator("email")
17+
def email_must_be_unique(cls, value, values):
18+
# Check if email is already taken (use database query)
19+
if User.objects.filter(email=value).exists():
20+
raise ValueError("Email already exists.")
21+
return value
22+
23+
@validator("password")
24+
def password_must_be_strong(cls, value):
25+
# Ensure password meets minimum length and complexity requirements
26+
if len(value) < 8:
27+
raise ValueError("Password must be at least 8 characters long.")
28+
if not any(c.isupper() for c in value):
29+
raise ValueError("Password must contain at least one uppercase letter.")
30+
if not any(c.islower() for c in value):
31+
raise ValueError("Password must contain at least one lowercase letter.")
32+
if not any(c.isdigit() for c in value):
33+
raise ValueError("Password must contain at least one digit.")
34+
return value
35+
36+
class User(BaseModel):
37+
id: int
38+
username: str
39+
email: str
40+
api_key: Optional[str] = None
41+
42+
class UserLogin(BaseModel):
43+
email: str
44+
password: str
45+
46+
class Token(BaseModel):
47+
access_token: str
48+
token_type: str

0 commit comments

Comments
 (0)