fix: Rewrite endpoint to add users to groups
Rewrote endpoint which adds users to groups Fix COG-656
This commit is contained in:
parent
92d0122b46
commit
eddfc17861
2 changed files with 14 additions and 8 deletions
|
|
@ -1,16 +1,18 @@
|
||||||
from fastapi import APIRouter, Depends, HTTPException
|
from fastapi import APIRouter, Depends
|
||||||
from fastapi.responses import JSONResponse
|
from fastapi.responses import JSONResponse
|
||||||
from sqlalchemy.orm import Session
|
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.exceptions import UserNotFoundError, GroupNotFoundError
|
||||||
from cognee.modules.users import get_user_db
|
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:
|
def get_permissions_router() -> APIRouter:
|
||||||
permissions_router = APIRouter()
|
permissions_router = APIRouter()
|
||||||
|
|
||||||
@permissions_router.post("/groups/{group_id}/permissions")
|
@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()
|
group = db.query(Group).filter(Group.id == group_id).first()
|
||||||
|
|
||||||
if not group:
|
if not group:
|
||||||
|
|
@ -29,18 +31,21 @@ def get_permissions_router() -> APIRouter:
|
||||||
return JSONResponse(status_code = 200, content = {"message": "Permission assigned to group"})
|
return JSONResponse(status_code = 200, content = {"message": "Permission assigned to group"})
|
||||||
|
|
||||||
@permissions_router.post("/users/{user_id}/groups")
|
@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)):
|
async def add_user_to_group(user_id: str, group_id: str, db: Session = Depends(get_user_db)):
|
||||||
user = db.query(User).filter(User.id == user_id).first()
|
user = (await db.session.execute(select(User).where(User.id == user_id))).scalars().first()
|
||||||
group = db.query(Group).filter(Group.id == group_id).first()
|
group = (await db.session.execute(select(Group).where(Group.id == group_id))).scalars().first()
|
||||||
|
|
||||||
if not user:
|
if not user:
|
||||||
raise UserNotFoundError
|
raise UserNotFoundError
|
||||||
elif not group:
|
elif not group:
|
||||||
raise GroupNotFoundError
|
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"})
|
return JSONResponse(status_code = 200, content = {"message": "User added to group"})
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
from .User import User
|
from .User import User
|
||||||
from .Group import Group
|
from .Group import Group
|
||||||
|
from .UserGroup import UserGroup
|
||||||
from .Resource import Resource
|
from .Resource import Resource
|
||||||
from .Permission import Permission
|
from .Permission import Permission
|
||||||
from .ACL import ACL
|
from .ACL import ACL
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue