44 lines
1.3 KiB
Python
44 lines
1.3 KiB
Python
|
|
"""
|
||
|
|
Database models for the IAM module
|
||
|
|
|
||
|
|
Models:
|
||
|
|
- List: Description
|
||
|
|
- Models: Description
|
||
|
|
"""
|
||
|
|
from sqlalchemy import Column, Integer, String, ForeignKey, UniqueConstraint
|
||
|
|
|
||
|
|
from src.database import Base
|
||
|
|
|
||
|
|
|
||
|
|
class Permission(Base):
|
||
|
|
__tablename__ = "permission"
|
||
|
|
|
||
|
|
id = Column(Integer, primary_key=True)
|
||
|
|
resource = Column(String, nullable=False)
|
||
|
|
action = Column(String, nullable=False)
|
||
|
|
|
||
|
|
service_id = Column(Integer, ForeignKey("service.id", ondelete="CASCADE"))
|
||
|
|
|
||
|
|
UniqueConstraint("service_id", "resource", "action", name="uniq_permission_resource_and_action")
|
||
|
|
|
||
|
|
|
||
|
|
class Group(Base):
|
||
|
|
__tablename__ = "group"
|
||
|
|
id = Column(Integer, primary_key=True)
|
||
|
|
name = Column(String, nullable=False, unique=True)
|
||
|
|
|
||
|
|
org_id = Column(Integer, ForeignKey("organisation.id", ondelete="CASCADE"))
|
||
|
|
|
||
|
|
|
||
|
|
class GroupPermissions(Base):
|
||
|
|
__tablename__ = "group_permissions"
|
||
|
|
group_id = Column(Integer, ForeignKey("group.id", ondelete="CASCADE"), primary_key=True)
|
||
|
|
permission_id = Column(Integer, ForeignKey("permission.id", ondelete="CASCADE"), primary_key=True)
|
||
|
|
|
||
|
|
|
||
|
|
class UserGroups(Base):
|
||
|
|
__tablename__ = "user_groups"
|
||
|
|
org_id = Column(Integer, ForeignKey("organisation.id", ondelete="CASCADE"), primary_key=True)
|
||
|
|
user_id = Column(Integer, ForeignKey("user.id", ondelete="CASCADE"), primary_key=True)
|
||
|
|
group_id = Column(Integer, ForeignKey("group.id", ondelete="CASCADE"), primary_key=True)
|