File tree 1 file changed +48
-0
lines changed
1 file changed +48
-0
lines changed Original file line number Diff line number Diff line change
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
You can’t perform that action at this time.
0 commit comments