
功能特性: - JWT用户认证系统 - 日报CRUD管理 - 三级权限控制 - 多维度搜索过滤 - 统计分析功能 - 评论互动系统 - 响应式Cool Admin界面 - 暗色主题支持 技术栈: - 后端:Django 4.2.7 + DRF + SimpleJWT - 前端:Vue 3 + Element Plus + Pinia - 数据库:SQLite/PostgreSQL - 部署:Docker + Nginx 包含内容: - 完整的后端API代码 - 现代化前端界面 - 数据库迁移文件 - 部署脚本和文档 - 演示页面和测试工具
66 lines
2.2 KiB
Python
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
|