60 lines
2.4 KiB
TypeScript
60 lines
2.4 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-4 md:p-8">
|
|
<h1 className="text-2xl md:text-3xl font-bold text-text-primary mb-2">Paramètres</h1>
|
|
<p className="text-text-secondary mb-6 md: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'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>
|
|
)
|
|
}
|