Exemplo n.º 1
0
def user_seeder(db: Session):
    user.Base.metadata.create_all(bind=engine)

    one = UserCreateRequest(
        full_name="Chosen One",
        email="*****@*****.**",
        username=settings.ADMIN_USERNAME,
        password=settings.ADMIN_PASSWORD,
        admin=True,
    )
    two = UserCreateRequest(
        full_name="Morpheus",
        email="*****@*****.**",
        username="******",
        password=settings.ADMIN_PASSWORD,
        admin=False,
    )
    three = UserCreateRequest(
        full_name="Tank",
        email="*****@*****.**",
        username="******",
        password=settings.ADMIN_PASSWORD,
        admin=False,
    )
    one_in_db = crud.get_user_by_username(db, username=one.username)
    two_in_db = crud.get_user_by_username(db, username=two.username)
    three_in_db = crud.get_user_by_username(db, username=three.username)
    if not one_in_db:
        crud.create_user(db, one)
    if not two_in_db:
        crud.create_user(db, two)
    if not three_in_db:
        crud.create_user(db, three)
Exemplo n.º 2
0
def authenticate_user(username: str, password: str, db: Session):
    user = crud.get_user_by_username(db, username)
    if not user:
        return False
    if not verify_password(password, user.hashed_password):
        return False
    return user
Exemplo n.º 3
0
def get_user(username: str):
    db_user = crud.get_user_by_username(username)
    print(db_user)
    if username in db_user.username:
        # user_dict = db_user[username]
        # return models.User(**user_dict)
        # return models.User(**db_user)
        return db_user
Exemplo n.º 4
0
async def list_user_by_username(username: str,
                                db: Session = Depends(get_db),
                                token: str = Depends(oauth2_scheme)):
    """Grab information about user by username"""
    user = crud.get_user_by_username(db, username)
    if not user:
        raise HTTPException(status_code=404, detail="User not found")
    return user
Exemplo n.º 5
0
async def get_user(username: str, db: Session = Depends(get_db)):
    user = crud.get_user_by_username(db, username)

    if not user:  #TODO: enhance
        error = {"error": "no such user"}
        return JSONResponse(status_code=404, content=error)

    return {"username": user.username, "password": user.password}
Exemplo n.º 6
0
async def create_user(user: schemas.UserBase = Body(..., embed=True)):
    db_user = crud.get_user_by_email(email=user.email)
    db_user1 = crud.get_user_by_username(username=user.username)
    if db_user:
        raise HTTPException(status_code=400, detail="Cet Email existe deja")
    if db_user1:
        raise HTTPException(status_code=400,
                            detail="Ce nom d'utilisateur existe deja")
    return crud.create_user(user=user)
Exemplo n.º 7
0
async def register_user(
    register_request: RegisterRequest, db: Session = Depends(get_db)
):
    """Register a new user.
    The user will have to verify their account via /auth/verify."""
    db_user = crud.get_user_by_username(db, username=register_request.username)
    if db_user:
        raise HTTPException(
            status_code=status.HTTP_400_BAD_REQUEST,
            detail="A user with this username is already registered",
        )
    return crud.create_user(db=db, user=register_request)
Exemplo n.º 8
0
def test_get_user_by_username(db: Session):
    profile3 = faker.simple_profile()
    user_request = UserCreateRequest(
        full_name=profile3["name"],
        username=profile3["username"],
        email=profile3["mail"],
        password=faker.md5(),
    )
    user_in_db = crud.create_user(db, user_request)
    result = crud.get_user_by_username(db, user_in_db.username)
    assert result
    assert user_request.username == result.username
Exemplo n.º 9
0
def delete_user(username: str = typer.Argument(...,
                                               help="The user to delete")):
    """Delete the user USERNAME"""
    db = database.SessionLocal()
    user = crud.get_user_by_username(db, username)
    if user is None:
        typer.secho(f"User '{username}' not found. Aborting.",
                    fg=typer.colors.RED)
    else:
        crud.delete_user(db, user)
        typer.secho(f"User '{username}' deleted", fg=typer.colors.GREEN)
    db.close()
Exemplo n.º 10
0
def user_token_header(db: SessionLocal()):
    user = UserCreateRequest(
        full_name=faker.name(),
        email=faker.email(),
        username=faker.word(),
        password=faker.md5(),
        admin=False,
    )

    if not crud.get_user_by_username(db, username=user.username):
        crud.create_user(db, user)

    user_token = create_jwt_token(user.username)
    headers = {"Authorization": f"Bearer {user_token}"}
    return headers
Exemplo n.º 11
0
async def create_user(
        user_request: UserCreateRequest,
        db: Session = Depends(get_db),
        token: str = Depends(oauth2_scheme),
):
    """Create a new user"""
    user = get_user_by_token(db, token)
    if not user.admin:
        raise HTTPException(status_code=403, detail="Forbidden")

    user_by_email = crud.get_user_by_email(db, user_request.email)
    user_by_username = crud.get_user_by_username(db, user_request.username)
    if user_by_email or user_by_username:
        raise HTTPException(status_code=400, detail="The user already exists.")
    return crud.create_user(db, user_request)
Exemplo n.º 12
0
def login(data: OAuth2PasswordRequestForm = Depends(), db: Session = Depends(get_db)):
    username = data.username
    password = data.password
    user = crud.get_user_by_username(db, username=username)
    if not user:
        raise HTTPException(status_code=400, detail="Username not found")
    elif not bcrypt.checkpw(bytes(data.password, 'utf-8'), bytes(user.password, 'utf-8')):
        raise HTTPException(status_code=400, detail="Incorrect password")

    access_token = login_manager.create_access_token(
        data={'sub': user.id},
        expires=timedelta(hours=24)
    )
    user.token = access_token
    user.expiration = datetime.now() + timedelta(hours=24)
    return user
Exemplo n.º 13
0
async def get_current_user(token: str = Depends(oauth2_scheme),
                           db: Session = Depends(get_db)):
    credentials_exception = HTTPException(
        status_code=status.HTTP_401_UNAUTHORIZED,
        detail="Could not validate credentials",
        headers={"WWW-Authenticate": "Bearer"},
    )
    try:
        payload = jwt.decode(token, SECRET_KEY, algorithms=[ALGORITHM])
        username: str = payload.get("sub")
        if username is None:
            raise credentials_exception
        token_data = schemas.TokenData(username=username)
    except PyJWTError:
        raise credentials_exception
    user = crud.get_user_by_username(db, username=token_data.username)
    if user is None:
        raise credentials_exception
    return user
Exemplo n.º 14
0
def get_user(db, username: str):
    # TODO: implement
    return crud.get_user_by_username(db, username)
Exemplo n.º 15
0
def test_get_user_by_username(db, user):
    retrieved_user = crud.get_user_by_username(db, user.username)
    assert retrieved_user == user
    retrieved_user = crud.get_user_by_username(db, "foo")
    assert retrieved_user is None
Exemplo n.º 16
0
def create_customer(user: schemas.UserCreate, db: Session = Depends(get_db)):
    db_user = crud.get_user_by_username(db, username=user.username)
    if db_user:
        raise HTTPException(status_code=400,
                            detail="Username already registered")
    return crud.create_user(db=db, user=user)
Exemplo n.º 17
0
def authenticate_user(username: str, password: str, db):
    user = crud.get_user_by_username(db, username)
    if not user or not validate_password(user.password, password):
        return None
    else:
        return user
Exemplo n.º 18
0
def create_user(user: schemas.UserCreate, db: Session = Depends(get_db)):
    db_user = crud.get_user_by_username(db, username=user.username)
    if db_user:
        raise HTTPException(status_code=400, detail="Username already registered")
    user.password = bcrypt.hashpw(bytes(user.password, 'utf-8'), bcrypt.gensalt())
    return crud.create_user(db=db, user=user)
Exemplo n.º 19
0
def get_user_by_token(db: Session, token: str):
    payload = decode_jwt_token(token)
    user = crud.get_user_by_username(db, payload["username"])
    if not user:
        raise HTTPException(status_code=404, detail="User not found")
    return user