diff --git a/inventory-app/api.py b/inventory-app/api.py deleted file mode 100644 index ff33127..0000000 --- a/inventory-app/api.py +++ /dev/null @@ -1,73 +0,0 @@ -import threading -import time -from datetime import datetime - -import const -from flask import Blueprint, g, request -from pymongo import MongoClient - -page_api = Blueprint("api", __name__) -db = MongoClient(const.MONGO_URI).get_default_database() - -@page_api.route("/api/slack/doorboy", methods=['POST']) -def view_slack_doorboy(): - begin_time = time.perf_counter() - if request.form.get("token") != const.SLACK_VERIFICATION_TOKEN: - return "Invalid token was supplied" - if request.form.get("channel_id") not in ("C01CWPF5H8W", "CDL9H8Q9W"): - return "Invalid channel was supplied" - command = request.form.get("command") - try: - door = { - "/open-all-doors": "outsidedoors", - "/open-back-door": "backdoor", - "/open-front-door": "frontdoor", - "/open-ground-door": "grounddoor", - "/open-workshop-door": "workshopdoor" - }[command] - except KeyError: - return "Invalid command was supplied" - - member = None - for user in g.users: - if user.slack_id == request.form.get("user_id"): - member = user - - if door == "workshopdoor": - access_group = "k-space:workshop" - else: - access_group = "k-space:floor" - approved = access_group in member.groups - - doors = [door] - if door == "outsidedoors": - doors = ["backdoor", "frontdoor", "grounddoor"] - - status = "Permitted" if approved else "Denied" - subject = member.display_name - - threading.Thread(target=handle_slack_door_event, args=(doors, approved, member, door, status, subject)).start() - - end_time = time.perf_counter() - print(f"view_slack_doorboy done in {end_time - begin_time:.4f} seconds") - - return_message = "Opening %s for %s" % (door, subject) if approved else "Permission denied" - return return_message - -def handle_slack_door_event(doors, approved, member, door, status, subject): - begin_time = time.perf_counter() - for d in doors: - db.eventlog.insert_one({ - "component": "doorboy", - "method": "slack", - "timestamp": datetime.utcnow(), - "door": d, - "approved": approved, - "user": { - "id": member.username, - "name": member.display_name, - } - }) - - end_time = time.perf_counter() - print(f"handle_slack_door_event done in {end_time - begin_time:.4f} seconds") diff --git a/inventory-app/const.py b/inventory-app/const.py index 0fd32ba..e9e1972 100644 --- a/inventory-app/const.py +++ b/inventory-app/const.py @@ -17,5 +17,4 @@ AWS_S3_ENDPOINT_URL = os.environ["AWS_S3_ENDPOINT_URL"] BUCKET_NAME = os.environ["BUCKET_NAME"] INVENTORY_ASSETS_BASE_URL = os.environ["INVENTORY_ASSETS_BASE_URL"] MONGO_URI = os.environ["MONGO_URI"] -SLACK_VERIFICATION_TOKEN = os.environ["SLACK_VERIFICATION_TOKEN"] # used to verify (deprecated) incoming requests from slack MACADDRESS_OUTLINK_BASEURL = os.environ["MACADDRESS_OUTLINK_BASEURL"] diff --git a/inventory-app/main.py b/inventory-app/main.py index 4ce1254..93078f8 100755 --- a/inventory-app/main.py +++ b/inventory-app/main.py @@ -25,9 +25,8 @@ from wtforms import ( import const from common import devenv, format_name, get_users, User from inventory import page_inventory -from oidc import page_oidc, login_required, read_user +from oidc import page_oidc, login_required from doorboy import page_doorboy -from api import page_api def check_foreign_key_format(item): owner = item.get("inventory", {}).get("owner", {}) @@ -124,7 +123,6 @@ app = Flask(__name__) app.wsgi_app = ReverseProxied(app.wsgi_app) app.register_blueprint(page_inventory) app.register_blueprint(page_oidc) -app.register_blueprint(page_api) app.register_blueprint(page_doorboy) metrics = PrometheusMetrics(app, group_by="path")