- 新增 ConfirmModal 组件,为6处危险操作添加二次确认弹窗 (禁用团队/用户/成员、删除视频×3处) - 所有秒数显示统一为千位分隔符+s后缀(如 36,000s) - 修复 modal/drawer 在 input 中拖拽导致误关闭的 bug (onClick → onMouseDown + e.target === e.currentTarget) - 团队模型完善:三种角色(超管/团管/成员)、四层额度检查、 团管成员管理页、超管团队管理页 - 关闭公开注册,所有账号由管理员创建 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
46 lines
1.4 KiB
Python
46 lines
1.4 KiB
Python
from rest_framework.permissions import BasePermission
|
||
|
||
|
||
class IsSuperAdmin(BasePermission):
|
||
"""超级管理员:is_staff=True 且 team=NULL"""
|
||
def has_permission(self, request, view):
|
||
return (
|
||
request.user
|
||
and request.user.is_authenticated
|
||
and request.user.is_staff
|
||
and request.user.team is None
|
||
)
|
||
|
||
|
||
class IsTeamAdmin(BasePermission):
|
||
"""团队管理员:is_team_admin=True 且 team≠NULL"""
|
||
def has_permission(self, request, view):
|
||
return (
|
||
request.user
|
||
and request.user.is_authenticated
|
||
and request.user.is_team_admin
|
||
and request.user.team is not None
|
||
)
|
||
|
||
|
||
class IsTeamAdminOrSuperAdmin(BasePermission):
|
||
"""团队管理员或超级管理员"""
|
||
def has_permission(self, request, view):
|
||
if not (request.user and request.user.is_authenticated):
|
||
return False
|
||
if request.user.is_staff and request.user.team is None:
|
||
return True
|
||
if request.user.is_team_admin and request.user.team is not None:
|
||
return True
|
||
return False
|
||
|
||
|
||
class IsTeamMember(BasePermission):
|
||
"""团队成员(含团管):team≠NULL"""
|
||
def has_permission(self, request, view):
|
||
return (
|
||
request.user
|
||
and request.user.is_authenticated
|
||
and request.user.team is not None
|
||
)
|