permission.py 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. # coding=utf-8
  2. from rest_framework import permissions
  3. from utils.exceptions import CustomError
  4. from apps.customer.models import Customer
  5. class IsCustomerUser(permissions.BasePermission):
  6. def has_permission(self, request, view):
  7. if not request.user or not request.user.is_authenticated:
  8. return False
  9. if not request.user.is_customer():
  10. return False
  11. customer = Customer.objects.filter(user_id=request.user.id).first()
  12. if not customer:
  13. return False
  14. request.customer = customer
  15. return True
  16. class isLogin(permissions.BasePermission):
  17. def has_permission(self, request, view):
  18. if not request.user or not request.user.is_authenticated:
  19. return False
  20. return True
  21. def check_permission(request, perm):
  22. if not request.user or not request.user.is_authenticated:
  23. raise CustomError(u"身份认证失败,请重新登录!")
  24. from django.contrib.auth.models import Permission
  25. ps = perm.split('.')
  26. if request.user.has_perm(perm):
  27. return True
  28. else:
  29. try:
  30. p = Permission.objects.get(codename=ps[1], content_type__app_label=ps[0])
  31. except:
  32. raise CustomError(u"权限配置错误!")
  33. raise CustomError(u"您没有[%s--%s]权限,无法执行该操作,请联系管理员分配权限!" % (p.content_type.name, p.name))
  34. decorator_with_arguments = lambda decorator: lambda *args, **kwargs: lambda func: decorator(func, *args, **kwargs)
  35. @decorator_with_arguments
  36. def permission_required(function, perm):
  37. def _function(viewset, *args, **kwargs):
  38. # user_id = viewset.request.META.get('HTTP_USER_ID')
  39. # token = viewset.request.META.get('HTTP_Authorization')
  40. # if user_id and token:
  41. # try:
  42. # user = User.objects.get(pk=user_id)
  43. # except:
  44. # return ForbiddenJSONResponse()
  45. # valid = token_generator.check_token(user, token)
  46. # if valid:
  47. # request.user = user
  48. # viewset.request.user = user
  49. # else:
  50. # return ForbiddenJSONResponse()
  51. if viewset.request.user.has_perm(perm):
  52. return function(viewset, *args, **kwargs)
  53. else:
  54. from django.contrib.auth.models import Permission
  55. ps = perm.split('.')
  56. try:
  57. p = Permission.objects.get(codename=ps[1], content_type__app_label=ps[0])
  58. except:
  59. raise CustomError(u"权限配置错误!")
  60. raise CustomError(u"您没有[%s-%s]权限,无法执行该操作,请联系管理员分配权限!" % (p.content_type.name, p.name))
  61. return _function