resets passwords
This commit is contained in:
@@ -1,6 +1,16 @@
|
||||
{% extends 'base.html' %}
|
||||
{% block content %}
|
||||
<div class="h-full flex flex-col">
|
||||
{% with messages = get_flashed_messages(with_categories=true) %}
|
||||
{% if messages %}
|
||||
{% for category, message in messages %}
|
||||
<div class="bg-{% if category == 'success' %}green{% else %}blue{% endif %}-50 border border-{% if category == 'success' %}green{% else %}blue{% endif %}-200 text-{% if category == 'success' %}green{% else %}blue{% endif %}-800 px-4 py-3 rounded-md mb-4">
|
||||
<p>{{ message }}</p>
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% endwith %}
|
||||
|
||||
{% if session.get('password_reset_link') %}
|
||||
<div class="bg-blue-50 border border-blue-200 text-blue-800 px-4 py-3 rounded-md mb-4">
|
||||
<p class="font-medium">Please send an email to {{ session.get('reset_user_email') }}</p>
|
||||
|
||||
@@ -31,18 +31,14 @@
|
||||
<script>
|
||||
// Initialize Firebase configuration from template
|
||||
window.FIREBASE_CONFIG = {{ firebase_config|tojson }};
|
||||
|
||||
// Initialize Firebase app and auth
|
||||
const app = firebase.initializeApp(window.FIREBASE_CONFIG || {});
|
||||
const auth = firebase.auth();
|
||||
|
||||
// Get form and input elements
|
||||
const form = document.getElementById('login-form');
|
||||
const email = document.getElementById('email');
|
||||
const password = document.getElementById('password');
|
||||
const err = document.getElementById('error');
|
||||
|
||||
// Handle form submission
|
||||
form.addEventListener('submit', async (e) => {
|
||||
e.preventDefault();
|
||||
err.classList.add('hidden');
|
||||
@@ -54,10 +50,17 @@
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({ idToken })
|
||||
});
|
||||
if(!res.ok){
|
||||
|
||||
if (!res.ok) {
|
||||
throw new Error('Session exchange failed');
|
||||
}
|
||||
window.location.href = '/';
|
||||
|
||||
const data = await res.json();
|
||||
if (data.requires_password_reset) {
|
||||
window.location.href = '/require-password-reset';
|
||||
} else {
|
||||
window.location.href = '/';
|
||||
}
|
||||
} catch (e) {
|
||||
err.textContent = e.message || 'Authentication failed';
|
||||
err.classList.remove('hidden');
|
||||
|
||||
47
templates/require_password_reset.html
Normal file
47
templates/require_password_reset.html
Normal file
@@ -0,0 +1,47 @@
|
||||
{% extends 'base.html' %}
|
||||
{% block content %}
|
||||
<div class="h-full flex flex-col max-w-md mx-auto">
|
||||
<h1 class="text-xl font-semibold mb-6">Password Reset Required</h1>
|
||||
|
||||
<form method="POST" action="/reset-password-submit" class="space-y-6">
|
||||
<div>
|
||||
<label for="new_password" class="block text-sm font-medium text-slate-700">New Password</label>
|
||||
<input type="password" id="new_password" name="new_password"
|
||||
value=""
|
||||
required
|
||||
class="mt-1 block w-full px-3 py-2 border border-slate-300 rounded-md shadow-sm focus:outline-none focus:ring-blue-500 focus:border-blue-500"
|
||||
minlength="6">
|
||||
<p class="mt-1 text-sm text-slate-500">Password must be at least 6 characters</p>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<label for="confirm_password" class="block text-sm font-medium text-slate-700">Confirm Password</label>
|
||||
<input type="password" id="confirm_password" name="confirm_password"
|
||||
value=""
|
||||
required
|
||||
class="mt-1 block w-full px-3 py-2 border border-slate-300 rounded-md shadow-sm focus:outline-none focus:ring-blue-500 focus:border-blue-500">
|
||||
</div>
|
||||
|
||||
{% with messages = get_flashed_messages(with_categories=true) %}
|
||||
{% if messages %}
|
||||
{% for category, message in messages %}
|
||||
<div class="bg-red-50 border border-red-200 text-red-800 px-4 py-3 rounded-md">
|
||||
{{ message }}
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% endwith %}
|
||||
|
||||
<div class="flex justify-end space-x-3 pt-4">
|
||||
<a href="/login"
|
||||
class="px-4 py-2 text-sm font-medium text-slate-700 bg-gray-100 hover:bg-gray-200 rounded-md transition-colors text-center inline-block">
|
||||
Cancel
|
||||
</a>
|
||||
<button type="submit"
|
||||
class="px-4 py-2 text-sm font-medium text-white bg-blue-600 hover:bg-blue-700 rounded-md transition-colors">
|
||||
Reset Password
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
{% endblock %}
|
||||
Reference in New Issue
Block a user