Key changes: - Removed office-centric model (deleted offices.py, office-rules) - Renamed to team-rules, managers are part of their own team - Team calendar visible to all (read-only for employees) - Admins can have a manager assigned
48 lines
1.5 KiB
HTML
48 lines
1.5 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>Parking Manager</title>
|
|
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
|
|
<link rel="stylesheet" href="/css/styles.css">
|
|
</head>
|
|
<body>
|
|
<div class="auth-container">
|
|
<div class="auth-card">
|
|
<div class="auth-header">
|
|
<h1>Parking Manager</h1>
|
|
<p>Manage team presence and parking assignments</p>
|
|
</div>
|
|
|
|
<div style="display: flex; flex-direction: column; gap: 1rem;">
|
|
<a href="/login" class="btn btn-dark btn-full">Sign In</a>
|
|
<a href="/register" class="btn btn-secondary btn-full">Create Account</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<script>
|
|
// Redirect if already logged in (JWT token or Authelia)
|
|
async function checkAndRedirect() {
|
|
// Check JWT token first
|
|
if (localStorage.getItem('access_token')) {
|
|
window.location.href = '/presence';
|
|
return;
|
|
}
|
|
|
|
// Check Authelia (backend will read headers)
|
|
try {
|
|
const response = await fetch('/api/auth/me');
|
|
if (response.ok) {
|
|
window.location.href = '/presence';
|
|
}
|
|
} catch (e) {
|
|
// Not authenticated, stay on landing
|
|
}
|
|
}
|
|
checkAndRedirect();
|
|
</script>
|
|
</body>
|
|
</html>
|