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)
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
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
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
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}
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)
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)
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
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()
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
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)
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
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
def get_user(db, username: str): # TODO: implement return crud.get_user_by_username(db, username)
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
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)
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
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)
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