def get(self, request, version=1, user=None, *args, **kwargs): serializer = serializers.RequestUserAuthDone(data=request.query_params) if serializer.is_valid(): application = Application.find_application( serializer.validated_data['application_id']) if application: res = get_server( application.url, application.application_id, application.secret_token).request_token( redirect_uri='%s?application_id=%s' % (request.build_absolute_uri(reverse("user_auth_done")), application.application_id), code=serializer.validated_data['code'], ) user = User.get_user(username=res.userinfo['nickname'], application=application) if not user: username = '******' % (slugify_name( application.name), res.userinfo['nickname']) user = User.add_user( username, res.userinfo['name'], avatar=res.userinfo['picture'], id_token=res.id_token, access_token=res.access_token, application=application, app_username=res.userinfo['nickname'], openid=res.id, ) token, created = Token.objects.get_or_create(user=user) res = {'token': token.key, 'user': {}} return Response(res, 200) else: return Response({"message": "Application not found."}, status=status.HTTP_400_BAD_REQUEST) else: return Response({"message": serializer.errors}, status=status.HTTP_400_BAD_REQUEST)
def put(self, request, version=1, *args, **kwargs): serializer = serializers.RequestUserAuth(data=request.query_params) if serializer.is_valid(): user = User.get_user( username=serializer.validated_data['username']) if not user: user = User.get_user(email=serializer.validated_data['email']) if user: return Response( {"message": "Email/username is already exists."}, status=status.HTTP_406_NOT_ACCEPTABLE) else: user = User.add_user( serializer.validated_data['username'], serializer.validated_data['fullname'], serializer.validated_data['email'], ) tasks.send_email(user.email, generate_random_code(6), 'activation_code') else: return Response({"message": serializer.errors}, status=status.HTTP_400_BAD_REQUEST)