79 lines
3.7 KiB
HTML
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 %}
|