def access_token():
    return AuthJWT.create_access_token(identity='test', fresh=True)
Exemple #2
0
def get_jwt(Authorize: AuthJWT = Depends()):
    Authorize.jwt_required()

    # Access the identity of the current user with get_jwt_identity
    current_user = Authorize.get_jwt_identity()
    return {"logged_in_as": current_user}
def partially_protected(Authorize: AuthJWT = Depends()):
    Authorize.jwt_optional()

    # If no jwt is sent in the request, get_jwt_subject() will return None
    current_user = Authorize.get_jwt_subject() or "anonymous"
    return {"user": current_user}
Exemple #4
0
def refresh_revoke(Authorize: AuthJWT = Depends()):
    Authorize.jwt_refresh_token_required()

    jti = Authorize.get_raw_jwt()['jti']
    denylist.add(jti)
    return {"detail": "Refresh token has been revoke"}
Exemple #5
0
 def protected(Authorize: AuthJWT = Depends()):
     Authorize.jwt_required()
     return {'hello':'world'}
Exemple #6
0
def generate_parent_with_token(parent: Parent,
                               auth: AuthJWT) -> ParentWithToken:
    access_token = auth.create_access_token(subject=parent.email,
                                            expires_time=timedelta(days=365))
    parent.password = "******"
    return ParentWithToken(parent=PParent.from_orm(parent), token=access_token)
Exemple #7
0
def get_my_profile_picture(Authorize: AuthJWT = Depends(),
                           db: Session = Depends(get_db)):
    Authorize.jwt_required()
    user_id = Authorize.get_jwt_subject()
    return get_profile_picture(user_id, db)
Exemple #8
0
async def log_user_out(response: Response, Authorize: AuthJWT = Depends()):

    Authorize.unset_jwt_cookies(response)

    return {"success": True, "detail": "user signed out"}
Exemple #9
0
async def image_upload(
        id: int,
        data: Request,
        Authorize: AuthJWT = Depends(),
        db: Session = Depends(get_db),
):
    Authorize.jwt_required()
    user_id = Authorize.get_jwt_subject()
    dbpost = postCRUD.get(db, id)
    raw_image = await data.body()

    # CHECKS
    if not dbpost:
        return JSONResponse(content={'details': 'Post not found'},
                            status_code=404)

    if dbpost.owner_id != user_id:
        return JSONResponse(content={'details': 'Post is not current user\'s'},
                            status_code=401)

    if dbpost.image:
        return JSONResponse(
            content={'details': 'Image is already associated with post'},
            status_code=400)

    try:
        # Opening the image & getting the
        # metadata from the image
        image = Image.open(io.BytesIO(raw_image))
        meta = get_metadata(image)

        if meta:
            # Putting in the time the photo was taken
            # if the data is available
            if "DateTimeOriginal" in meta:
                date_str = meta["DateTimeOriginal"]
                print("Taken at: " + date_str)
                # dbpost = postCRUD.update(db, db_obj=dbpost, obj_in={
                #     'datetime_taken': datetime.strptime(date_str, "%Y:%m:%d %H:%M:%S")})

        # Converting the image to a JPG no
        # matter the format it was taken in
        image = image.convert("RGB")

        # Setting variables and getting UUIDs
        # for identifying images
        cleaned = io.BytesIO()
        cleaned_uuid = str(uuid.uuid4())
        cleaned_name = cleaned_uuid + ".jpg"

        image.save(cleaned, format='JPEG')

        # Getting a thumbnail
        thumbnail = io.BytesIO()
        thumbnail_uuid = str(uuid.uuid4())
        thumbnail_name = thumbnail_uuid + ".jpg"

        width, height = image.size
        image.thumbnail((width, 120) if (width >= height) else (120, height))
        image = crop_center(image, 120, 120)
        image.save(thumbnail, format='JPEG')

        # Uploading the images as blobs to Google Cloud Storage
        upload_image_blob("snapquest-post-images", cleaned_name, cleaned)
        upload_image_blob("snapquest-post-images", thumbnail_name, thumbnail)
    except UnidentifiedImageError:
        raise HTTPException(400, "File uploaded was not an image")

    # TODO: Put image in google cloud
    # TODO: Don't put image into database, and put reference instead
    dbimage = postCRUD.file_upload(db,
                                   id=id,
                                   image=cleaned.getvalue(),
                                   thumbnail=thumbnail.getvalue())
    return Response(dbimage, media_type='image/jpeg')
Exemple #10
0
 def fresh_jwt_required(Authorize: AuthJWT = Depends()):
     Authorize.fresh_jwt_required()
     return {'hello': 'world'}
Exemple #11
0
def logout(Authorize: AuthJWT = Depends()):
    Authorize.jwt_required()
    Authorize.unset_jwt_cookies()
    response = JSONResponse({"detail": "Successfully logout"})
    response.unset_cookie()
    return response
Exemple #12
0
 def jwt_refresh_required(Authorize: AuthJWT = Depends()):
     Authorize.jwt_refresh_token_required()
     return {'hello': 'world'}
Exemple #13
0
 def jwt_optional(Authorize: AuthJWT = Depends()):
     Authorize.jwt_optional()
     if Authorize.get_jwt_identity():
         return {'hello': 'world'}
     return {'hello': 'anonym'}
def refresh_token():
    return AuthJWT.create_refresh_token(identity='test')
Exemple #15
0
 def all_token(Authorize: AuthJWT = Depends()):
     access_token = Authorize.create_access_token(subject=1,fresh=True)
     refresh_token = Authorize.create_refresh_token(subject=1)
     Authorize.set_access_cookies(access_token)
     Authorize.set_refresh_cookies(refresh_token)
     return {"msg":"all token"}
def protected(Authorize: AuthJWT = Depends()):
    Authorize.jwt_required()

    current_user = Authorize.get_jwt_identity()
    return {"logged_in_as": current_user}
Exemple #17
0
 def unset_all_token(Authorize: AuthJWT = Depends()):
     Authorize.unset_jwt_cookies()
     return {"msg":"unset all token"}
def refresh_revoke(Authorize: AuthJWT = Depends()):
    Authorize.jwt_refresh_token_required()

    jti = Authorize.get_raw_jwt()['jti']
    redis_conn.setex(jti, REFRESH_EXPIRES, 'true')
    return {"msg": "Refresh token revoked"}
def login(user: User):
    if user.username != 'test' or user.password != 'test':
        raise HTTPException(status_code=401,detail='Bad username or password')

    access_token = AuthJWT.create_access_token(identity=user.username)
    return access_token
def user(Authorize: AuthJWT = Depends()):
    Authorize.jwt_required()

    foo_claims = Authorize.get_raw_jwt()['foo']
    return {"foo": foo_claims}
Exemple #21
0
def refresh(Authorize: AuthJWT = Depends()):
    Authorize.jwt_refresh_token_required()

    current_user = Authorize.get_jwt_subject()
    new_access_token = Authorize.create_access_token(subject=current_user)
    return {"access_token": new_access_token}
 def get_identity(Authorize: AuthJWT = Depends()):
     Authorize.jwt_required()
     return Authorize.get_jwt_identity()
Exemple #23
0
def protected(Authorize: AuthJWT = Depends()):
    Authorize.jwt_required()

    current_user = Authorize.get_jwt_subject()
    return {"user": current_user}
def test_get_jwt_jti(client,default_access_token,encoded_token):
    assert AuthJWT.get_jti(encoded_token=encoded_token) == default_access_token['jti']
Exemple #25
0
def test_valid_header(client):
    token = AuthJWT.create_access_token(identity='test')
    response = client.get('/protected',headers={'Authorization':f"Bearer {token.decode('utf-8')}"})
    assert response.status_code == 200
    assert response.json() == {'hello':'world'}
 def raw_token(Authorize: AuthJWT = Depends()):
     Authorize.jwt_required()
     return Authorize.get_raw_jwt()
def login(user: User, Authorize: AuthJWT = Depends()):
    if user.username != "test" or user.password != "test":
        raise HTTPException(status_code=401, detail="Bad username or password")

    access_token = Authorize.create_access_token(subject=user.username)
    return {"access_token": access_token}
 def get_refresh_token(Authorize: AuthJWT = Depends()):
     Authorize.jwt_refresh_token_required()
     return Authorize.get_jwt_subject()
Exemple #29
0
async def stats(websocket: WebSocket, app_name: str, Authorize: AuthJWT = Depends()):
    auth_setting = str(settings.DISABLE_AUTH)
    if auth_setting.lower() == "true":
        pass
    else:
        try:
            csrf = websocket._cookies["csrf_access_token"]
            Authorize.jwt_required("websocket", websocket=websocket, csrf_token=csrf)
        except AuthJWTException:
            await websocket.close(code=status.WS_1008_POLICY_VIOLATION)
    await websocket.accept()
    async with aiodocker.Docker() as docker:
        cpu_total = 0.0
        cpu_system = 0.0
        cpu_percent = 0.0

        container: DockerContainer = await docker.containers.get(app_name)
        if container._container["State"]["Status"] == "running":
            stats = container.stats(stream=True)

            async for line in stats:
                if line["memory_stats"]:
                    mem_current = line["memory_stats"]["usage"]
                    mem_total = line["memory_stats"]["limit"]
                    mem_percent = (mem_current / mem_total) * 100.0
                else:
                    mem_current = None
                    mem_total = None
                    mem_percent = None

                try:
                    (
                        cpu_percent,
                        cpu_system,
                        cpu_total,
                    ) = await calculate_cpu_percent2(line, cpu_total, cpu_system)
                except KeyError as e:
                    print("error while getting new CPU stats: %r, falling back")
                    cpu_percent = await calculate_cpu_percent(line)

                full_stats = {
                    "time": line["read"],
                    "cpu_percent": cpu_percent,
                    "mem_current": mem_current,
                    "mem_total": mem_total,
                    "mem_percent": mem_percent,
                }
                try:
                    await websocket.send_text(json.dumps(full_stats))

                except ConnectionClosedOK as e:
                    await websocket.close(code=e.code)
                    break
                except RuntimeError as e:
                    if (
                        e.args[0]
                        == 'Cannot call "send" once a close message has been sent.'
                    ):
                        break
                    else:
                        print(e)
        else:
            await websocket.close(code=status.WS_1011_INTERNAL_ERROR)
 def jwt_optional(Authorize: AuthJWT = Depends()):
     Authorize.jwt_optional()
     return {'hello': 'world'}