@@ -57,82 +57,67 @@ def authenticate_user(db: Session, username: str, password: str) -> Union[User,
57
57
def create_token (data : Dict [str , Any ], expires_delta : Optional [timedelta ] = None ) -> str :
58
58
"""Create a JWT token"""
59
59
to_encode = data .copy ()
60
-
60
+
61
61
if expires_delta :
62
62
expire = datetime .now (timezone .utc ) + expires_delta
63
63
else :
64
64
expire = datetime .now (timezone .utc ) + timedelta (minutes = ACCESS_TOKEN_EXPIRE_MINUTES )
65
-
65
+
66
66
to_encode .update ({"exp" : expire })
67
67
encoded_jwt = jwt .encode (to_encode , SECRET_KEY , algorithm = ALGORITHM )
68
68
return encoded_jwt
69
69
70
70
71
71
def create_access_token (data : Dict [str , Any ]) -> str :
72
72
"""Create an access token"""
73
- return create_token (
74
- data ,
75
- expires_delta = timedelta (minutes = ACCESS_TOKEN_EXPIRE_MINUTES )
76
- )
73
+ return create_token (data , expires_delta = timedelta (minutes = ACCESS_TOKEN_EXPIRE_MINUTES ))
77
74
78
75
79
76
def create_refresh_token (data : Dict [str , Any ]) -> str :
80
77
"""Create a refresh token"""
81
- return create_token (
82
- data ,
83
- expires_delta = timedelta (days = REFRESH_TOKEN_EXPIRE_DAYS )
84
- )
78
+ return create_token (data , expires_delta = timedelta (days = REFRESH_TOKEN_EXPIRE_DAYS ))
85
79
86
80
87
81
async def get_current_user (
88
- token : str = Depends (oauth2_scheme ),
89
- db : Session = Depends (get_db )
82
+ token : str = Depends (oauth2_scheme ), db : Session = Depends (get_db )
90
83
) -> User :
91
84
"""Get the current authenticated user from the token"""
92
85
credentials_exception = HTTPException (
93
86
status_code = status .HTTP_401_UNAUTHORIZED ,
94
87
detail = "Could not validate credentials" ,
95
88
headers = {"WWW-Authenticate" : "Bearer" },
96
89
)
97
-
90
+
98
91
try :
99
92
payload = jwt .decode (token , SECRET_KEY , algorithms = [ALGORITHM ])
100
93
username : str = payload .get ("sub" )
101
94
if username is None :
102
95
raise credentials_exception
103
96
except JWTError :
104
97
raise credentials_exception
105
-
98
+
106
99
user = get_user (db , username = username )
107
100
if user is None :
108
101
raise credentials_exception
109
-
102
+
110
103
# Update last login time
111
104
user .last_login = datetime .now (timezone .utc )
112
105
db .commit ()
113
-
106
+
114
107
return user
115
108
116
109
117
- async def get_current_active_user (
118
- current_user : User = Depends (get_current_user )
119
- ) -> User :
110
+ async def get_current_active_user (current_user : User = Depends (get_current_user )) -> User :
120
111
"""Get the current active user"""
121
112
if not current_user .is_active :
122
- raise HTTPException (
123
- status_code = status .HTTP_403_FORBIDDEN ,
124
- detail = "Inactive user"
125
- )
113
+ raise HTTPException (status_code = status .HTTP_403_FORBIDDEN , detail = "Inactive user" )
126
114
return current_user
127
115
128
116
129
- async def get_admin_user (
130
- current_user : User = Depends (get_current_active_user )
131
- ) -> User :
117
+ async def get_admin_user (current_user : User = Depends (get_current_active_user )) -> User :
132
118
"""Check if the current user is an admin"""
133
119
if not current_user .is_admin :
134
120
raise HTTPException (
135
- status_code = status .HTTP_403_FORBIDDEN ,
136
- detail = "Admin privileges required"
121
+ status_code = status .HTTP_403_FORBIDDEN , detail = "Admin privileges required"
137
122
)
138
123
return current_user
0 commit comments