Files
JQC_multi_tenant/control/panel/templates/panel/provision.html
T
2026-06-28 10:16:20 -04:00

79 lines
3.7 KiB
HTML

{% extends "panel/base.html" %}
{% block title %}New Tenant — JQC Control{% endblock %}
{% block page_title %}Provision New Tenant{% endblock %}
{% block content %}
<div class="row">
<div class="col-lg-6">
<div class="card border-0 shadow-sm">
<div class="card-header bg-white py-2">
<span class="fw-semibold" style="font-size:.9rem;"><i class="bi bi-plus-circle me-1"></i>New Tenant</span>
</div>
<div class="card-body">
<form method="POST" action="{{ url_for('tenants.provision_tenant') }}">
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}">
<div class="mb-3">
<label class="form-label fw-semibold" style="font-size:.85rem;">Slug <span class="text-danger">*</span></label>
<input type="text" name="slug" class="form-control form-control-sm" required
pattern="^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$"
placeholder="e.g. acme" maxlength="63">
<div class="form-text" style="font-size:.75rem;">DNS label — lowercase letters, digits, hyphens only.</div>
</div>
<div class="mb-3">
<label class="form-label fw-semibold" style="font-size:.85rem;">Company Name <span class="text-danger">*</span></label>
<input type="text" name="name" class="form-control form-control-sm" required
placeholder="Acme Janitorial Inc." maxlength="150">
</div>
<div class="mb-3">
<label class="form-label fw-semibold" style="font-size:.85rem;">Plan <span class="text-danger">*</span></label>
<select name="plan_code" class="form-select form-select-sm" required>
{% for p in plans %}
<option value="{{ p.code }}">{{ p.name }} ({{ p.code }})</option>
{% endfor %}
</select>
</div>
<div class="mb-3">
<label class="form-label fw-semibold" style="font-size:.85rem;">Admin Email <span class="text-danger">*</span></label>
<input type="email" name="admin_email" class="form-control form-control-sm" required
placeholder="admin@acme.com">
<div class="form-text" style="font-size:.75rem;">Setup link will be sent to this address.</div>
</div>
<div class="mb-3">
<label class="form-label" style="font-size:.85rem;">Admin Username <span class="text-muted">(optional)</span></label>
<input type="text" name="admin_username" class="form-control form-control-sm"
placeholder="Defaults to email prefix">
</div>
<div class="mb-4">
<label class="form-label" style="font-size:.85rem;">Custom Domain <span class="text-muted">(optional)</span></label>
<input type="text" name="custom_domain" class="form-control form-control-sm"
placeholder="jqc.acme.com">
<div class="form-text" style="font-size:.75rem;">Leave blank to use subdomain only.</div>
</div>
<div class="d-flex gap-2">
<button type="submit" class="btn btn-primary btn-sm">
<i class="bi bi-rocket-takeoff me-1"></i> Provision Tenant
</button>
<a href="{{ url_for('tenants.list_tenants') }}" class="btn btn-outline-secondary btn-sm">Cancel</a>
</div>
</form>
</div>
</div>
<div class="card border-0 shadow-sm mt-3">
<div class="card-body py-2" style="font-size:.8rem; color:#64748b;">
<i class="bi bi-info-circle me-1"></i>
Provisioning will: create MySQL DB + user, build schema, seed admin account,
register subdomain. The setup link in the success message must be sent to the admin manually.
</div>
</div>
</div>
</div>
{% endblock %}