Changeset 0.22.10 (#152)
This commit is contained in:
@@ -211,7 +211,7 @@
|
||||
|
||||
<div class="auth-tabs anim anim-a2">
|
||||
<button class="auth-tab active" id="tabLogin" onclick="_switchTab('login')">Log In</button>
|
||||
<button class="auth-tab" id="tabRegister" onclick="_switchTab('register')">Register</button>
|
||||
{{if .RegistrationOpen}}<button class="auth-tab" id="tabRegister" onclick="_switchTab('register')">Register</button>{{end}}
|
||||
</div>
|
||||
|
||||
<!-- LOGIN FORM -->
|
||||
@@ -229,6 +229,7 @@
|
||||
</div>
|
||||
|
||||
<!-- REGISTER FORM -->
|
||||
{{if .RegistrationOpen}}
|
||||
<div id="registerForm" style="display:none;">
|
||||
<div class="form-field">
|
||||
<label for="regUsername">Username</label>
|
||||
@@ -249,6 +250,7 @@
|
||||
<p class="auth-error" id="regError" style="display:none;"></p>
|
||||
<button class="btn-login" id="regBtn" onclick="_doRegister()">Create Account</button>
|
||||
</div>
|
||||
{{end}}
|
||||
|
||||
<div class="auth-footer">
|
||||
<p>Self-hosted instance · Your data stays on your infrastructure</p>
|
||||
@@ -272,15 +274,18 @@
|
||||
<script>
|
||||
function _switchTab(tab) {
|
||||
document.getElementById('loginForm').style.display = tab === 'login' ? '' : 'none';
|
||||
document.getElementById('registerForm').style.display = tab === 'register' ? '' : 'none';
|
||||
const regForm = document.getElementById('registerForm');
|
||||
if (regForm) regForm.style.display = tab === 'register' ? '' : 'none';
|
||||
document.getElementById('tabLogin').classList.toggle('active', tab === 'login');
|
||||
document.getElementById('tabRegister').classList.toggle('active', tab === 'register');
|
||||
const regTab = document.getElementById('tabRegister');
|
||||
if (regTab) regTab.classList.toggle('active', tab === 'register');
|
||||
document.getElementById('authTitle').textContent = tab === 'login' ? 'Welcome back' : 'Create account';
|
||||
document.getElementById('authSubtitle').textContent = tab === 'login'
|
||||
? 'Sign in to your Switchboard instance'
|
||||
: 'Join your team on Switchboard';
|
||||
document.getElementById('loginError').textContent = '';
|
||||
document.getElementById('regError').textContent = '';
|
||||
const regErr = document.getElementById('regError');
|
||||
if (regErr) { regErr.textContent = ''; regErr.style.display = 'none'; }
|
||||
}
|
||||
|
||||
async function _doRegister() {
|
||||
@@ -291,10 +296,11 @@
|
||||
const errEl = document.getElementById('regError');
|
||||
const btn = document.getElementById('regBtn');
|
||||
|
||||
if (!username || !password) { errEl.textContent = 'Username and password are required'; return; }
|
||||
if (password.length < 8) { errEl.textContent = 'Password must be at least 8 characters'; return; }
|
||||
if (password !== confirm) { errEl.textContent = 'Passwords do not match'; return; }
|
||||
if (!username || !password) { errEl.textContent = 'Username and password are required'; errEl.style.display = ''; return; }
|
||||
if (password.length < 8) { errEl.textContent = 'Password must be at least 8 characters'; errEl.style.display = ''; return; }
|
||||
if (password !== confirm) { errEl.textContent = 'Passwords do not match'; errEl.style.display = ''; return; }
|
||||
|
||||
errEl.style.display = 'none';
|
||||
errEl.textContent = '';
|
||||
btn.disabled = true; btn.textContent = 'Creating account\u2026';
|
||||
|
||||
@@ -313,7 +319,8 @@
|
||||
if (data.pending) {
|
||||
errEl.textContent = 'Account created — pending admin approval.';
|
||||
errEl.style.color = 'var(--success)';
|
||||
setTimeout(() => { errEl.style.color = ''; _switchTab('login'); }, 3000);
|
||||
errEl.style.display = '';
|
||||
setTimeout(() => { errEl.style.color = ''; errEl.style.display = 'none'; _switchTab('login'); }, 3000);
|
||||
} else {
|
||||
// Auto-login
|
||||
const storageKey = base ? 'sb_auth_' + base.replace(/\//g, '') : 'sb_auth';
|
||||
@@ -325,6 +332,7 @@
|
||||
}
|
||||
} catch (e) {
|
||||
errEl.textContent = e.message;
|
||||
errEl.style.display = '';
|
||||
} finally {
|
||||
btn.disabled = false; btn.textContent = 'Create Account';
|
||||
}
|
||||
@@ -337,7 +345,7 @@
|
||||
document.getElementById('loginUsername').addEventListener('keydown', e => {
|
||||
if (e.key === 'Enter') document.getElementById('loginPassword').focus();
|
||||
});
|
||||
document.getElementById('regConfirm').addEventListener('keydown', e => {
|
||||
document.getElementById('regConfirm')?.addEventListener('keydown', e => {
|
||||
if (e.key === 'Enter') _doRegister();
|
||||
});
|
||||
</script>
|
||||
|
||||
Reference in New Issue
Block a user