async def login_basic(auth: BasicAuth = Depends(basic_auth)): if not auth: response = Response(headers={"WWW-Authenticate": "Basic"}, status_code=401) return response try: decoded = base64.b64decode(auth).decode("ascii") username, _, password = decoded.partition(":") user = authenticate_user(users_db, username, password) if not user: raise HTTPException(status_code=400, detail="Incorrect email or password") access_token_expires = timedelta(minutes=ACCESS_TOKEN_EXPIRE_MINUTES) access_token = create_access_token(data={"sub": username}, expires_delta=access_token_expires) token = jsonable_encoder(access_token) response = RedirectResponse(url="/docs") response.set_cookie( "Authorization", value=f"Bearer {token}", domain=getenv("WEB_HOSTNAME"), httponly=True, max_age=1800, expires=1800, ) return response except Exception: response = Response(headers={"WWW-Authenticate": "Basic"}, status_code=401) return response
def test_debtitem_list(api, ponydb, monkeypatch): def patched_auto_created(self): self.created = datetime.datetime(2019, 2, 7, 18, 22) def tomorrow_date(): return (datetime.datetime.now() + datetime.timedelta(days=1)).date() user = ponydb.User(name='test', email='*****@*****.**', password='******') monkeypatch.setattr(ponydb.DebtItem, 'before_insert', patched_auto_created) ponydb.DebtItem(kind='debt', due_date=tomorrow_date(), who="Marcin", what="Kniga", user=user) commit() token = create_access_token(data={"username": user.name}).decode() r = api.get("/api/items", headers={'Authorization': f'Bearer {token}'}) expected = [{ "kind": 'debt', "created": "2019-02-07T18:22:00", "due_date": "2019-04-14", "who": "Marcin", "what": "Kniga", "resolved": False }] assert r.status_code == 200, r.json() assert r.json() == expected
def create_refresh_token(user_id: UUID) -> dict: access_token, _ = create_access_token( data={ "sub": user_id, "refr": True }, expires_delta=timedelta(minutes=conf.REFRESH_TOKEN_EXP_MINUTES)) return access_token
async def register_user(user_data: UserRegister, db: Session = Depends(get_db)): try: user = await create_user(db, user_data) except IntegrityError: raise HTTPException(status_code=400, detail="Username already exists") access_token_expires = timedelta(minutes=ACCESS_TOKEN_EXPIRE_MINUTES) access_token = create_access_token(data={"sub": user.username}, expires_delta=access_token_expires) return {"access_token": access_token, "token_type": "bearer"}
async def route_login_access_token( form_data: OAuth2PasswordRequestForm = Depends()): user = authenticate_user(users_db, form_data.username, form_data.password) if not user: raise HTTPException(status_code=400, detail="Incorrect username or password") access_token_expires = timedelta(minutes=ACCESS_TOKEN_EXPIRE_MINUTES) access_token = create_access_token(data={"sub": user.username}, expires_delta=access_token_expires) return {"access_token": access_token, "token_type": "bearer"}
async def user_signin(credentials: SignIn = Depends(), db: Session = Depends(db_session)) -> Token: """Authenticate user using specified credentials.""" user = authenticate_user(db, credentials.username, credentials.password) if not user: raise HTTPException(status_code=400, detail="Incorrect name or password") access_token_expires = timedelta(minutes=ACCESS_TOKEN_EXPIRE_MINUTES) access_token = create_access_token(data={"login": user.email}, expires_delta=access_token_expires) return Token(access_token=access_token, token_type="bearer")
def create_access_token(*args, **kwargs): print("*** Creating a new access token ***") name = input("Enter a name for the access token: ") token = auth.create_access_token(name) print("Access token created.") print( "\nWARNING: Save this token now. It is the only time it will be shown:" ) print(f"\n{token}\n")
def login_for_access_token(form_data: OAuth2PasswordRequestForm = Depends()): user = authenticate_user(form_data.username, form_data.password) if not user: raise HTTPException( status_code=status.HTTP_401_UNAUTHORIZED, detail="Incorrect username or password", headers={"WWW-Authenticate": "Bearer"}, ) access_token_expires = timedelta(minutes=ACCESS_TOKEN_EXPIRE_MINUTES) access_token = create_access_token( data={"sub": user.email}, expires_delta=access_token_expires ) return {"access_token": access_token, "token_type": "bearer"}
async def login_for_access_token( form_data: OAuth2PasswordRequestForm = Depends(), db: Session = Depends(get_db)): user = methods.authenticate_user(db, form_data.username, form_data.password) if not user: raise auth.credentials_exception access_token = auth.create_access_token( data={ "sub": user.username, "type": user.type }, expires_delta=auth.access_token_expires) return {"access_token": access_token, "token_type": "bearer"}
async def login_for_access_token( form_data: OAuth2PasswordRequestForm = Depends(), db: Session = Depends(get_db)): try: user = await authenticate_user(db, form_data.username, form_data.password) access_token_expires = timedelta(minutes=ACCESS_TOKEN_EXPIRE_MINUTES) access_token = create_access_token(data={"sub": user.username}, expires_delta=access_token_expires) return {"access_token": access_token, "token_type": "bearer"} except Exception as error: raise HTTPException( status_code=status.HTTP_401_UNAUTHORIZED, detail=error.__str__(), headers={"WWW-Authenticate": "Bearer"}, )
def create_token(user_id: Union[UUID, str]) -> dict: access_token_expires = timedelta(minutes=conf.TOKEN_EXP_MINUTES) access_token, expires = create_access_token( data={ "sub": user_id, "refr": False, "https://hasura.io/jwt/claims": { "x-hasura-default-role": "volunteer", "x-hasura-role": "volunteer", "x-hasura-user-id": user_id, "x-hasura-allowed-roles": ["volunteer"] } }, expires_delta=access_token_expires) return { "access_token": access_token, "token_type": "bearer", "jwt_token_expiry": expires }
async def route_login_access_token(form_data: OAuth2PasswordRequestForm = Depends()): user = authenticate_user(db, form_data.username, form_data.password) if not user: raise HTTPException(status_code=400, detail="Incorrect email or password") access_token = create_access_token(data={"username": form_data.username}) return {"id": user.id, "access_token": access_token, "token_type": "bearer"}