feat: add admin session rbac foundation
This commit is contained in:
1 parent
8f000811a8
commit
2cdf7f9d7a
22 files changed
+1945
-68
No files matched your search
+113
-17
@@ -30,7 +30,103 @@ class AdminUser(Base):
|
||||
assignedLeads: Mapped[list["Lead"]] = relationship(back_populates="assignedUser", foreign_keys="Lead.assignedUserId")
|
||||
|
||||
|
||||
class MediaAsset(Base):
|
||||
class AdminRole(Base):
|
||||
__tablename__ = "AdminRole"
|
||||
__table_args__ = (UniqueConstraint("code", name="uq_AdminRole_code"),)
|
||||
|
||||
id: Mapped[str] = mapped_column(String, primary_key=True, default=new_id)
|
||||
name: Mapped[str] = mapped_column(String, nullable=False)
|
||||
code: Mapped[str] = mapped_column(String, nullable=False)
|
||||
dataScope: Mapped[str] = mapped_column(String, default="all", nullable=False)
|
||||
description: Mapped[str | None] = mapped_column(Text)
|
||||
isActive: Mapped[bool] = mapped_column(Boolean, default=True, nullable=False)
|
||||
createdAt: Mapped[datetime] = mapped_column(DateTime, default=utc_now, nullable=False)
|
||||
updatedAt: Mapped[datetime] = mapped_column(DateTime, default=utc_now, onupdate=utc_now, nullable=False)
|
||||
|
||||
|
||||
class AdminMenu(Base):
|
||||
__tablename__ = "AdminMenu"
|
||||
__table_args__ = (UniqueConstraint("permissionCode", name="uq_AdminMenu_permissionCode"),)
|
||||
|
||||
id: Mapped[str] = mapped_column(String, primary_key=True, default=new_id)
|
||||
parentId: Mapped[str | None] = mapped_column(String, ForeignKey("AdminMenu.id", ondelete="CASCADE"))
|
||||
name: Mapped[str] = mapped_column(String, nullable=False)
|
||||
type: Mapped[str] = mapped_column(String, default="page", nullable=False)
|
||||
path: Mapped[str | None] = mapped_column(String)
|
||||
componentKey: Mapped[str | None] = mapped_column(String)
|
||||
permissionCode: Mapped[str | None] = mapped_column(String)
|
||||
icon: Mapped[str | None] = mapped_column(String)
|
||||
sortOrder: Mapped[int] = mapped_column(Integer, default=0, nullable=False)
|
||||
isVisible: Mapped[bool] = mapped_column(Boolean, default=True, nullable=False)
|
||||
isActive: Mapped[bool] = mapped_column(Boolean, default=True, nullable=False)
|
||||
createdAt: Mapped[datetime] = mapped_column(DateTime, default=utc_now, nullable=False)
|
||||
updatedAt: Mapped[datetime] = mapped_column(DateTime, default=utc_now, onupdate=utc_now, nullable=False)
|
||||
|
||||
|
||||
class AdminDepartment(Base):
|
||||
__tablename__ = "AdminDepartment"
|
||||
|
||||
id: Mapped[str] = mapped_column(String, primary_key=True, default=new_id)
|
||||
parentId: Mapped[str | None] = mapped_column(String, ForeignKey("AdminDepartment.id", ondelete="SET NULL"))
|
||||
name: Mapped[str] = mapped_column(String, nullable=False)
|
||||
sortOrder: Mapped[int] = mapped_column(Integer, default=0, nullable=False)
|
||||
isActive: Mapped[bool] = mapped_column(Boolean, default=True, nullable=False)
|
||||
createdAt: Mapped[datetime] = mapped_column(DateTime, default=utc_now, nullable=False)
|
||||
updatedAt: Mapped[datetime] = mapped_column(DateTime, default=utc_now, onupdate=utc_now, nullable=False)
|
||||
|
||||
|
||||
class AdminUserRole(Base):
|
||||
__tablename__ = "AdminUserRole"
|
||||
|
||||
userId: Mapped[str] = mapped_column(String, ForeignKey("AdminUser.id", ondelete="CASCADE"), primary_key=True)
|
||||
roleId: Mapped[str] = mapped_column(String, ForeignKey("AdminRole.id", ondelete="CASCADE"), primary_key=True)
|
||||
createdAt: Mapped[datetime] = mapped_column(DateTime, default=utc_now, nullable=False)
|
||||
|
||||
|
||||
class AdminRoleMenu(Base):
|
||||
__tablename__ = "AdminRoleMenu"
|
||||
|
||||
roleId: Mapped[str] = mapped_column(String, ForeignKey("AdminRole.id", ondelete="CASCADE"), primary_key=True)
|
||||
menuId: Mapped[str] = mapped_column(String, ForeignKey("AdminMenu.id", ondelete="CASCADE"), primary_key=True)
|
||||
createdAt: Mapped[datetime] = mapped_column(DateTime, default=utc_now, nullable=False)
|
||||
|
||||
|
||||
class AdminUserDepartment(Base):
|
||||
__tablename__ = "AdminUserDepartment"
|
||||
|
||||
userId: Mapped[str] = mapped_column(String, ForeignKey("AdminUser.id", ondelete="CASCADE"), primary_key=True)
|
||||
deptId: Mapped[str] = mapped_column(String, ForeignKey("AdminDepartment.id", ondelete="CASCADE"), primary_key=True)
|
||||
createdAt: Mapped[datetime] = mapped_column(DateTime, default=utc_now, nullable=False)
|
||||
|
||||
|
||||
class AdminRoleDepartment(Base):
|
||||
__tablename__ = "AdminRoleDepartment"
|
||||
|
||||
roleId: Mapped[str] = mapped_column(String, ForeignKey("AdminRole.id", ondelete="CASCADE"), primary_key=True)
|
||||
deptId: Mapped[str] = mapped_column(String, ForeignKey("AdminDepartment.id", ondelete="CASCADE"), primary_key=True)
|
||||
createdAt: Mapped[datetime] = mapped_column(DateTime, default=utc_now, nullable=False)
|
||||
|
||||
|
||||
DEFAULT_ADMIN_DEPT_ID = "00000000-0000-0000-0000-000000000001"
|
||||
|
||||
|
||||
class AdminOwnedContent:
|
||||
deptId: Mapped[str] = mapped_column(
|
||||
String,
|
||||
ForeignKey("AdminDepartment.id", ondelete="RESTRICT"),
|
||||
nullable=False,
|
||||
index=True,
|
||||
server_default=DEFAULT_ADMIN_DEPT_ID,
|
||||
)
|
||||
createdById: Mapped[str | None] = mapped_column(
|
||||
String,
|
||||
ForeignKey("AdminUser.id", ondelete="SET NULL"),
|
||||
nullable=True,
|
||||
index=True,
|
||||
)
|
||||
|
||||
|
||||
class MediaAsset(AdminOwnedContent, Base):
|
||||
__tablename__ = "MediaAsset"
|
||||
|
||||
id: Mapped[str] = mapped_column(String, primary_key=True, default=new_id)
|
||||
@@ -43,7 +139,7 @@ class MediaAsset(Base):
|
||||
updatedAt: Mapped[datetime] = mapped_column(DateTime, default=utc_now, onupdate=utc_now, nullable=False)
|
||||
|
||||
|
||||
class HeroSlide(Base):
|
||||
class HeroSlide(AdminOwnedContent, Base):
|
||||
__tablename__ = "HeroSlide"
|
||||
|
||||
id: Mapped[str] = mapped_column(String, primary_key=True, default=new_id)
|
||||
@@ -59,7 +155,7 @@ class HeroSlide(Base):
|
||||
updatedAt: Mapped[datetime] = mapped_column(DateTime, default=utc_now, onupdate=utc_now, nullable=False)
|
||||
|
||||
|
||||
class DestinationHero(Base):
|
||||
class DestinationHero(AdminOwnedContent, Base):
|
||||
__tablename__ = "DestinationHero"
|
||||
|
||||
id: Mapped[str] = mapped_column(String, primary_key=True, default=new_id)
|
||||
@@ -72,7 +168,7 @@ class DestinationHero(Base):
|
||||
updatedAt: Mapped[datetime] = mapped_column(DateTime, default=utc_now, onupdate=utc_now, nullable=False)
|
||||
|
||||
|
||||
class VehicleOption(Base):
|
||||
class VehicleOption(AdminOwnedContent, Base):
|
||||
__tablename__ = "VehicleOption"
|
||||
|
||||
id: Mapped[str] = mapped_column(String, primary_key=True, default=new_id)
|
||||
@@ -85,7 +181,7 @@ class VehicleOption(Base):
|
||||
updatedAt: Mapped[datetime] = mapped_column(DateTime, default=utc_now, onupdate=utc_now, nullable=False)
|
||||
|
||||
|
||||
class VehicleServiceConfig(Base):
|
||||
class VehicleServiceConfig(AdminOwnedContent, Base):
|
||||
__tablename__ = "VehicleServiceConfig"
|
||||
|
||||
id: Mapped[str] = mapped_column(String, primary_key=True, default=new_id)
|
||||
@@ -99,7 +195,7 @@ class VehicleServiceConfig(Base):
|
||||
updatedAt: Mapped[datetime] = mapped_column(DateTime, default=utc_now, onupdate=utc_now, nullable=False)
|
||||
|
||||
|
||||
class HomeExperience(Base):
|
||||
class HomeExperience(AdminOwnedContent, Base):
|
||||
__tablename__ = "HomeExperience"
|
||||
|
||||
id: Mapped[str] = mapped_column(String, primary_key=True, default=new_id)
|
||||
@@ -115,7 +211,7 @@ class HomeExperience(Base):
|
||||
updatedAt: Mapped[datetime] = mapped_column(DateTime, default=utc_now, onupdate=utc_now, nullable=False)
|
||||
|
||||
|
||||
class HomeTeamBuilding(Base):
|
||||
class HomeTeamBuilding(AdminOwnedContent, Base):
|
||||
__tablename__ = "HomeTeamBuilding"
|
||||
|
||||
id: Mapped[str] = mapped_column(String, primary_key=True, default=new_id)
|
||||
@@ -132,7 +228,7 @@ class HomeTeamBuilding(Base):
|
||||
updatedAt: Mapped[datetime] = mapped_column(DateTime, default=utc_now, onupdate=utc_now, nullable=False)
|
||||
|
||||
|
||||
class HomeWildArchive(Base):
|
||||
class HomeWildArchive(AdminOwnedContent, Base):
|
||||
__tablename__ = "HomeWildArchive"
|
||||
|
||||
id: Mapped[str] = mapped_column(String, primary_key=True, default=new_id)
|
||||
@@ -146,7 +242,7 @@ class HomeWildArchive(Base):
|
||||
updatedAt: Mapped[datetime] = mapped_column(DateTime, default=utc_now, onupdate=utc_now, nullable=False)
|
||||
|
||||
|
||||
class HomeWanfaRecommendation(Base):
|
||||
class HomeWanfaRecommendation(AdminOwnedContent, Base):
|
||||
__tablename__ = "HomeWanfaRecommendation"
|
||||
__table_args__ = (
|
||||
UniqueConstraint("categoryId", name="uq_HomeWanfaRecommendation_categoryId"),
|
||||
@@ -167,7 +263,7 @@ class HomeWanfaRecommendation(Base):
|
||||
category: Mapped["WanfaCategory"] = relationship(back_populates="recommendations")
|
||||
|
||||
|
||||
class WanfaCategory(Base):
|
||||
class WanfaCategory(AdminOwnedContent, Base):
|
||||
__tablename__ = "WanfaCategory"
|
||||
|
||||
id: Mapped[str] = mapped_column(String, primary_key=True, default=new_id)
|
||||
@@ -183,7 +279,7 @@ class WanfaCategory(Base):
|
||||
recommendations: Mapped[list[HomeWanfaRecommendation]] = relationship(back_populates="category")
|
||||
|
||||
|
||||
class WanfaRoute(Base):
|
||||
class WanfaRoute(AdminOwnedContent, Base):
|
||||
__tablename__ = "WanfaRoute"
|
||||
|
||||
id: Mapped[str] = mapped_column(String, primary_key=True, default=new_id)
|
||||
@@ -205,7 +301,7 @@ class WanfaRoute(Base):
|
||||
category: Mapped[WanfaCategory] = relationship(back_populates="routes")
|
||||
|
||||
|
||||
class DetailRecord(Base):
|
||||
class DetailRecord(AdminOwnedContent, Base):
|
||||
__tablename__ = "DetailRecord"
|
||||
|
||||
id: Mapped[str] = mapped_column(String, primary_key=True, default=new_id)
|
||||
@@ -227,7 +323,7 @@ class DetailRecord(Base):
|
||||
updatedAt: Mapped[datetime] = mapped_column(DateTime, default=utc_now, onupdate=utc_now, nullable=False)
|
||||
|
||||
|
||||
class ConciergeAdvisor(Base):
|
||||
class ConciergeAdvisor(AdminOwnedContent, Base):
|
||||
__tablename__ = "ConciergeAdvisor"
|
||||
|
||||
id: Mapped[str] = mapped_column(String, primary_key=True, default=new_id)
|
||||
@@ -242,7 +338,7 @@ class ConciergeAdvisor(Base):
|
||||
updatedAt: Mapped[datetime] = mapped_column(DateTime, default=utc_now, onupdate=utc_now, nullable=False)
|
||||
|
||||
|
||||
class DemandHero(Base):
|
||||
class DemandHero(AdminOwnedContent, Base):
|
||||
__tablename__ = "DemandHero"
|
||||
|
||||
id: Mapped[str] = mapped_column(String, primary_key=True, default=new_id)
|
||||
@@ -256,7 +352,7 @@ class DemandHero(Base):
|
||||
updatedAt: Mapped[datetime] = mapped_column(DateTime, default=utc_now, onupdate=utc_now, nullable=False)
|
||||
|
||||
|
||||
class DemandFeatureCard(Base):
|
||||
class DemandFeatureCard(AdminOwnedContent, Base):
|
||||
__tablename__ = "DemandFeatureCard"
|
||||
|
||||
id: Mapped[str] = mapped_column(String, primary_key=True, default=new_id)
|
||||
@@ -268,7 +364,7 @@ class DemandFeatureCard(Base):
|
||||
updatedAt: Mapped[datetime] = mapped_column(DateTime, default=utc_now, onupdate=utc_now, nullable=False)
|
||||
|
||||
|
||||
class DemandForm(Base):
|
||||
class DemandForm(AdminOwnedContent, Base):
|
||||
__tablename__ = "DemandForm"
|
||||
|
||||
id: Mapped[str] = mapped_column(String, primary_key=True, default=new_id)
|
||||
@@ -285,7 +381,7 @@ class DemandForm(Base):
|
||||
updatedAt: Mapped[datetime] = mapped_column(DateTime, default=utc_now, onupdate=utc_now, nullable=False)
|
||||
|
||||
|
||||
class Lead(Base):
|
||||
class Lead(AdminOwnedContent, Base):
|
||||
__tablename__ = "Lead"
|
||||
|
||||
id: Mapped[str] = mapped_column(String, primary_key=True, default=new_id)
|
||||
|
||||
Reference in new issue
Block a user