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