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';
---
-
+
+