def on_post(self, req, resp): email = get_param(req, 'email') password = get_param(req, 'password') if email is None or password is None: resp.body = json.dumps({'error': 'One or more values is missing'}) resp.status = falcon.HTTP_401 return try: user = get_user_by_email(self.db, email) if secret_is_valid(password, user.password): payload = { 'user_id': str(user.id), 'exp': datetime.utcnow() + timedelta(hours=self.jwt_config.expire_delta_hours) } jwt_token = jwt.encode(payload, self.jwt_config.secret, self.jwt_config.algorithm) resp.body = json.dumps({'token': jwt_token.decode('utf-8')}) else: set_invalid_credentials(resp) except NoResultFound: self.logger.debug('user not found') set_invalid_credentials(resp) except ValueError: self.logger.debug('cant verify password') set_invalid_credentials(resp)
def on_get(self, request: Request, response: Response): response.body = json.dumps({"status": "up"})
def set_invalid_credentials(resp): resp.body = json.dumps({'error': 'Credentials are not valid'}) resp.status = falcon.HTTP_400
def on_post(self, request: Request, response: Response): monster_dto = MonsterDTO(**request.media) monster: Monster = self.__monster_service.save(monster_dto.to_model) response.body = json.dumps(monster_dto(monster).__dict__)