fix: Resolve issue with adding permissions to groups
Resolve issue with adding permissions to groups Fix COG-656
This commit is contained in:
parent
eddfc17861
commit
b8ba436dba
3 changed files with 25 additions and 9 deletions
|
|
@ -6,27 +6,32 @@ 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, UserGroup
|
from cognee.modules.users.models import User, Group, Permission, UserGroup, GroupPermission
|
||||||
|
|
||||||
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: str, 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 = (await db.session.execute(select(Group).where(Group.id == group_id))).scalars().first()
|
||||||
|
|
||||||
if not group:
|
if not group:
|
||||||
raise GroupNotFoundError
|
raise GroupNotFoundError
|
||||||
|
|
||||||
permission = db.query(Permission).filter(Permission.name == permission).first()
|
permission_entity = (
|
||||||
|
await db.session.execute(select(Permission).where(Permission.name == permission))).scalars().first()
|
||||||
|
|
||||||
if not permission:
|
if not permission_entity:
|
||||||
permission = Permission(name = permission)
|
stmt = insert(Permission).values(name=permission)
|
||||||
db.add(permission)
|
ret_val = await db.session.execute(stmt)
|
||||||
|
|
||||||
group.permissions.append(permission)
|
permission_entity = (
|
||||||
|
await db.session.execute(select(Permission).where(Permission.name == permission))).scalars().first()
|
||||||
|
|
||||||
db.commit()
|
# add permission to group
|
||||||
|
await db.session.execute(insert(GroupPermission).values(group_id=group.id, permission_id=permission_entity.id))
|
||||||
|
|
||||||
|
await db.session.commit()
|
||||||
|
|
||||||
return JSONResponse(status_code = 200, content = {"message": "Permission assigned to group"})
|
return JSONResponse(status_code = 200, content = {"message": "Permission assigned to group"})
|
||||||
|
|
||||||
|
|
@ -43,7 +48,6 @@ def get_permissions_router() -> APIRouter:
|
||||||
# Add association directly to the association table
|
# Add association directly to the association table
|
||||||
stmt = insert(UserGroup).values(user_id=user_id, group_id=group_id)
|
stmt = insert(UserGroup).values(user_id=user_id, group_id=group_id)
|
||||||
await db.session.execute(stmt)
|
await db.session.execute(stmt)
|
||||||
#user.groups.append(group)
|
|
||||||
|
|
||||||
await db.session.commit()
|
await db.session.commit()
|
||||||
|
|
||||||
|
|
|
||||||
11
cognee/modules/users/models/GroupPermission.py
Normal file
11
cognee/modules/users/models/GroupPermission.py
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
from datetime import datetime, timezone
|
||||||
|
from sqlalchemy import Column, ForeignKey, DateTime, UUID
|
||||||
|
from cognee.infrastructure.databases.relational import Base
|
||||||
|
|
||||||
|
class GroupPermission(Base):
|
||||||
|
__tablename__ = "group_permissions"
|
||||||
|
|
||||||
|
created_at = Column(DateTime(timezone = True), default = lambda: datetime.now(timezone.utc))
|
||||||
|
|
||||||
|
group_id = Column(UUID, ForeignKey("groups.id"), primary_key = True)
|
||||||
|
permission_id = Column(UUID, ForeignKey("permissions.id"), primary_key = True)
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
from .User import User
|
from .User import User
|
||||||
from .Group import Group
|
from .Group import Group
|
||||||
from .UserGroup import UserGroup
|
from .UserGroup import UserGroup
|
||||||
|
from .GroupPermission import GroupPermission
|
||||||
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