Example #1
0
    def get_credentials(self, social_network, token_id):
        cookie_value = self.request.cookies.get("session")
        # Obtains info related to the user authenticated in the system
        if not cookie_value == None:
            logged_user = self.getUserInfo(cookie_value)
            # Searchs for user"s credentials
            if not logged_user == None:
                # Obtains user info
                logged_user_id = ndb_pb.getUserId(logged_user)

                # Obtains user credentials
                user_credentials = ndb_pb.getToken(token_id, social_network)
                if not user_credentials == None:
                    if user_credentials["user_id"] == logged_user_id:
                        response = \
                            {"user_id": user_credentials["user_id"],
                            "access_token": user_credentials["token"]}
                        self.response.content_type = "application/json"
                        self.response.write(json.dumps(response))
                        self.response.set_status(200)
                    else:
                        response = {"user_id": user_credentials["user_id"]}
                        self.response.content_type = "application/json"
                        self.response.write(json.dumps(response))
                        self.response.set_status(200)
                else:
                    response = \
                        {"error": "The active user does not have a pair of token_id" \
                         + " and access_token in " + social_network + " stored in the system"}
                    self.response.content_type = "application/json"
                    self.response.write(json.dumps(response))
                    self.response.set_status(404)
            else:
                response = \
                {"error": "The cookie session provided does not belongs to any active user"}
                self.response.content_type = "application/json"
                self.response.write(json.dumps(response))
                self.response.set_status(400)       
        # If we don't provide a cookie in the request, we search for the token in the system
        # and return a 200 o 404 status. It is a request included in the login flow of the system
        else:
            user_credentials = ndb_pb.getToken(token_id,social_network)
            if not user_credentials == None:
                response = {"user_id": user_credentials["user_id"]}
                self.response.content_type = "application/json"
                self.response.write(json.dumps(response))
                self.response.set_status(200)   
            else:
                response =  {"error": "Token not found in the system"}
                self.response.content_type = "application/json"
                self.response.write(json.dumps(response))
                self.response.set_status(404)
Example #2
0
    def post_credentials(self, social_network):
        cookie_value = self.request.cookies.get("session")
        if not cookie_value == None:
            user = self.getUserInfo(cookie_value)
            if not user == None:
                try:
                    # Gets the data from the request form
                    access_token = self.request.POST["access_token"]
                    token_id = self.request.POST["token_id"]

                    # Checks if the username was stored previously
                    stored_credentials = ndb_pb.getToken(token_id,
                            social_network)
                    if stored_credentials == None:
                        # Adds the token to the user credentials list
                        ndb_pb.insertToken(user, social_network, access_token, token_id)
                        #Builds the response
                        user_id = ndb_pb.getUserId(user)
                        response = {"user_id": user_id}
                        self.response.content_type = "application/json"
                        self.response.write(json.dumps(response))    
                        self.response.set_status(201)
                    else:
                        # We update the user credentials
                        user_id = ndb_pb.modifyToken(token_id, access_token,
                                social_network)
                        # Builds the response
                        response = {"user_id": stored_credentials["user_id"]}
                        self.response.content_type = "application/json"
                        self.response.write(json.dumps(response))    
                        self.response.set_status(200)
                except KeyError:
                    response = \
                        {"error": "You must provide a valid pair of access_token and token_id in the request"}
                    self.response.content_type = "application/json"
                    self.response.write(json.dumps(response))
                    self.response.set_status(400)
            else:
                response = \
                    {"error": "The cookie session provided does not belongs to any active user"}
                self.response.content_type = "application/json"
                self.response.write(json.dumps(response))
                self.response.set_status(400)
        else:
            response = \
                {"error": "You must provide a session cookie"}
            self.response.content_type = "application/json"
            self.response.write(json.dumps(response))
            self.response.set_status(401)
Example #3
0
 def delete_credentials(self, social_network, token_id):
     cookie_value = self.request.cookies.get("session")
     if not cookie_value == None:
         # Searchs for user"s credentials
         logged_user_key = self.getUserInfo(cookie_value)
         if not logged_user_key == None:
             logged_user_id = ndb_pb.getUserId(logged_user_key)
             token = ndb_pb.getToken(token_id, social_network)
             if not token == None:
                 token_owner_id = token['user_id']
                 if logged_user_id == token_owner_id:
                     # Deletes the token from the user
                     token_deleted = ndb_pb.deleteCredentials(logged_user_key, social_network, token_id)
                     if token_deleted:
                         response = \
                             {"status": "Credentials deleted successfully"}
                         self.response.content_type = "application/json"
                         self.response.write(json.dumps(response))
                         self.response.set_status(204)
                     else:
                         response = \
                             {"error": "This token cannot be deleted, because it is being used as the only token " + \
                              "to perform the login action in the system"}
                         self.response.content_type = "application/json"
                         self.response.write(json.dumps(response))
                         self.response.set_status(403)
                 else:
                     response = \
                         {"error": "You do not have permissions to perform this request"}
                     self.response.content_type = "application/json"
                     self.response.write(json.dumps(response))
                     self.response.set_status(401)
             else:
                 response = \
                         {"error": "Token not found in the system"}
                 self.response.content_type = "application/json"
                 self.response.write(json.dumps(response))
                 self.response.set_status(404)
         else:
             response = \
                 {"error": "The cookie session provided does not belongs to any active user"}
             self.response.content_type = "application/json"
             self.response.write(json.dumps(response))
             self.response.set_status(400)
     else:
         response = {"error": "You must provide a session cookie"}
         self.response.content_type = "application/json"
         self.response.write(json.dumps(response))
         self.response.set_status(401)