diff --git a/package.json b/package.json index a083780..a2e9351 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,7 @@ "@astrojs/preact": "^3.0.0", "@astrojs/tailwind": "^5.0.0", "astro": "^3.0.12", + "pocketbase": "^0.18.0", "preact": "^10.6.5", "tailwindcss": "^3.0.24" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 883db23..e81640b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,6 +10,9 @@ dependencies: astro: specifier: ^3.0.12 version: 3.0.12 + pocketbase: + specifier: ^0.18.0 + version: 0.18.0 preact: specifier: ^10.6.5 version: 10.17.1 @@ -2752,6 +2755,10 @@ packages: find-up: 4.1.0 dev: false + /pocketbase@0.18.0: + resolution: {integrity: sha512-09ri0Rnm4JjboU4OJeibd6pgvKi4DPg/r/Uu/QI3mKSZsrROoMT75zyiOldbBBMWZUDG1TRlv6BjQj30SFsrVw==} + dev: false + /postcss-import@15.1.0(postcss@8.4.29): resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} engines: {node: '>=14.0.0'} diff --git a/src/components/EspaceMembres.tsx b/src/components/EspaceMembres.tsx new file mode 100644 index 0000000..9b43833 --- /dev/null +++ b/src/components/EspaceMembres.tsx @@ -0,0 +1,48 @@ +import { createContext } from "preact"; +import Login from "./Login"; +import PocketBase from 'pocketbase'; +import { useContext, useState } from "preact/hooks"; + +const pb = new PocketBase(import.meta.env.PUBLIC_PB_API); +export const Pb = createContext(pb); + +export const Router = createContext({ + navigate: (path: string) => { + console.log(path); + }, +}); + +function Fake() { + const router = useContext(Router); + const handleClick = () => { + router.navigate('/login'); + } + + return ( +
+

Fake

+ +
+ ) +} + +export default function EspaceMembres() { + const [route, setRoute] = useState('/'); + + const navigate = (path: string) => { + setRoute(path); + } + + return ( + + + {{ + '/': , + '/login': , + }[route]} + + + ) +} diff --git a/src/components/Login.tsx b/src/components/Login.tsx index d9df53e..f6ec8d5 100644 --- a/src/components/Login.tsx +++ b/src/components/Login.tsx @@ -1,13 +1,26 @@ -import type { TargetedEvent } from "preact/compat" +import { type TargetedEvent } from "preact/compat" +import { useContext } from "preact/compat" +import { Pb, Router } from "./EspaceMembres" export default function Login() { + const pb = useContext(Pb); + const router = useContext(Router); + const handleSubmit = (event: TargetedEvent) => { event.preventDefault() - console.log(import.meta.env.PUBLIC_PB_API) + login(event.currentTarget.email.value, event.currentTarget.password.value) } - const handleChange = (event: TargetedEvent) => { - console.log(event.currentTarget.value) + + const login = async (email: string, password: string) => { + try { + await pb.collection('users').authWithPassword(email, password); + router.navigate('/'); + } catch (error) { + if (error instanceof Error) + console.error(error.message); + } } + return (
@@ -19,7 +32,7 @@ export default function Login() {
- +
diff --git a/src/pages/espace-membres.astro b/src/pages/espace-membres.astro index b19e939..86b0c00 100644 --- a/src/pages/espace-membres.astro +++ b/src/pages/espace-membres.astro @@ -1,7 +1,9 @@ --- import Layout from '../layouts/Layout.astro'; -import Login from '../components/Login.tsx' +// import Login from '../components/Login.tsx' +import EspaceMembres from '../components/EspaceMembres.tsx'; --- - + +