page.tsx 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. 'use client';
  2. import { useSession } from 'next-auth/react';
  3. import { useRouter } from 'next/navigation';
  4. import { useEffect } from 'react';
  5. import { Button } from '@/components/ui/button';
  6. import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card';
  7. export default function Home() {
  8. const { data: session, status } = useSession();
  9. const router = useRouter();
  10. useEffect(() => {
  11. if (status === 'loading') return;
  12. if (session?.user) {
  13. // Redirigir según el rol del usuario
  14. switch (session.user.role) {
  15. case 'admin':
  16. router.push('/admin/dashboard');
  17. break;
  18. case 'teacher':
  19. router.push('/teacher/dashboard');
  20. break;
  21. case 'student':
  22. router.push('/student/dashboard');
  23. break;
  24. default:
  25. router.push('/auth/signin');
  26. }
  27. }
  28. }, [session, status, router]);
  29. if (status === 'loading') {
  30. return (
  31. <div className="min-h-screen flex items-center justify-center">
  32. <div className="text-lg">Cargando...</div>
  33. </div>
  34. );
  35. }
  36. if (!session) {
  37. return (
  38. <div className="min-h-screen flex items-center justify-center bg-gray-50">
  39. <Card className="w-full max-w-md">
  40. <CardHeader className="text-center">
  41. <CardTitle className="text-2xl font-bold">
  42. Sistema de Gestión de Asistencia
  43. </CardTitle>
  44. <CardDescription>
  45. Bienvenido al sistema de gestión de asistencia universitaria
  46. </CardDescription>
  47. </CardHeader>
  48. <CardContent className="text-center">
  49. <Button
  50. onClick={() => router.push('/auth/signin')}
  51. className="w-full"
  52. >
  53. Iniciar Sesión
  54. </Button>
  55. </CardContent>
  56. </Card>
  57. </div>
  58. );
  59. }
  60. return (
  61. <div className="min-h-screen flex items-center justify-center">
  62. <div className="text-lg">Redirigiendo...</div>
  63. </div>
  64. );
  65. }