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
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) )