mominah commited on
Commit
3a975c6
·
verified ·
1 Parent(s): 39df9c9

Update auth.py

Browse files
Files changed (1) hide show
  1. auth.py +2 -14
auth.py CHANGED
@@ -6,11 +6,9 @@ from urllib.parse import quote_plus
6
  from typing import List, Optional, Any
7
 
8
  from dotenv import load_dotenv
9
- from fastapi import APIRouter, HTTPException, Depends, Request, status, UploadFile, File, Form
10
  from fastapi.responses import JSONResponse
11
  from fastapi.security import OAuth2PasswordBearer, OAuth2PasswordRequestForm
12
- from slowapi import Limiter, _rate_limit_exceeded_handler
13
- from slowapi.util import get_remote_address
14
  from jose import JWTError, jwt
15
  from passlib.context import CryptContext
16
  from pydantic import BaseModel, EmailStr, Field, validator
@@ -30,9 +28,6 @@ client = MongoClient(MONGO_URL)
30
  db = client.users_database
31
  users_collection = db.users
32
 
33
- # Rate limiter (applied to auth endpoints)
34
- limiter = Limiter(key_func=get_remote_address, default_limits=["200 per day", "50 per hour"])
35
-
36
  # OAuth2 setup
37
  oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")
38
 
@@ -168,7 +163,6 @@ def save_avatar_file(file: UploadFile) -> str:
168
  # ----- Auth Endpoints -----
169
 
170
  @router.post("/signup", response_model=Token)
171
- @limiter.limit("5/minute")
172
  async def signup(
173
  request: Request,
174
  name: str = Form(...),
@@ -176,7 +170,6 @@ async def signup(
176
  password: str = Form(...),
177
  avatar: Optional[UploadFile] = File(None)
178
  ):
179
- # Validate input using the User model
180
  try:
181
  _ = User(name=name, email=email, password=password)
182
  except Exception as e:
@@ -190,7 +183,7 @@ async def signup(
190
  "name": name,
191
  "email": email,
192
  "hashed_password": hashed_password,
193
- "chat_histories": [] # Initialize an empty array for chat histories and future data.
194
  }
195
  if avatar:
196
  avatar_path = save_avatar_file(avatar)
@@ -204,7 +197,6 @@ async def signup(
204
  }
205
 
206
  @router.post("/login", response_model=LoginResponse)
207
- @limiter.limit("10/minute")
208
  async def login(request: Request, form_data: OAuth2PasswordRequestForm = Depends()):
209
  user = authenticate_user(form_data.username, form_data.password)
210
  if not user:
@@ -220,7 +212,6 @@ async def login(request: Request, form_data: OAuth2PasswordRequestForm = Depends
220
  }
221
 
222
  @router.get("/user/data")
223
- @limiter.limit("20/minute")
224
  async def get_user_data(request: Request, current_user: dict = Depends(get_current_user)):
225
  return {
226
  "name": current_user["name"],
@@ -230,7 +221,6 @@ async def get_user_data(request: Request, current_user: dict = Depends(get_curre
230
  }
231
 
232
  @router.put("/user/update")
233
- @limiter.limit("10/minute")
234
  async def update_user(
235
  request: Request,
236
  name: Optional[str] = Form(None),
@@ -262,8 +252,6 @@ async def update_user(
262
  return {"message": "User updated successfully"}
263
 
264
  @router.post("/logout")
265
- @limiter.limit("20/minute")
266
  async def logout(request: Request, current_user: dict = Depends(get_current_user)):
267
  logger.info(f"User logged out: {current_user['email']}")
268
  return {"message": "User logged out successfully"}
269
-
 
6
  from typing import List, Optional, Any
7
 
8
  from dotenv import load_dotenv
9
+ from fastapi import APIRouter, HTTPException, Depends, Request, UploadFile, File, Form
10
  from fastapi.responses import JSONResponse
11
  from fastapi.security import OAuth2PasswordBearer, OAuth2PasswordRequestForm
 
 
12
  from jose import JWTError, jwt
13
  from passlib.context import CryptContext
14
  from pydantic import BaseModel, EmailStr, Field, validator
 
28
  db = client.users_database
29
  users_collection = db.users
30
 
 
 
 
31
  # OAuth2 setup
32
  oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")
33
 
 
163
  # ----- Auth Endpoints -----
164
 
165
  @router.post("/signup", response_model=Token)
 
166
  async def signup(
167
  request: Request,
168
  name: str = Form(...),
 
170
  password: str = Form(...),
171
  avatar: Optional[UploadFile] = File(None)
172
  ):
 
173
  try:
174
  _ = User(name=name, email=email, password=password)
175
  except Exception as e:
 
183
  "name": name,
184
  "email": email,
185
  "hashed_password": hashed_password,
186
+ "chat_histories": []
187
  }
188
  if avatar:
189
  avatar_path = save_avatar_file(avatar)
 
197
  }
198
 
199
  @router.post("/login", response_model=LoginResponse)
 
200
  async def login(request: Request, form_data: OAuth2PasswordRequestForm = Depends()):
201
  user = authenticate_user(form_data.username, form_data.password)
202
  if not user:
 
212
  }
213
 
214
  @router.get("/user/data")
 
215
  async def get_user_data(request: Request, current_user: dict = Depends(get_current_user)):
216
  return {
217
  "name": current_user["name"],
 
221
  }
222
 
223
  @router.put("/user/update")
 
224
  async def update_user(
225
  request: Request,
226
  name: Optional[str] = Form(None),
 
252
  return {"message": "User updated successfully"}
253
 
254
  @router.post("/logout")
 
255
  async def logout(request: Request, current_user: dict = Depends(get_current_user)):
256
  logger.info(f"User logged out: {current_user['email']}")
257
  return {"message": "User logged out successfully"}