fix: Rewrite endpoint to add users to groups

Rewrote endpoint which adds users to groups

Fix COG-656
This commit is contained in:
Igor Ilic 2024-12-13 12:13:42 +01:00
parent 92d0122b46
commit eddfc17861
2 changed files with 14 additions and 8 deletions

View file

@ -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"})

View file

@ -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