- SQLite database with full schema: users, roles, permissions, role_permissions, user_roles, services, audit_log - RBAC engine with wildcard permission resolution (*.*.*) - Automatic v2→v3 migration from JSON files - 5 default roles: super_admin, admin, editor, user, viewer - Feature registration for APP, GGL, FDX (119 permissions) - 8 services seeded - Full API: roles CRUD, permission check, user-role assignment, feature registration, audit log, stats - Backward compatible with existing auth flows
23 lines
905 B
HTML
23 lines
905 B
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>Access Denied</title>
|
|
<style>
|
|
body { background: #0f172a; color: #e2e8f0; font-family: -apple-system, sans-serif; display: flex; align-items: center; justify-content: center; min-height: 100vh; margin: 0; }
|
|
.box { text-align: center; max-width: 400px; }
|
|
h1 { font-size: 48px; margin: 0; color: #ef4444; }
|
|
p { color: #94a3b8; margin-top: 12px; }
|
|
a { color: #3b82f6; text-decoration: none; }
|
|
a:hover { text-decoration: underline; }
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<div class="box">
|
|
<h1>403</h1>
|
|
<p>You don't have access to this service.<br>Contact your administrator if you think this is a mistake.</p>
|
|
<p style="margin-top: 24px"><a href="https://scottfelten.com">← Back to scottfelten.com</a></p>
|
|
</div>
|
|
</body>
|
|
</html>
|