Remove server settings from navigation and add tenant display name support

- Remove server settings link from main navigation bar
- Add separate display name field for tenant creation
- Support uppercase characters in tenant display names while keeping IDs lowercase
- Improve tenant creation UX with clearer field descriptions
This commit is contained in:
2025-10-20 21:44:26 -04:00
parent fbf62f71b1
commit 145ea68d2b
3 changed files with 29 additions and 10 deletions

View File

@@ -9,7 +9,21 @@ import os
@tenant_access_required
def index(tenant_id):
"""Tenant home page - product listing"""
tenant = TenantModel.get_or_create(tenant_id)
# Get the tenant name from query parameter if provided (for new tenant creation)
tenant_name = request.args.get('tenant_name')
# Check if tenant exists first
existing_tenant = TenantModel.get_by_id(tenant_id)
if existing_tenant:
tenant = existing_tenant
elif tenant_name:
# Create new tenant with display name
tenant = TenantModel.create(tenant_id, tenant_name)
else:
# Create with default name (tenant_id)
tenant = TenantModel.create(tenant_id)
if tenant is None:
return jsonify({"error": f"'{tenant_id}' is a reserved name and cannot be used as a tenant ID"}), 404

View File

@@ -65,11 +65,6 @@
<li class="nav-item">
<a class="nav-link" href="/">Home</a>
</li>
{% if session.user and session.user.role == 'admin' %}
<li class="nav-item">
<a class="nav-link" href="/settings">Server Settings</a>
</li>
{% endif %}
</ul>
<ul class="navbar-nav ms-auto">
{% if config.AUTH_MODE == 'none' %}

View File

@@ -155,10 +155,15 @@
</div>
<div class="modal-body">
<form id="newTenantForm">
<div class="mb-3">
<label for="tenantName" class="form-label">Tenant Display Name</label>
<input type="text" class="form-control" id="tenantName" placeholder="e.g., Demo Company" required>
<small class="form-text text-muted">This is how the tenant name will be displayed</small>
</div>
<div class="mb-3">
<label for="tenantId" class="form-label">Tenant ID</label>
<input type="text" class="form-control" id="tenantId" placeholder="e.g., demo-company" required pattern="[a-zA-Z0-9_-]+">
<small class="form-text text-muted">Only letters, numbers, hyphens, and underscores allowed</small>
<small class="form-text text-muted">Only letters, numbers, hyphens, and underscores allowed. Will be converted to lowercase.</small>
</div>
<div class="mb-3">
<div class="form-check">
@@ -246,17 +251,22 @@
document.getElementById('newTenantForm').addEventListener('submit', function(e) {
e.preventDefault();
const tenantId = document.getElementById('tenantId').value;
const tenantName = document.getElementById('tenantName').value;
const createDefaults = document.getElementById('createDefaultFields').checked;
if (tenantId) {
if (tenantId && tenantName) {
const normalizedId = tenantId.toLowerCase();
if (reservedIds.includes(normalizedId)) {
alert(`"${tenantId}" is a reserved name and cannot be used as a tenant ID.`);
return;
}
// Redirect with query parameter for default fields
const url = '/' + normalizedId + '/' + (createDefaults ? '?create_defaults=1' : '');
// Redirect with query parameters for default fields and tenant name
const params = new URLSearchParams();
if (createDefaults) params.append('create_defaults', '1');
params.append('tenant_name', tenantName);
const url = '/' + normalizedId + '/?' + params.toString();
window.location.href = url;
}
});