mirror of
https://gitlab.w-hs.de/an14051/backerup-website.git
synced 2026-07-27 17:35:29 +00:00
0d58fafe4e
- Add user management API endpoints for listing and creating users. - Implement login and logout functionality with rate limiting. - Create UI components for login form, logout button, and animated elements. - Add session management with JWT and secure cookie handling. - Seed initial admin user if no users exist. - Introduce utility functions for password hashing and user authentication. - Set up proxy middleware for route protection and security headers. - Create a JSON file for user data storage. - Add links configuration for external resources.
43 lines
1.7 KiB
TypeScript
43 lines
1.7 KiB
TypeScript
import type { Metadata } from 'next'
|
|
import { redirect } from 'next/navigation'
|
|
import { getSession } from '@/lib/session'
|
|
import { listUsers } from '@/lib/users'
|
|
import UsersClient from './UsersClient'
|
|
|
|
export const metadata: Metadata = {
|
|
title: 'Admin — Backerup',
|
|
}
|
|
|
|
export default async function AdminPage() {
|
|
const session = await getSession()
|
|
if (!session || session.role !== 'admin') {
|
|
redirect('/')
|
|
}
|
|
|
|
const users = await listUsers()
|
|
|
|
return (
|
|
<div className="mx-auto max-w-2xl px-4 py-12">
|
|
{/* Header */}
|
|
<div className="mb-10">
|
|
<div className="flex items-center gap-3 mb-2">
|
|
<div
|
|
className="w-9 h-9 rounded-xl flex items-center justify-center"
|
|
style={{ background: 'linear-gradient(135deg, #a78bfa, #7c3aed)' }}
|
|
>
|
|
<svg viewBox="0 0 20 20" fill="currentColor" className="w-4 h-4 text-white" aria-hidden="true">
|
|
<path d="M10 9a3 3 0 100-6 3 3 0 000 6zM6 8a2 2 0 11-4 0 2 2 0 014 0zM1.49 15.326a.78.78 0 01-.358-.442 3 3 0 014.308-3.516 6.484 6.484 0 00-1.905 3.959c-.023.222-.014.442.025.654a4.97 4.97 0 01-2.07-.655zM16.44 15.98a4.97 4.97 0 002.07-.654.78.78 0 00.357-.442 3 3 0 00-4.308-3.517 6.484 6.484 0 011.907 3.96 2.32 2.32 0 01-.026.654zM18 8a2 2 0 11-4 0 2 2 0 014 0zM5.304 16.19a.844.844 0 01-.277-.71 5 5 0 019.947 0 .843.843 0 01-.277.71A6.975 6.975 0 0110 18a6.974 6.974 0 01-4.696-1.81z" />
|
|
</svg>
|
|
</div>
|
|
<div>
|
|
<h1 className="text-xl font-bold text-white">User Management</h1>
|
|
<p className="text-sm text-slate-400">Manage accounts and permissions</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<UsersClient initialUsers={users} currentUserId={session.userId} />
|
|
</div>
|
|
)
|
|
}
|