Pages
Admin
Actualizacionbd
index.tsx

index.tsx

En esta pagina contiene las carreras las cuales son tarjeatas. Las carrera las obtiene de la base de datos de la siguiente manera:

export const getServerSideProps = withPageAuth({
  redirectTo: "/login",
  async getServerSideProps(context) {
    // Access the user object
    // Por alguna razon con el supabase de utils no nos da el id del usuario
    const supabase = createServerSupabaseClient(context);
    const {
      data: { session },
    } = await supabase.auth.getSession();
    // Get the user from the database
    const user = await supabase
      .from("users")
      .select("*")
      .eq("id", session?.user?.id)
      .single();
 
    // Check if the user is an admin
    if (user.data?.role === "admin") {
      console.log("Es admin");
      const { data } = await supabase.from("carreras").select("*");
 
      return {
        props: {
          data,
        },
      };
    } else {
      console.log("No es admin");
      return {
        redirect: {
          destination: "/",
          permanent: false,
        },
      };
    }
  },
  authRequired: true,
});

La cual con estos datos mapea las carreras de la siguiente manera

{
  data.data.map((item: any) => (
    <Card shadow="sm" p="xl" component="a" radius="lg" target="_blank">
      <Card.Section>
        <Image
          src="https://images.unsplash.com/photo-1579227114347-15d08fc37cae?ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=2550&q=80"
          height={160}
          alt="No way!"
        />
      </Card.Section>
 
      <Text weight={500} size="lg" mt="md" align="center">
        {item.nombrelargo}
      </Text>
 
      <Group position="apart" mb={0} mt={"auto"}>
        <Box mt="md">
          <Badge color="blue">{item.nombrecorto}</Badge>
        </Box>
        <Box mt="md">
          <Button
            variant="outline"
            color="blue"
            onClick={() => {
              router.push(`/admin/carrerasGrupos/${item.nombrecorto}`);
            }}
          >
            Ver Grupos
          </Button>
        </Box>
      </Group>
    </Card>
  ));
}
Last updated on December 17, 2022