def sign_in(self, request, pk=None): """ Function will fetch the login credentials and either log the user in or return error. To call this function, use this URL: -------------------------------------------- /api/logins/0/sign_in/?format=json -------------------------------------------- """ serializer = LoginSerializer(data=request.data) if serializer.is_valid(): username = serializer.data['username'].lower() password = serializer.data['password'] try: user = User.objects.get(username=username) except User.DoesNotExist: return Response({'status': 'failed', 'message': 'username not found'}) # Check to see if our username and password authenticate with our system. user = authenticate( username=username, password=password ) # Generate the return message according to whether we are logged in or not. if user is not None: if user.is_active: # Login login(request, user) # Fetch the token id for the user if it exists. If token # doesn't work then we need to create it right now. try: token = Token.objects.get(user_id=request.user.id) except Token.DoesNotExist: token = Token.objects.create(user_id=request.user.id) # Return the success status. response_data = { 'status': 'success', 'message': 'logged in', 'user_id': user.id, 'token': str(token) } else: response_data = {'status' : 'failure', 'message' : 'you are suspended'} else: response_data = {'status' : 'failure', 'message' : 'wrong username or password'} return Response(response_data) else: return Response({'status': 'failed', 'message': 'username and/or password are blank'})
def get(self, request, user_name=None, password=None, format=None): """ Build login API url using payload which is form by username, password, clientid, clientsecret. login API sample URL : http://www.sample.com/mws/oauth/token Args: request: represents a single HTTP request. Request objects also have a few useful methods like GET,POST,DELETE,SESSION etc. user_name: string Grabs username string Default: None password: string Grabs password string Default: None format: string Grabs format string Default: None Returns: login_data, which is reponse of login API url if serializer is valid else returns string 'Config page' Raises: None """ list_creds = [] dict = {} dict["username"] = user_name dict["password"] = password client_id = self.CLIENTID client_secret = self.CLIENTSECRET list_creds.append(dict) serializer = LoginSerializer(data=list_creds, many=True) if serializer.is_valid(): try: payload = "?grant_type=password" + "&username="******"&password="******"&client_id=" + client_id + "&client_secret=" + client_secret loginApi_url = self.baseUrl_login + payload login_data = requests.post(loginApi_url) return login_data except Exception as e: return "Config page" return Response(serializer.errors)
def post(self, request, *args, **kwargs): credentials = LoginSerializer(data=request.data) if not credentials.is_valid(): return Response(status=status.HTTP_400_BAD_REQUEST) user = authenticate(username=request.POST['username'], password=request.POST['password']) if not user: return Response(status=status.HTTP_401_UNAUTHORIZED) # Okay, security check complete. Log the user in. login(request, user) serializer = UserSerializer(user) return Response(serializer.data, status=status.HTTP_200_OK)
def post(self, request): serializer = LoginSerializer(data = request.DATA) if not serializer.is_valid(): return Response({"message":serializer.errors.keys()[0] + " - " + serializer.errors[serializer.errors.keys()[0]][0]}, status.HTTP_400_BAD_REQUEST) username = request.DATA['username'] password = request.DATA['password'] user = authenticate(username = username, password = password) if user is None: return Response({"message":"User does not exist"}, status.HTTP_400_BAD_REQUEST) if not user.is_active: return Response({"message":"User is inactive"}, status.HTTP_400_BAD_REQUEST) login(request, user) return Response({"message":"OK"}, status.HTTP_200_OK)
def post(self, request): serializer = LoginSerializer(data=request.data, context={ 'request': request, }) serializer.is_valid(raise_exception=True) serializer.save() return response.Response( status=status.HTTP_200_OK, data={ 'details': 'You have been logged in successfully!' }, )
def post(self, request): login_serializer = LoginSerializer(data=request.data, context={ 'request': request, }) login_serializer.is_valid(raise_exception=True) login_serializer.save() return response.Response(status=status.HTTP_200_OK, data={ 'message': 'Login successfully.', })