Files
jiangmingzhao-daily-report/backend/daily_report/permissions.py
jiangmingzhao 9b9ee273fc 初始提交:企业级日报系统完整代码
功能特性:
-  JWT用户认证系统
-  日报CRUD管理
-  三级权限控制
-  多维度搜索过滤
-  统计分析功能
-  评论互动系统
-  响应式Cool Admin界面
-  暗色主题支持

 技术栈:
- 后端:Django 4.2.7 + DRF + SimpleJWT
- 前端:Vue 3 + Element Plus + Pinia
- 数据库:SQLite/PostgreSQL
- 部署:Docker + Nginx

 包含内容:
- 完整的后端API代码
- 现代化前端界面
- 数据库迁移文件
- 部署脚本和文档
- 演示页面和测试工具
2025-09-13 14:35:15 +08:00

66 lines
2.2 KiB
Python

from rest_framework import permissions
class IsOwnerOrStaff(permissions.BasePermission):
"""
自定义权限:只有日报的创建者或管理员才能访问
"""
def has_object_permission(self, request, view, obj):
# 读取权限:管理员可以查看所有日报,普通用户只能查看自己的日报
if request.method in permissions.SAFE_METHODS:
return obj.user == request.user or request.user.is_staff
# 写入权限:只有创建者或管理员可以修改/删除
return obj.user == request.user or request.user.is_staff
class IsOwnerOrStaffReadOnly(permissions.BasePermission):
"""
自定义权限:管理员可以查看所有日报,普通用户只能查看自己的日报
管理员对他人日报只有只读权限
"""
def has_object_permission(self, request, view, obj):
# 如果是日报创建者,拥有完全权限
if obj.user == request.user:
return True
# 如果是管理员,只有读取权限
if request.user.is_staff:
return request.method in permissions.SAFE_METHODS
# 其他情况拒绝访问
return False
class IsCommentOwnerOrStaff(permissions.BasePermission):
"""
评论权限:只有评论创建者或管理员可以修改/删除评论
"""
def has_object_permission(self, request, view, obj):
# 读取权限:所有认证用户都可以查看评论
if request.method in permissions.SAFE_METHODS:
return True
# 写入权限:只有评论创建者或管理员可以修改/删除
return obj.user == request.user or request.user.is_staff
class CanViewReports(permissions.BasePermission):
"""
日报查看权限:管理员可以查看所有日报,普通用户只能查看自己的日报
"""
def has_permission(self, request, view):
return request.user and request.user.is_authenticated
def has_object_permission(self, request, view, obj):
# 管理员可以查看所有日报
if request.user.is_staff:
return True
# 普通用户只能查看自己的日报
return obj.user == request.user