Skip to content

Commit 0a565bf

Browse files
author
Abhishek Singh
committed
enh: using existing user model and removed AuthenticatedUser Model
1 parent da4dbbb commit 0a565bf

File tree

6 files changed

+24
-72
lines changed

6 files changed

+24
-72
lines changed

agents/official/beeai-framework/chat/src/chat/agent.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,7 @@
3030
from beeai_framework.tools import Tool
3131
from beeai_framework.tools.search.duckduckgo import DuckDuckGoSearchTool
3232
from beeai_framework.tools.search.wikipedia import WikipediaTool
33-
3433
from beeai_framework.tools.weather import OpenMeteoTool
35-
3634
from beeai_sdk.a2a.extensions import (
3735
AgentDetail,
3836
AgentDetailTool,
@@ -44,7 +42,7 @@
4442
from beeai_sdk.a2a.types import AgentMessage
4543
from beeai_sdk.server import Server
4644
from beeai_sdk.server.context import Context
47-
from chat.tools.general.current_time import CurrentTimeTool
45+
4846
from chat.helpers.citations import extract_citations
4947
from chat.helpers.trajectory import TrajectoryContent
5048
from chat.tools.files.file_creator import FileCreatorTool, FileCreatorToolOutput
@@ -59,6 +57,7 @@
5957
ClarificationTool,
6058
clarification_tool_middleware,
6159
)
60+
from chat.tools.general.current_time import CurrentTimeTool
6261

6362
# Temporary instrument fix
6463
EventMeta.model_fields["context"].exclude = True

apps/beeai-server/src/beeai_server/api/routes/a2a.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@
1010

1111
from beeai_server.api.dependencies import (
1212
A2AProxyServiceDependency,
13-
AuthenticatedUserDependency,
1413
ProviderServiceDependency,
1514
)
15+
from beeai_server.auth.dependencies import AuthenticatedUserDependency
1616
from beeai_server.service_layer.services.a2a import A2AServerResponse
1717

1818
router = fastapi.APIRouter()

apps/beeai-server/src/beeai_server/api/routes/acp.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,12 @@
1414
RunResumeRequest,
1515
RunResumeResponse,
1616
)
17-
from fastapi.security import APIKeyCookie, APIKeyHeader
1817

1918
from beeai_server.api.dependencies import AcpProxyServiceDependency
2019
from beeai_server.api.schema.acp import AgentReadResponse, AgentsListResponse
2120
from beeai_server.auth.dependencies import AuthenticatedUserDependency
2221
from beeai_server.service_layer.services.acp import AcpServerResponse
2322

24-
api_key_cookie = APIKeyCookie(name="beeai-platform", auto_error=False)
25-
api_key_header = APIKeyHeader(name="Authorization", auto_error=False)
2623
router = fastapi.APIRouter()
2724

2825

apps/beeai-server/src/beeai_server/auth/dependencies.py

Lines changed: 18 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -3,42 +3,32 @@
33

44
from typing import Annotated
55

6-
from fastapi import Depends, HTTPException, Request, Security, status
6+
from fastapi import Depends, HTTPException, Security, status
77
from fastapi.security import APIKeyCookie, APIKeyHeader
88
from kink import di
99

1010
from beeai_server.auth.utils import decode_jwt_token, extract_token
1111
from beeai_server.configuration import Configuration
12-
13-
from .models import AuthenticatedUser
12+
from beeai_server.domain.models.user import User, UserRole
13+
from beeai_server.exceptions import EntityNotFoundError
14+
from beeai_server.service_layer.services.users import UserService
1415

1516
ConfigurationDependency = Annotated[Configuration, Depends(lambda: di[Configuration])]
17+
UserServiceDependency = Annotated[UserService, Depends(lambda: di[UserService])]
1618

1719
api_key_cookie = APIKeyCookie(name="beeai-platform", auto_error=False)
1820
api_key_header = APIKeyHeader(name="Authorization", auto_error=False)
19-
# api_key_header = HTTPBearer(auto_error=False)
20-
21-
22-
async def get_current_user(request: Request) -> AuthenticatedUser:
23-
user = request.user
24-
if not user or not user.is_authenticated:
25-
raise HTTPException(status_code=401, detail="Not authenticated")
26-
return user
2721

2822

2923
async def get_authenticated_user(
24+
user_service: UserServiceDependency,
3025
configuration: ConfigurationDependency,
3126
cookie_token: Annotated[str | None, Security(api_key_cookie)],
3227
header_token: Annotated[str | None, Security(api_key_header)],
33-
) -> AuthenticatedUser:
28+
) -> User:
3429
if configuration.oidc.disable_oidc:
3530
# Bypass OIDC validation — return a default user for dev/testing mode
36-
return AuthenticatedUser(
37-
uid="dev-user",
38-
is_admin=True,
39-
display_name="dev user",
40-
email="user@beeai.dev",
41-
)
31+
return await user_service.get_user_by_email("admin@beeai.dev")
4232
try:
4333
token = extract_token(header_token, cookie_token)
4434
except Exception as e:
@@ -56,19 +46,20 @@ async def get_authenticated_user(
5646
email = claims.get("email")
5747
is_admin = email in configuration.oidc.admin_emails
5848

59-
return AuthenticatedUser(
60-
uid=claims.get("sub"),
61-
is_admin=is_admin,
62-
display_name=claims.get("displayName"),
63-
email=claims.get("email"),
64-
)
49+
try:
50+
authenticated_user = await user_service.get_user_by_email(email=email)
51+
except EntityNotFoundError:
52+
role = UserRole.admin if is_admin else UserRole.user
53+
authenticated_user = await user_service.create_user(email=email, role=role)
54+
55+
return authenticated_user
6556

6657

67-
def check_admin(user: Annotated[AuthenticatedUser, Depends(get_authenticated_user)]) -> AuthenticatedUser:
68-
if not user.is_admin:
58+
def check_admin(user: Annotated[User, Depends(get_authenticated_user)]) -> User:
59+
if user.role != UserRole.admin:
6960
raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, detail="Admin privileges required")
7061
return user
7162

7263

73-
AuthenticatedUserDependency = Annotated[AuthenticatedUser, Depends(get_authenticated_user)]
64+
AuthenticatedUserDependency = Annotated[User, Depends(get_authenticated_user)]
7465
AdminUserDependency = Annotated[str, Depends(check_admin)]

apps/beeai-server/src/beeai_server/auth/models.py

Lines changed: 0 additions & 35 deletions
This file was deleted.

apps/beeai-server/src/beeai_server/service_layer/services/users.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
from kink import inject
88

9-
from beeai_server.domain.models.user import User
9+
from beeai_server.domain.models.user import User, UserRole
1010
from beeai_server.service_layer.unit_of_work import IUnitOfWorkFactory
1111

1212
logger = logging.getLogger(__name__)
@@ -20,9 +20,9 @@ def __init__(
2020
):
2121
self._uow = uow
2222

23-
async def create_user(self, *, email: str) -> User:
23+
async def create_user(self, *, email: str, role: UserRole = UserRole.user) -> User:
2424
async with self._uow() as uow:
25-
user = User(email=email)
25+
user = User(email=email, role=role)
2626
await uow.users.create(user=user)
2727
await uow.commit()
2828
return user

0 commit comments

Comments
 (0)