improvement of instance check
This commit is contained in:
+31
-11
@@ -3569,22 +3569,42 @@ def avv():
|
|||||||
return render_template("avv.html")
|
return render_template("avv.html")
|
||||||
|
|
||||||
@app.route('/instance_request/check_subdomain', methods=['GET'])
|
@app.route('/instance_request/check_subdomain', methods=['GET'])
|
||||||
@login_required
|
|
||||||
def check_subdomain():
|
def check_subdomain():
|
||||||
name = (request.values.get('school_name') or '').strip()
|
slug = request.args.get('slug', '').lower().strip()
|
||||||
slug = _slugify_subdomain(name)
|
|
||||||
if not slug:
|
if not slug or len(slug) < 3:
|
||||||
return jsonify({"available": False, "slug": "", "message": "Ungültiger Name für Subdomain."})
|
return jsonify({"available": False, "message": "Ungültiger oder zu kurzer Name"}), 400
|
||||||
|
|
||||||
|
# 1. Prüfen, ob die Subdomain bereits in den aktiven Instanzen existiert
|
||||||
|
inst_client, inst_col = _get_collection("instances")
|
||||||
try:
|
try:
|
||||||
existing = steering.instace.list() or []
|
existing_instance = inst_col.find_one({"subdomain": slug})
|
||||||
except Exception:
|
finally:
|
||||||
existing = []
|
inst_client.close()
|
||||||
|
|
||||||
if slug in existing:
|
if existing_instance:
|
||||||
return jsonify({"available": False, "slug": slug, "message": "Subdomain bereits vergeben."})
|
return jsonify({"available": False}), 200
|
||||||
return jsonify({"available": True, "slug": slug, "message": "Subdomain verfügbar."})
|
|
||||||
|
|
||||||
|
# 2. Prüfen, ob bereits eine Anfrage (Instance Request) dafür läuft
|
||||||
|
req_client, req_col = _get_collection("instance_requests")
|
||||||
|
try:
|
||||||
|
existing_request = req_col.find_one({
|
||||||
|
"tenant_slug": slug,
|
||||||
|
"provision_status": {"$in": ["pending", "in_progress"]}
|
||||||
|
})
|
||||||
|
finally:
|
||||||
|
req_client.close()
|
||||||
|
|
||||||
|
if existing_request:
|
||||||
|
return jsonify({"available": False}), 200
|
||||||
|
|
||||||
|
# 3. Optional: Gegen reservierte System-Subdomains prüfen (z.B. www, admin, api, mail)
|
||||||
|
reserved_slugs = {"www", "admin", "api", "mail", "auth", "dashboard", "support"}
|
||||||
|
if slug in reserved_slugs:
|
||||||
|
return jsonify({"available": False}), 200
|
||||||
|
|
||||||
|
# Wenn alles frei ist:
|
||||||
|
return jsonify({"available": True}), 200
|
||||||
|
|
||||||
@app.route('/impressum')
|
@app.route('/impressum')
|
||||||
def impressum():
|
def impressum():
|
||||||
|
|||||||
Reference in New Issue
Block a user