diff --git a/src/components/EspaceMembres.tsx b/src/components/EspaceMembres.tsx
index 9b43833..455e2ab 100644
--- a/src/components/EspaceMembres.tsx
+++ b/src/components/EspaceMembres.tsx
@@ -1,7 +1,8 @@
import { createContext } from "preact";
import Login from "./Login";
import PocketBase from 'pocketbase';
-import { useContext, useState } from "preact/hooks";
+import { useContext, useEffect, useState } from "preact/hooks";
+import Home from "./Members/Home";
const pb = new PocketBase(import.meta.env.PUBLIC_PB_API);
export const Pb = createContext(pb);
@@ -12,22 +13,46 @@ export const Router = createContext({
},
});
-function Fake() {
+export function useAuth() {
+ const pb = useContext(Pb);
const router = useContext(Router);
- const handleClick = () => {
- router.navigate('/login');
+ const [isAuth, setIsAuth] = useState(pb.authStore.isValid);
+
+ const login = async (email: string, password: string) => {
+ try {
+ await pb.collection('users').authWithPassword(email, password);
+ router.navigate('/');
+ setIsAuth(true)
+ } catch (error) {
+ return error;
+ }
}
- return (
-
-
Fake
-
-
- )
+ const logout = () => {
+ try {
+ pb.authStore.clear()
+ setIsAuth(false)
+ } catch (error) {
+ return error;
+ }
+ }
+
+ return {
+ isAuth,
+ login,
+ logout,
+ }
}
export default function EspaceMembres() {
const [route, setRoute] = useState('/');
+ const { isAuth } = useAuth();
+
+ useEffect(() => {
+ if (!isAuth) {
+ setRoute('/login');
+ }
+ }, [isAuth]);
const navigate = (path: string) => {
setRoute(path);
@@ -39,7 +64,7 @@ export default function EspaceMembres() {
navigate,
}}>
{{
- '/': ,
+ '/': ,
'/login': ,
}[route]}
diff --git a/src/components/Login.tsx b/src/components/Login.tsx
index f6ec8d5..19cdedd 100644
--- a/src/components/Login.tsx
+++ b/src/components/Login.tsx
@@ -1,26 +1,14 @@
import { type TargetedEvent } from "preact/compat"
-import { useContext } from "preact/compat"
-import { Pb, Router } from "./EspaceMembres"
+import { useAuth } from "./EspaceMembres";
export default function Login() {
- const pb = useContext(Pb);
- const router = useContext(Router);
+ const { login } = useAuth();
const handleSubmit = (event: TargetedEvent) => {
event.preventDefault()
login(event.currentTarget.email.value, event.currentTarget.password.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 (
diff --git a/src/components/Members/Home.tsx b/src/components/Members/Home.tsx
new file mode 100644
index 0000000..991066d
--- /dev/null
+++ b/src/components/Members/Home.tsx
@@ -0,0 +1,7 @@
+export default function Home() {
+ return (
+ <>
+
Bienvenue sur votre espace membre
+ >
+ )
+}
diff --git a/src/components/Members/index.ts b/src/components/Members/index.ts
new file mode 100644
index 0000000..e69de29