diff --git a/ee/api/.gitignore b/ee/api/.gitignore index 04c6392f3..118d56462 100644 --- a/ee/api/.gitignore +++ b/ee/api/.gitignore @@ -273,7 +273,6 @@ Pipfile.lock /chalicelib/core/usability_testing/ /NOTES.md /chalicelib/core/db_request_handler.py -/routers/subs/spot.py /chalicelib/utils/or_cache/ /routers/subs/health.py /chalicelib/core/spot.py diff --git a/ee/api/clean-dev.sh b/ee/api/clean-dev.sh index 7d219d610..9a9a9947f 100755 --- a/ee/api/clean-dev.sh +++ b/ee/api/clean-dev.sh @@ -95,7 +95,6 @@ rm -rf ./orpy.py rm -rf ./chalicelib/core/usability_testing/ rm -rf ./chalicelib/core/db_request_handler.py rm -rf ./chalicelib/core/db_request_handler.py -rm -rf ./routers/subs/spot.py rm -rf ./chalicelib/utils/or_cache rm -rf ./routers/subs/health.py rm -rf ./chalicelib/core/spot.py diff --git a/ee/api/routers/subs/spot.py b/ee/api/routers/subs/spot.py new file mode 100644 index 000000000..45210c75c --- /dev/null +++ b/ee/api/routers/subs/spot.py @@ -0,0 +1,32 @@ +from fastapi import Depends +from starlette.responses import JSONResponse, Response + +import schemas +from chalicelib.core import spot, webhook +from or_dependencies import OR_context +from routers.base import get_routers + +public_app, app, app_apikey = get_routers(prefix="/spot", tags=["spot"]) + +COOKIE_PATH = "/api/spot/refresh" + + +@app.get('/logout') +def logout_spot(response: Response, context: schemas.CurrentContext = Depends(OR_context)): + spot.logout(user_id=context.user_id) + response.delete_cookie(key="spotRefreshToken", path=COOKIE_PATH) + return {"data": "success"} + + +@app.get('/refresh') +def refresh_spot_login(response: JSONResponse, context: schemas.CurrentContext = Depends(OR_context)): + r = spot.refresh(user_id=context.user_id, tenant_id=context.tenant_id) + content = {"jwt": r.get("jwt")} + response.set_cookie(key="spotRefreshToken", value=r.get("refreshToken"), path=COOKIE_PATH, + max_age=r.pop("refreshTokenMaxAge"), secure=True, httponly=True) + return content + + +@app.get('/integrations/slack/channels', tags=["integrations"]) +def get_slack_channels(context: schemas.CurrentContext = Depends(OR_context)): + return {"data": webhook.get_by_type(tenant_id=context.tenant_id, webhook_type=schemas.WebhookType.SLACK)}