ChandimaPrabath commited on
Commit
fdce0db
·
1 Parent(s): 56d9508

1.0.6 debug

Browse files
Files changed (1) hide show
  1. main.py +20 -8
main.py CHANGED
@@ -14,7 +14,7 @@ from typing import Optional
14
  load_dotenv()
15
 
16
  SERVER_NAME = "Nexus Authentication Service"
17
- VERSION = "1.0.5 debug"
18
 
19
  # Supabase Configuration
20
  SUPABASE_URL = os.getenv("SUPABASE_URL")
@@ -64,6 +64,10 @@ class UserResponse(BaseModel):
64
  access_level: str
65
  date_joined: datetime
66
 
 
 
 
 
67
  class UpdateUserRequest(BaseModel):
68
  password: Optional[str] = None
69
  email: Optional[EmailStr] = None
@@ -171,8 +175,6 @@ async def signup(request: SignupRequest):
171
  created_user = await create_user(request.username, hash_password(request.password), request.email)
172
  return {"message": "User created successfully", "user": created_user}
173
 
174
- from datetime import datetime, timedelta, timezone
175
-
176
  @auth_router.post("/login", response_model=LoginResponse)
177
  async def login(request: LoginRequest, user_agent: str = Header(...)):
178
  # Query the user based on the username
@@ -235,9 +237,6 @@ async def logout(user_id: str, token: str):
235
 
236
  return {"message": "Session forcefully expired"}
237
 
238
-
239
- from datetime import datetime, timezone
240
-
241
  @auth_router.get("/validate", response_model=TokenResponse)
242
  async def validate_token(user_id: str, token: str, user_agent: str = Header(...)):
243
  # Query to validate session by user_id, token, and device
@@ -274,11 +273,24 @@ async def validate_token(user_id: str, token: str, user_agent: str = Header(...)
274
 
275
  return TokenResponse(access_token=token)
276
 
277
-
278
  @auth_router.get("/search-users", response_model=List[str])
279
  async def search_users(query: str):
280
  users = supabase.table("users").select("username").ilike("username", f"%{query}%").execute()
281
- return [user["username"] for user in users.data]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
282
 
283
  @auth_router.get("/get-user-id", response_model=str)
284
  async def get_user_id(username: str):
 
14
  load_dotenv()
15
 
16
  SERVER_NAME = "Nexus Authentication Service"
17
+ VERSION = "1.0.6 debug"
18
 
19
  # Supabase Configuration
20
  SUPABASE_URL = os.getenv("SUPABASE_URL")
 
64
  access_level: str
65
  date_joined: datetime
66
 
67
+ class UsernameAvailabilityResponse(BaseModel):
68
+ username: str
69
+ is_available: bool
70
+
71
  class UpdateUserRequest(BaseModel):
72
  password: Optional[str] = None
73
  email: Optional[EmailStr] = None
 
175
  created_user = await create_user(request.username, hash_password(request.password), request.email)
176
  return {"message": "User created successfully", "user": created_user}
177
 
 
 
178
  @auth_router.post("/login", response_model=LoginResponse)
179
  async def login(request: LoginRequest, user_agent: str = Header(...)):
180
  # Query the user based on the username
 
237
 
238
  return {"message": "Session forcefully expired"}
239
 
 
 
 
240
  @auth_router.get("/validate", response_model=TokenResponse)
241
  async def validate_token(user_id: str, token: str, user_agent: str = Header(...)):
242
  # Query to validate session by user_id, token, and device
 
273
 
274
  return TokenResponse(access_token=token)
275
 
 
276
  @auth_router.get("/search-users", response_model=List[str])
277
  async def search_users(query: str):
278
  users = supabase.table("users").select("username").ilike("username", f"%{query}%").execute()
279
+ usernames = [user["username"] for user in users.data]
280
+
281
+ # Exclude SYSTEM_USER from the list if it's present
282
+ if SYSTEM_USER and SYSTEM_USER in usernames:
283
+ usernames.remove(SYSTEM_USER)
284
+
285
+ return usernames
286
+
287
+ @auth_router.get("/is-username-available", response_model=UsernameAvailabilityResponse)
288
+ async def is_username_available(query: str):
289
+ users = supabase.table("users").select("username").eq("username", query).execute()
290
+ return UsernameAvailabilityResponse(
291
+ username=query,
292
+ is_available=len(users.data) == 0 # If no users are found, the username is available
293
+ )
294
 
295
  @auth_router.get("/get-user-id", response_model=str)
296
  async def get_user_id(username: str):