Esempio n. 1
0
    def register_session(self, request: Request):
        """
        Construct new Session object from POST fields.

        :param request: HTTP request
        :return: Session object and related User object
        """
        ip_addr = request.remote_addr
        user    = self.retrieve_user_nickname()

        if user is None or user.password != hashing_password(user.salt, self.args['password']):
            raise ValueError('Invalid login')

        return Session(ip_addr, self.generate_token(), user.id), user
Esempio n. 2
0
    def post(self):
        """
        POST method implementation for API Registration resource entity.

        :return: JSON response to Registration method (201 Created, 409 Conflict, 400 Bad Request)
        """
        try:
            # Arguments validation
            self.check_args()
            self.validate_args()

            # Integrity checks
            if not self.check_existing_email():
                return responses.client_error(409, "Email already registered")

            if not self.check_existing_nickname():
                return responses.client_error(409, "Nickname already registered")

            salt, token = self.generate_salt(), self.generate_token()

            # Creating new User entity
            user = User(
                self.args["nickname"],
                routines.hashing_password(salt, self.args["password"]),
                salt,
                self.args["university"],
                self.args["email"],
                self.args["gender"],
                False,
                token,
            )

            # TODO: remove this and insert email sending
            print(user.token)

            # Add new entity to database
            uchan.add_to_db(user)
            return responses.successful(201, "Registration sent")
        except ValueError as msg:
            # Arguments validation error
            return responses.client_error(400, "{}".format(msg))
        except IntegrityError as msg:
            # Database integrity error
            return responses.client_error(
                409, "Registration error, check your JSON or contact server manteiner".format(msg)
            )