mirror of
https://github.com/khoj-ai/khoj.git
synced 2025-02-17 08:04:21 +00:00
Create API endpoint to get authenticated user information
This help clients render UI with user information
This commit is contained in:
parent
377e979800
commit
94c69eb8e3
2 changed files with 35 additions and 1 deletions
|
@ -196,6 +196,17 @@ def get_user_name(user: KhojUser):
|
|||
return None
|
||||
|
||||
|
||||
def get_user_photo(user: KhojUser):
|
||||
full_name = user.get_full_name()
|
||||
if not is_none_or_empty(full_name):
|
||||
return full_name
|
||||
google_profile: GoogleUser = GoogleUser.objects.filter(user=user).first()
|
||||
if google_profile:
|
||||
return google_profile.picture
|
||||
|
||||
return None
|
||||
|
||||
|
||||
def get_user_subscription(email: str) -> Optional[Subscription]:
|
||||
return Subscription.objects.filter(user__email=email).first()
|
||||
|
||||
|
|
|
@ -11,12 +11,13 @@ from asgiref.sync import sync_to_async
|
|||
from fastapi import APIRouter, Depends, File, HTTPException, Request, UploadFile
|
||||
from fastapi.requests import Request
|
||||
from fastapi.responses import Response
|
||||
from starlette.authentication import requires
|
||||
from starlette.authentication import has_required_scope, requires
|
||||
|
||||
from khoj.configure import initialize_content
|
||||
from khoj.database.adapters import (
|
||||
ConversationAdapters,
|
||||
EntryAdapters,
|
||||
get_user_photo,
|
||||
get_user_search_model_or_default,
|
||||
)
|
||||
from khoj.database.models import ChatModelOptions, KhojUser, SpeechToTextModelOptions
|
||||
|
@ -368,3 +369,25 @@ async def extract_references_and_questions(
|
|||
def health_check(request: Request) -> Response:
|
||||
response_obj = {"email": request.user.object.email}
|
||||
return Response(content=json.dumps(response_obj), media_type="application/json", status_code=200)
|
||||
|
||||
|
||||
@api.get("/v1/user", response_class=Response)
|
||||
@requires(["authenticated"])
|
||||
def user_info(request: Request) -> Response:
|
||||
# Get user information
|
||||
user: KhojUser = request.user.object
|
||||
user_picture = get_user_photo(user=user)
|
||||
is_active = has_required_scope(request, ["premium"])
|
||||
has_documents = EntryAdapters.user_has_entries(user=user)
|
||||
|
||||
# Collect user information in a dictionary
|
||||
user_info = {
|
||||
"email": user.email,
|
||||
"username": user.username,
|
||||
"photo": user_picture,
|
||||
"is_active": is_active,
|
||||
"has_documents": has_documents,
|
||||
}
|
||||
|
||||
# Return user information as a JSON response
|
||||
return Response(content=json.dumps(user_info), media_type="application/json", status_code=200)
|
||||
|
|
Loading…
Add table
Reference in a new issue