corenthin-lebreton 28aa3b0e10 initial project
2026-02-26 20:10:14 +01:00

60 lines
2.3 KiB
TypeScript

/* eslint-disable @typescript-eslint/no-explicit-any */
import { createClient } from '@/lib/supabase/server'
import { User, Shield, Settings } from 'lucide-react'
export default async function SettingsPage() {
const supabase = await createClient()
const db = supabase as any
const { data: { user } } = await supabase.auth.getUser()
const { data: profile } = await db
.from('profiles')
.select('username, role')
.eq('id', user!.id)
.single()
return (
<div className="p-8">
<h1 className="text-3xl font-bold text-text-primary mb-2">Paramètres</h1>
<p className="text-text-secondary mb-8">Gérez votre compte et vos préférences.</p>
<div className="max-w-2xl space-y-6">
<div className="card p-6">
<div className="flex items-center gap-2 mb-4">
<User size={18} className="text-primary" />
<h2 className="font-semibold text-text-primary">Informations du compte</h2>
</div>
<div className="space-y-4">
<div>
<label className="block text-sm text-text-secondary mb-1">Nom d&apos;utilisateur</label>
<input type="text" defaultValue={profile?.username ?? ''} readOnly className="input-field" />
</div>
<div>
<label className="block text-sm text-text-secondary mb-1">Email</label>
<input type="text" defaultValue={user?.email ?? ''} readOnly className="input-field" />
</div>
</div>
</div>
<div className="card p-6">
<div className="flex items-center gap-2 mb-4">
<Shield size={18} className="text-primary" />
<h2 className="font-semibold text-text-primary">Rôle & Permissions</h2>
</div>
<div className="flex items-center gap-3">
<div className="w-10 h-10 bg-primary/20 rounded-xl flex items-center justify-center">
<Settings size={18} className="text-primary" />
</div>
<div>
<p className="font-medium text-text-primary capitalize">{profile?.role ?? 'formateur'}</p>
<p className="text-xs text-text-muted">
{profile?.role === 'admin' ? 'Accès complet à toutes les fonctionnalités' : 'Accès formateur standard'}
</p>
</div>
</div>
</div>
</div>
</div>
)
}