From 6ecd93bfb108b5e680d7d86f69e979687c52ecc3 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Wed, 25 Mar 2020 09:51:30 +0800 Subject: [PATCH] authenction --- test_mini/pages/collect/main.wxml | 2 +- test_mini/pages/cuoti/index.wxml | 2 +- test_mini/pages/lianxi/main.wxml | 2 +- test_mini/pages/test/detail.wxml | 2 +- test_server/crm/permission.py | 6 +++ test_server/crm/views.py | 6 ++- test_server/server/settings.py | 3 ++ test_server/utils/custom.py | 86 +++++++++++++++---------------- 8 files changed, 60 insertions(+), 49 deletions(-) create mode 100644 test_server/crm/permission.py diff --git a/test_mini/pages/collect/main.wxml b/test_mini/pages/collect/main.wxml index 69f8d35..759708b 100644 --- a/test_mini/pages/collect/main.wxml +++ b/test_mini/pages/collect/main.wxml @@ -45,7 +45,7 @@ 正确答案是{{tm_current.right}},你的答案是{{tm_current.user_answer}} 解析: - {{tm_current.resoluation}} + {{tm_current.resolution}} diff --git a/test_mini/pages/cuoti/index.wxml b/test_mini/pages/cuoti/index.wxml index 3f5b0e2..40d6748 100644 --- a/test_mini/pages/cuoti/index.wxml +++ b/test_mini/pages/cuoti/index.wxml @@ -45,7 +45,7 @@ 正确答案是{{currentTm.right}},你的答案是{{currentTm.user_answer}} 解析: - {{currentTm.resoluation}} + {{currentTm.resolution}} diff --git a/test_mini/pages/lianxi/main.wxml b/test_mini/pages/lianxi/main.wxml index f1caa53..e30667f 100644 --- a/test_mini/pages/lianxi/main.wxml +++ b/test_mini/pages/lianxi/main.wxml @@ -41,7 +41,7 @@ 正确答案是{{tm_current.right}},你的答案是{{tm_current.user_answer}} 解析: - {{tm_current.resoluation}} + {{tm_current.resolution}} diff --git a/test_mini/pages/test/detail.wxml b/test_mini/pages/test/detail.wxml index 83dd76b..869b807 100644 --- a/test_mini/pages/test/detail.wxml +++ b/test_mini/pages/test/detail.wxml @@ -41,7 +41,7 @@ 正确答案是{{tm_current.question.right}},你的答案是{{tm_current.user_answer}} 解析: - {{tm_current.question.resoluation}} + {{tm_current.question.resolution}} diff --git a/test_server/crm/permission.py b/test_server/crm/permission.py new file mode 100644 index 0000000..69a8e61 --- /dev/null +++ b/test_server/crm/permission.py @@ -0,0 +1,6 @@ +from rest_framework.permissions import IsAuthenticated + + +class IsConsumerAuthenticated(IsAuthenticated): + def has_permission(self, request, view): + return bool(request.user) \ No newline at end of file diff --git a/test_server/crm/views.py b/test_server/crm/views.py index 35ab9fd..56c39e4 100644 --- a/test_server/crm/views.py +++ b/test_server/crm/views.py @@ -9,6 +9,7 @@ from rest_framework import status from django_filters.rest_framework import DjangoFilterBackend from openpyxl import Workbook, load_workbook import requests +from rest_framework_jwt.authentication import JSONWebTokenAuthentication from rest_framework_jwt.serializers import jwt_encode_handler import json import random @@ -22,6 +23,7 @@ import warnings from utils.custom import CommonPagination from rbac.permission import RbacPermission from crm.authentication import ConsumerTokenAuthentication +from crm.permission import IsConsumerAuthenticated from .models import Company, Consumer, PaySubject, SendCode from .serializers import CompanySerializer, ConsumerSerializer from question.serializers import QuestionSerializer @@ -129,7 +131,7 @@ class ConsumerViewSet(ModelViewSet): PaySubject.objects.get_or_create(consumer = instance, subject__id=i, defaults={'consumer':instance,'subject':Questioncat.objects.get(id=i)}) return Response(serializer.data) - @action(methods=['get'], detail=False, permission_classes=[], authentication_classes=[ConsumerTokenAuthentication], + @action(methods=['get'], detail=False, permission_classes=[IsConsumerAuthenticated], authentication_classes=[ConsumerTokenAuthentication], url_path='subjectpaid', url_name='subject_paid') def has_paid(self, request): """ @@ -156,7 +158,7 @@ class ConsumerViewSet(ModelViewSet): else: return Response({'error':result['data']}) - @action(methods=['post','delete','get'], detail=False, permission_classes=[], authentication_classes=[ConsumerTokenAuthentication], + @action(methods=['post','delete','get'], detail=False, permission_classes=[IsConsumerAuthenticated], authentication_classes=[ConsumerTokenAuthentication], url_path='collects', url_name='create_collects') def collects(self, request): ''' diff --git a/test_server/server/settings.py b/test_server/server/settings.py index 149c0c2..e8c9430 100644 --- a/test_server/server/settings.py +++ b/test_server/server/settings.py @@ -141,6 +141,7 @@ STATIC_ROOT = os.path.join(BASE_DIR,'static') REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATION_CLASSES': [ 'rest_framework_jwt.authentication.JSONWebTokenAuthentication', + 'rest_framework.authentication.BasicAuthentication', ], 'DEFAULT_PERMISSION_CLASSES':[ 'rest_framework.permissions.IsAuthenticated', @@ -150,6 +151,8 @@ REST_FRAMEWORK = { 'DEFAULT_FILTER_BACKENDS': ['django_filters.rest_framework.DjangoFilterBackend'], # 指定用于支持coreapi的Schema 'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.coreapi.AutoSchema', + 'UNAUTHENTICATED_USER': None, + 'UNAUTHENTICATED_TOKEN': None, } JWT_AUTH = { diff --git a/test_server/utils/custom.py b/test_server/utils/custom.py index 56c4d74..f7982c8 100644 --- a/test_server/utils/custom.py +++ b/test_server/utils/custom.py @@ -21,55 +21,55 @@ class CommonPagination(PageNumberPagination): """ page_size = 10 page_size_query_param = 'limit' - def paginate_queryset(self, queryset, request, view=None): - """ - 重写该方法,确保post请求也可分页 - """ - page_size = self.get_page_size(request) - if not page_size: - return None + # def paginate_queryset(self, queryset, request, view=None): + # """ + # 重写该方法,确保post请求也可分页 + # """ + # page_size = self.get_page_size(request) + # if not page_size: + # return None - paginator = self.django_paginator_class(queryset, page_size) - if self.page_query_param in request.query_params: - page_number = request.query_params.get(self.page_query_param) - elif self.page_query_param in request.data: - page_number = request.data.get(self.page_query_param) - else: - page_number = 1 - if page_number in self.last_page_strings: - page_number = paginator.num_pages + # paginator = self.django_paginator_class(queryset, page_size) + # if self.page_query_param in request.query_params: + # page_number = request.query_params.get(self.page_query_param) + # elif self.page_query_param in request.data: + # page_number = request.data.get(self.page_query_param) + # else: + # page_number = 1 + # if page_number in self.last_page_strings: + # page_number = paginator.num_pages - try: - self.page = paginator.page(page_number) - except InvalidPage as exc: - msg = self.invalid_page_message.format( - page_number=page_number, message=str(exc) - ) - raise NotFound(msg) + # try: + # self.page = paginator.page(page_number) + # except InvalidPage as exc: + # msg = self.invalid_page_message.format( + # page_number=page_number, message=str(exc) + # ) + # raise NotFound(msg) - if paginator.num_pages > 1 and self.template is not None: - # The browsable API should display pagination controls. - self.display_page_controls = True + # if paginator.num_pages > 1 and self.template is not None: + # # The browsable API should display pagination controls. + # self.display_page_controls = True - self.request = request - return list(self.page) + # self.request = request + # return list(self.page) - def get_page_size(self, request): - if self.page_size_query_param: - try: - if self.page_size_query_param in request.query_params: - page_size = request.query_params.get(self.page_size_query_param) - else: - page_size = request.data.get(self.page_size_query_param) - return _positive_int( - page_size, - strict=True, - cutoff=self.max_page_size - ) - except (KeyError, ValueError): - pass + # def get_page_size(self, request): + # if self.page_size_query_param: + # try: + # if self.page_size_query_param in request.query_params: + # page_size = request.query_params.get(self.page_size_query_param) + # else: + # page_size = request.data.get(self.page_size_query_param) + # return _positive_int( + # page_size, + # strict=True, + # cutoff=self.max_page_size + # ) + # except (KeyError, ValueError): + # pass - return self.page_size + # return self.page_size class TreeSerializer(serializers.Serializer):