def applications(self, request): """查询application信息 """ check_permission((IsAuthenticated, ), self, request) instances = Application.objects.filter(owner=request.user) serializer = ApplicationSerializer(instances, many=True) return Response(serializer.data)
def token(self, request, *args, **kwargs): """ Get open problem detail """ check_permission((IsAuthenticated, ), self, request) token = q.upload_token(bucket_name, None, 7200, policy) return Response({"token": token})
def list(self, request, *args, **kwargs): """ 展示用户名下的 所有 Social Oauth 信息 """ check_permission((IsAuthenticated, ), self=self, request=request) socials = self.queryset.filter(user=request.user) return Response(data={SocialAccountSerializer(socials, many=True)}, status=status.HTTP_200_OK)
def register(self, request): """注册一个application """ check_permission((IsAuthenticated, ), self, request) serializer = ApplicationRegisterSerializer(data=request.data) serializer.is_valid(raise_exception=True) serializer.save(owner=request.user) return Response(data=serializer.data)
def update(self, request, *args, **kwargs): """ 修改用户信息 """ check_permission((IsAuthenticated, IsAdminOrSelf), self, request) instance = request.user serializer = ProfileChangeSerializer(instance, data=request.data) serializer.is_valid(raise_exception=True) serializer.save() return Response(data=serializer.data)
def binding(self, request): check_permission((IsAuthenticated, ), self=self, request=request) serializer = SocialAuthSerializer(data=request.data) serializer.is_valid(raise_exception=True) try: SocialOauthService.binding(request.user, serializer.data['provider'], serializer.data['code']) return Response(data={'detail': '绑定成功'}, status=status.HTTP_200_OK) except SocialOauthHasBound: return Response(data={'detail': '社交帐号已被其它帐号绑定'}, status=status.HTTP_403_FORBIDDEN)
def authorize(self, request): """获取code :param: client_id: [redirect_url]: [scope]: [state]: Returns: code """ check_permission((IsAuthenticated, ), self, request) serializer = ApplicationAuthSerializer(data=request.GET) serializer.is_valid(raise_exception=True) try: grant = OauthService.grant(serializer.data['client_id'], request.user) except ApplicationNotExist: return Response(data={'detail': '应用不存在'}, status=status.HTTP_403_FORBIDDEN) return HttpResponseRedirect(grant.application.redirect_uri + '?code=' + grant.code)