ChandimaPrabath commited on
Commit
9381a7e
·
1 Parent(s): 09e95aa

add user search

Browse files
Files changed (2) hide show
  1. .gitignore +1 -0
  2. main.py +23 -2
.gitignore CHANGED
@@ -2,3 +2,4 @@ sessions_db.json
2
  users_db.json
3
  deviceinfo.py
4
  .env
 
 
2
  users_db.json
3
  deviceinfo.py
4
  .env
5
+ _pycache_
main.py CHANGED
@@ -59,6 +59,15 @@ class LoginRequest(BaseModel):
59
  username: str
60
  password: str
61
 
 
 
 
 
 
 
 
 
 
62
  class TokenResponse(BaseModel):
63
  access_token: str
64
  token_type: str = "bearer"
@@ -155,7 +164,7 @@ def signup(request: SignupRequest):
155
  save_databases()
156
  return {"message": "User created successfully"}
157
 
158
- @auth_router.post("/login", response_model=TokenResponse)
159
  def login(request: LoginRequest, user_agent: str = Header(...)):
160
  user_id = next((uid for uid, user in users_db.items() if user["username"] == request.username), None)
161
  if not user_id or not verify_password(request.password, users_db[user_id]["password"]):
@@ -173,7 +182,15 @@ def login(request: LoginRequest, user_agent: str = Header(...)):
173
  sessions_db[user_id].append({"token": token, "expires": expiration_time, "device": user_agent})
174
  save_databases()
175
 
176
- return TokenResponse(access_token=token)
 
 
 
 
 
 
 
 
177
 
178
  @auth_router.post("/logout")
179
  def logout(user_id: str, token: str):
@@ -216,6 +233,10 @@ def validate_token(user_id: str, token: str, user_agent: str = Header(...)):
216
  status_code=status.HTTP_401_UNAUTHORIZED, detail="Invalid token"
217
  )
218
 
 
 
 
 
219
  # Admin Routes
220
  @admin_router.get("/users", response_model=List[UserResponse])
221
  def get_all_users(user_id: str, token: str, user_agent: str = Header(...)):
 
59
  username: str
60
  password: str
61
 
62
+ class LoginResponse(BaseModel):
63
+ user_id: str
64
+ username: str
65
+ email: EmailStr
66
+ access_level: str
67
+ date_joined: datetime
68
+ access_token: str
69
+ token_type: str = "bearer"
70
+
71
  class TokenResponse(BaseModel):
72
  access_token: str
73
  token_type: str = "bearer"
 
164
  save_databases()
165
  return {"message": "User created successfully"}
166
 
167
+ @auth_router.post("/login", response_model=LoginResponse)
168
  def login(request: LoginRequest, user_agent: str = Header(...)):
169
  user_id = next((uid for uid, user in users_db.items() if user["username"] == request.username), None)
170
  if not user_id or not verify_password(request.password, users_db[user_id]["password"]):
 
182
  sessions_db[user_id].append({"token": token, "expires": expiration_time, "device": user_agent})
183
  save_databases()
184
 
185
+ user = users_db[user_id]
186
+ return LoginResponse(
187
+ user_id=user_id,
188
+ username=user["username"],
189
+ email=user["email"],
190
+ access_level=user["access_level"],
191
+ date_joined=user["date_joined"],
192
+ access_token=token
193
+ )
194
 
195
  @auth_router.post("/logout")
196
  def logout(user_id: str, token: str):
 
233
  status_code=status.HTTP_401_UNAUTHORIZED, detail="Invalid token"
234
  )
235
 
236
+ @auth_router.get("/search-users", response_model=List[str])
237
+ def search_users(query: str):
238
+ return [user["username"] for user in users_db.values() if query.lower() in user["username"].lower()]
239
+
240
  # Admin Routes
241
  @admin_router.get("/users", response_model=List[UserResponse])
242
  def get_all_users(user_id: str, token: str, user_agent: str = Header(...)):