diff --git a/cognee/api/v1/permissions/routers/get_permissions_router.py b/cognee/api/v1/permissions/routers/get_permissions_router.py index 8d012d600..77ae5e4e6 100644 --- a/cognee/api/v1/permissions/routers/get_permissions_router.py +++ b/cognee/api/v1/permissions/routers/get_permissions_router.py @@ -1,16 +1,18 @@ -from fastapi import APIRouter, Depends, HTTPException +from fastapi import APIRouter, Depends from fastapi.responses import JSONResponse from sqlalchemy.orm import Session +from sqlalchemy.future import select +from sqlalchemy import insert from cognee.modules.users.exceptions import UserNotFoundError, GroupNotFoundError from cognee.modules.users import get_user_db -from cognee.modules.users.models import User, Group, Permission +from cognee.modules.users.models import User, Group, Permission, UserGroup def get_permissions_router() -> APIRouter: permissions_router = APIRouter() @permissions_router.post("/groups/{group_id}/permissions") - async def give_permission_to_group(group_id: int, permission: str, db: Session = Depends(get_user_db)): + async def give_permission_to_group(group_id: str, permission: str, db: Session = Depends(get_user_db)): group = db.query(Group).filter(Group.id == group_id).first() if not group: @@ -29,18 +31,21 @@ def get_permissions_router() -> APIRouter: return JSONResponse(status_code = 200, content = {"message": "Permission assigned to group"}) @permissions_router.post("/users/{user_id}/groups") - async def add_user_to_group(user_id: int, group_id: int, db: Session = Depends(get_user_db)): - user = db.query(User).filter(User.id == user_id).first() - group = db.query(Group).filter(Group.id == group_id).first() + async def add_user_to_group(user_id: str, group_id: str, db: Session = Depends(get_user_db)): + user = (await db.session.execute(select(User).where(User.id == user_id))).scalars().first() + group = (await db.session.execute(select(Group).where(Group.id == group_id))).scalars().first() if not user: raise UserNotFoundError elif not group: raise GroupNotFoundError - user.groups.append(group) + # Add association directly to the association table + stmt = insert(UserGroup).values(user_id=user_id, group_id=group_id) + await db.session.execute(stmt) + #user.groups.append(group) - db.commit() + await db.session.commit() return JSONResponse(status_code = 200, content = {"message": "User added to group"}) diff --git a/cognee/modules/users/models/__init__.py b/cognee/modules/users/models/__init__.py index 7dc1bf8ca..3d359da76 100644 --- a/cognee/modules/users/models/__init__.py +++ b/cognee/modules/users/models/__init__.py @@ -1,5 +1,6 @@ from .User import User from .Group import Group +from .UserGroup import UserGroup from .Resource import Resource from .Permission import Permission from .ACL import ACL