Beispiel #1
0
 def create_user(self, user: schemas.UserCreate) -> Any:
     """ Add New User"""
     try:
         with session_scope() as db:
             hashed_password = passutil.get_password_hash(str(
                 user.password))
             db_user = models.User(
                 email=user.email,
                 password=hashed_password,
                 first_name=user.first_name,
                 last_name=user.last_name,
                 full_name=user.full_name,
                 gender=user.gender,
                 is_active=user.is_active,
                 is_superuser=user.is_superuser,
                 is_admin=user.is_admin,
                 created_by_userid=user.created_by_userid,
                 modified_by_userid=user.created_by_userid)
             db.add(db_user)
             db.commit()
             db.refresh(db_user)
             return db_user
     except SQLAlchemyError as e:
         fastapi_logger.exception("create_user")
         return None
Beispiel #2
0
    def update_user(self, user_id: int, user: schemas.UserUpdate) -> Any:
        """ Update User"""
        try:
            with session_scope() as db:
                statement = select(
                    models.User).where(models.User.id == user_id)
                results = db.exec(statement)
                db_user = results.one()

                db_user.first_name = user.first_name
                db_user.last_name = user.last_name
                db_user.full_name = user.full_name
                db_user.city = user.city
                db_user.country = user.country
                db_user.is_active = user.is_active
                db_user.is_superuser = user.is_superuser
                db_user.is_admin = user.is_admin
                db_user.modified_by_userid = user.modified_by_userid
                db_user.modified_timestamp = datetime.utcnow()

                db.add(db_user)
                db.commit()
                db.refresh(db_user)
                return db_user
        except SQLAlchemyError as e:
            fastapi_logger.exception("update_user")
            return None
Beispiel #3
0
def get_user_password(email: str) -> Any:
    """ Get User Password based on email"""
    try:
        with session_scope() as db:
            statement = select(models.User).where(models.User.email == email)
            results = db.exec(statement)
            data = results.one()
            return data
    except SQLAlchemyError as e:
        fastapi_logger.exception("get_user")
        return None
Beispiel #4
0
 def get_user_id(self, id: int) -> Any:
     """ Get User Data based on id"""
     try:
         with session_scope() as db:
             statement = select(models.User).where(
                 models.User.id == id).options(defer('password'))
             results = db.exec(statement)
             data = results.one()
             return data
     except SQLAlchemyError as e:
         fastapi_logger.exception("get_user_id")
         return None
Beispiel #5
0
 def get_article(self, article_id: str):
     """ Get A Single article """
     try:
         with session_scope() as db:
             statement = select(models.Article).where(
                 models.Article.article_id == article_id)
             results = db.exec(statement)
             data = results.one()
             return data
     except SQLAlchemyError as e:
         fastapi_logger.exception("get_article")
         return None
 def check_active_session(self, session_id: str):
     """ check for active session """
     try:
         with session_scope() as db:
             statement = select(models.UsersLoginAttempt).where(
                 models.UsersLoginAttempt.session_id == session_id)
             results = db.exec(statement)
             data = results.one()
             return data
     except SQLAlchemyError as e:
         fastapi_logger.exception("check_active_session")
         return None
Beispiel #7
0
 def verify_user(self, email: str) -> Any:
     """ Verify User"""
     try:
         with session_scope() as db:
             statement = select(
                 models.User.id,
                 models.User.email).where(models.User.email == email)
             results = db.exec(statement)
             data = results.one()
             return data
     except SQLAlchemyError as e:
         fastapi_logger.exception("verify_user")
         return None
Beispiel #8
0
 def check_password(self, user_id: int, password: str):
     """ get user Password"""
     try:
         with session_scope() as db:
             statement = select(
                 models.User.password).where(models.User.id == user_id)
             results = db.exec(statement)
             db_user = results.one()
             return passutil.verify_password(str(password),
                                             str(db_user.password))
     except SQLAlchemyError as e:
         fastapi_logger.exception("get_password")
         return None
Beispiel #9
0
 def delete_user(self, user_id: int) -> Any:
     """ Delete User"""
     try:
         with session_scope() as db:
             statement = select(
                 models.User).where(models.User.id == user_id)
             results = db.exec(statement)
             db_user = results.one()
             db.delete(db_user)
             db.commit()
             return True
     except SQLAlchemyError as e:
         fastapi_logger.exception("delete_user")
         return None
Beispiel #10
0
def get_active_user(email: str) -> Any:
    """ Get User Data based on email and active status"""
    try:
        with session_scope() as db:
            statement = select(
                models.User).where(models.User.email == email).where(
                    models.User.is_active == expression.true()).options(
                        defer('password'))
            results = db.exec(statement)
            data = results.one()
            return data
    except SQLAlchemyError as e:
        fastapi_logger.exception("get_user")
        return None
Beispiel #11
0
    def get_all_articles(self, page_num: int) -> Any:
        """ Get All Articles """
        try:
            with session_scope() as db:
                query = select(models.Article).order_by(
                    models.Article.modified_timestamp)

                data = pagination.paginate(query=query, db=db,
                                           model=models.Article, page=page_num,
                                           page_size=30)
                return data
        except SQLAlchemyError as e:
            fastapi_logger.exception("get_all_articles")
            return None
Beispiel #12
0
 def delete_article(self, article_id: str) -> Any:
     """ Delete Article """
     try:
         with session_scope() as db:
             statement = select(models.Article).where(
                 models.Article.article_id == article_id)
             results = db.exec(statement)
             db_article = results.one()
             db.delete(db_article)
             db.commit()
             return True
     except SQLAlchemyError as e:
         fastapi_logger.exception("delete_article")
         return None
Beispiel #13
0
 def get_all_user(self, page_num: int) -> Any:
     """ Get All Users"""
     try:
         with session_scope() as db:
             # data = db.query(models.User).options(defer('password')).all()
             statement = select(models.User).options(
                 defer('password')).order_by(models.User.modified_timestamp)
             data = pagination.paginate(query=statement,
                                        db=db,
                                        model=models.User,
                                        page=page_num,
                                        page_size=100)
             return data
     except SQLAlchemyError as e:
         fastapi_logger.exception("get_all_user")
         return None
Beispiel #14
0
 def update_user_password(self, email: str, password: str) -> Any:
     """ Update User Password"""
     try:
         with session_scope() as db:
             hashed_password = passutil.get_password_hash(password)
             statement = select(
                 models.User).where(models.User.email == email)
             results = db.exec(statement)
             db_user = results.one()
             db_user.password = hashed_password
             db.commit()
             db.refresh(db_user)
             return db_user
     except SQLAlchemyError as e:
         fastapi_logger.exception("update_user_password")
         return None
 def login_user(self, user: schemas.UserLogIn, session_id: str) -> Any:
     """ Login Attempt Record """
     try:
         with session_scope() as db:
             db_session = models.UsersLoginAttempt(
                 email=user.email,
                 session_id=session_id,
                 ip_address=user.ip_address,
                 browser=user.browser,
                 status="logged_in")
             db.add(db_session)
             db.commit()
             db.refresh(db_session)
             return db_session
     except SQLAlchemyError as e:
         fastapi_logger.exception("login_user")
         return None
Beispiel #16
0
 def create_article(self, article: schemas.ArticleCreate) -> Any:
     """ Create New Article """
     try:
         with session_scope() as db:
             uid = str(uuid.uuid4().hex)
             db_user = models.Article(article_id=uid,
                                      user_id=article.user_id,
                                      article_title=article.article_title,
                                      article_text=article.article_text,
                                      tags=article.tags)
             db.add(db_user)
             db.commit()
             db.refresh(db_user)
             return db_user
     except SQLAlchemyError as e:
         fastapi_logger.exception("create_article")
         return None
    def logoff_user(self, session_id: str) -> Any:
        """ Logging off Record"""
        try:
            with session_scope() as db:
                statement = select(models.UsersLoginAttempt).where(
                    models.UsersLoginAttempt.session_id == session_id)
                results = db.exec(statement)
                db_session = results.one()

                db_session.status = "logged_off"
                db.add(db_session)
                db.commit()
                db.refresh(db_session)
                return db_session
        except SQLAlchemyError as e:
            fastapi_logger.exception("logoff_user")
            return None
Beispiel #18
0
 def user_status_update(self, user_id: int, status: str) -> Any:
     """ Disable User"""
     try:
         with session_scope() as db:
             statement = select(
                 models.User).where(models.User.id == user_id)
             results = db.exec(statement)
             db_user = results.one()
             if status == "enable":
                 db_user.is_active = True
             elif status == "disable":
                 db_user.is_active = False
             db.add(db_user)
             db.commit()
             db.refresh(db_user)
             return db_user
     except SQLAlchemyError as e:
         fastapi_logger.exception("user_status_update")
         return None
Beispiel #19
0
    def update_article(self, article_id: str,
                       article: schemas.ArticleCreate) -> Any:
        """ Update Article """
        try:
            with session_scope() as db:
                statement = select(models.Article).where(
                    models.Article.article_id == article_id)
                results = db.exec(statement)
                db_article = results.one()

                db_article.article_title = article.article_title
                db_article.article_text = article.article_text
                db_article.tags = article.tags
                db_article.modified_timestamp = datetime.utcnow()

                db.commit()
                db.refresh(db_article)
                return db_article
        except SQLAlchemyError as e:
            fastapi_logger.exception("update_article")
            return None
def get_current_user(token: str = Depends(oauth2_scheme),
                     db: Session = Depends(session_scope)) -> UserVerify:
    """ Verify User Authentication"""
    credentials_exception = HTTPException(
        status_code=status.HTTP_401_UNAUTHORIZED,
        detail="Could not validate credentials",
        headers={"WWW-Authenticate": "Bearer"},
    )
    expire_exception = HTTPException(
        status_code=status.HTTP_401_UNAUTHORIZED,
        detail="access expired",
        headers={"WWW-Authenticate": "Bearer"},
    )
    require_exception = HTTPException(
        status_code=status.HTTP_401_UNAUTHORIZED,
        detail="access denied",
        headers={"WWW-Authenticate": "Bearer"},
    )
    if token:
        try:
            payload = access_token.decode_access_token(token=token)
            token_validity = payload.get("exp")
            if get_int_from_datetime(datetime.utcnow()) >= token_validity:
                raise expire_exception
            email: str = payload.get("sub")
            if email is None:
                raise credentials_exception
            token_data = TokenData(email=email)
        except exceptions.JWTException as e:
            fastapi_logger.exception("get_current_user")
            raise credentials_exception
        user = crud_users.verify_user(email=token_data.email)
        if user is None:
            raise credentials_exception
        return user
    else:
        raise require_exception