From ef4282afcdcccba3c778717f809bb0b454f63ab0 Mon Sep 17 00:00:00 2001 From: James Wyndham Date: Thu, 21 Mar 2024 05:39:48 +0800 Subject: [PATCH] feature - added protected documentation --- Documentation/docusaurus.config.ts | 6 +- Documentation/package-lock.json | 11 ++ Documentation/package.json | 1 + .../src/theme/ColorModeToggle/index.js | 14 +++ Documentation/src/theme/Root.js | 99 ++++++++++++++++++ Documentation/src/theme/pocketbase.js | 22 ++++ Documentation/static/img/combination-icon.png | Bin 0 -> 6824 bytes 7 files changed, 152 insertions(+), 1 deletion(-) create mode 100644 Documentation/src/theme/ColorModeToggle/index.js create mode 100644 Documentation/src/theme/Root.js create mode 100644 Documentation/src/theme/pocketbase.js create mode 100644 Documentation/static/img/combination-icon.png diff --git a/Documentation/docusaurus.config.ts b/Documentation/docusaurus.config.ts index 11379bc..6b988b8 100644 --- a/Documentation/docusaurus.config.ts +++ b/Documentation/docusaurus.config.ts @@ -57,7 +57,7 @@ const config: Config = { title: '', logo: { alt: 'FastPocket logo', - src: 'https://fastpocket.dev/images/combination-icon.png', + src: 'img/combination-icon.png', href: 'https://fastpocket.dev/' }, items: [ @@ -79,6 +79,10 @@ const config: Config = { darkTheme: prismThemes.dracula, }, } satisfies Preset.ThemeConfig, + + customFields: { + 'POCKETBASE_URL': process.env.POCKETBASE_URL, + }, }; export default config; diff --git a/Documentation/package-lock.json b/Documentation/package-lock.json index b06b33f..e911164 100644 --- a/Documentation/package-lock.json +++ b/Documentation/package-lock.json @@ -12,6 +12,7 @@ "@docusaurus/preset-classic": "3.1.1", "@mdx-js/react": "^3.0.0", "clsx": "^2.0.0", + "pocketbase": "^0.21.1", "prism-react-renderer": "^2.3.0", "react": "^18.0.0", "react-dom": "^18.0.0" @@ -10987,6 +10988,11 @@ "node": ">=4" } }, + "node_modules/pocketbase": { + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/pocketbase/-/pocketbase-0.21.1.tgz", + "integrity": "sha512-0PvCP4pKtxsV9kwldEGyibEvhwOcx9jSCrz3WN5CgPILJfM0z76f1op9WE8/8UgikDsMdRsc5iBLfKintrJS1g==" + }, "node_modules/postcss": { "version": "8.4.35", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", @@ -22257,6 +22263,11 @@ } } }, + "pocketbase": { + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/pocketbase/-/pocketbase-0.21.1.tgz", + "integrity": "sha512-0PvCP4pKtxsV9kwldEGyibEvhwOcx9jSCrz3WN5CgPILJfM0z76f1op9WE8/8UgikDsMdRsc5iBLfKintrJS1g==" + }, "postcss": { "version": "8.4.35", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", diff --git a/Documentation/package.json b/Documentation/package.json index d7ef927..1812cb0 100644 --- a/Documentation/package.json +++ b/Documentation/package.json @@ -19,6 +19,7 @@ "@docusaurus/preset-classic": "3.1.1", "@mdx-js/react": "^3.0.0", "clsx": "^2.0.0", + "pocketbase": "^0.21.1", "prism-react-renderer": "^2.3.0", "react": "^18.0.0", "react-dom": "^18.0.0" diff --git a/Documentation/src/theme/ColorModeToggle/index.js b/Documentation/src/theme/ColorModeToggle/index.js new file mode 100644 index 0000000..019c5cc --- /dev/null +++ b/Documentation/src/theme/ColorModeToggle/index.js @@ -0,0 +1,14 @@ +import React from 'react'; +import ColorModeToggle from '@theme-original/ColorModeToggle'; +import {logout} from '../pocketbase'; + +export default function ColorModeToggleWrapper(props) { + return ( + <> + + logout(() => window.location.reload())}> + Logout + + + ); +} \ No newline at end of file diff --git a/Documentation/src/theme/Root.js b/Documentation/src/theme/Root.js new file mode 100644 index 0000000..087d7f5 --- /dev/null +++ b/Documentation/src/theme/Root.js @@ -0,0 +1,99 @@ +import React, { useState } from "react"; +import { signIn, auth } from "./pocketbase"; + +export default function Root({ children }) { + const [userAuth, setUserAuth] = useState(""); + const [email, setEmail] = useState(""); + const [password, setPassword] = useState(""); + const [loading, setLoading] = useState(false); + + const handleSubmit = async (event) => { + event.preventDefault(); + setLoading(true) + await signIn(email,password) + setLoading(false) + }; + + auth.onChange(async function (user) { + if (user !== null) { + setUserAuth(user); + } + }); + + return ( + <> + {userAuth != "" ? ( + <>{children} + ) : ( +
+
+ +

Docs

+ + setEmail(e.target.value)} + style={{ + marginBottom: "10px", + padding: "5px", + borderRadius: "5px", + border: "1px solid #ccc", + }} + /> + + setPassword(e.target.value)} + style={{ + marginBottom: "10px", + padding: "5px", + borderRadius: "5px", + border: "1px solid #ccc", + }} + /> + +
+
+ )} + + ); +} diff --git a/Documentation/src/theme/pocketbase.js b/Documentation/src/theme/pocketbase.js new file mode 100644 index 0000000..c89604f --- /dev/null +++ b/Documentation/src/theme/pocketbase.js @@ -0,0 +1,22 @@ +import PocketBase from "pocketbase"; + +const app = (() => { + const POCKETBASE_URL = "https://fastpocket.fly.dev" + "/"; + return new PocketBase(POCKETBASE_URL); +})(); + +export const auth = app.authStore; + +export const logout = (afterAction = () => {}) => { + app.authStore.clear(); + afterAction(null); +}; + +export const signIn = async (email, password) => { + try { + await app.collection("user").authWithPassword(email, password); + } catch (err) { + console.error(err); + alert(err.message); + } +}; diff --git a/Documentation/static/img/combination-icon.png b/Documentation/static/img/combination-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..0a58667daea515f9b8b19a1d2ddbe15c32059491 GIT binary patch literal 6824 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 literal 0 HcmV?d00001