summaryrefslogtreecommitdiff
path: root/frontend/src/index.tsx
diff options
context:
space:
mode:
authorAAGaming <aa@mail.catvibers.me>2022-08-05 21:16:29 -0400
committerAAGaming <aa@mail.catvibers.me>2022-08-05 21:16:29 -0400
commitf21d34506d0fd09d5849fcee552447cdfbf4802f (patch)
treefa7475021d12d54f5edb74489b9ecf81a16bd639 /frontend/src/index.tsx
parentab6ec981604a32611d972ede634abe7ccd19b0d2 (diff)
downloaddecky-loader-f21d34506d0fd09d5849fcee552447cdfbf4802f.tar.gz
decky-loader-f21d34506d0fd09d5849fcee552447cdfbf4802f.zip
Implement CSRF protection
Diffstat (limited to 'frontend/src/index.tsx')
-rw-r--r--frontend/src/index.tsx37
1 files changed, 23 insertions, 14 deletions
diff --git a/frontend/src/index.tsx b/frontend/src/index.tsx
index 4045751f..20f71766 100644
--- a/frontend/src/index.tsx
+++ b/frontend/src/index.tsx
@@ -8,24 +8,33 @@ declare global {
importDeckyPlugin: Function;
syncDeckyPlugins: Function;
deckyHasLoaded: boolean;
+ deckyAuthToken: string;
}
}
+(async () => {
+ window.deckyAuthToken = await fetch('http://127.0.0.1:1337/auth/token').then((r) => r.text());
-window.DeckyPluginLoader?.dismountAll();
-window.DeckyPluginLoader?.deinit();
+ window.DeckyPluginLoader?.dismountAll();
+ window.DeckyPluginLoader?.deinit();
-window.DeckyPluginLoader = new PluginLoader();
-window.importDeckyPlugin = function (name: string) {
- window.DeckyPluginLoader?.importPlugin(name);
-};
+ window.DeckyPluginLoader = new PluginLoader();
+ window.importDeckyPlugin = function (name: string) {
+ window.DeckyPluginLoader?.importPlugin(name);
+ };
-window.syncDeckyPlugins = async function () {
- const plugins = await (await fetch('http://127.0.0.1:1337/plugins')).json();
- for (const plugin of plugins) {
- if (!window.DeckyPluginLoader.hasPlugin(plugin)) window.DeckyPluginLoader?.importPlugin(plugin);
- }
-};
+ window.syncDeckyPlugins = async function () {
+ const plugins = await (
+ await fetch('http://127.0.0.1:1337/plugins', {
+ credentials: 'include',
+ headers: { Authentication: window.deckyAuthToken },
+ })
+ ).json();
+ for (const plugin of plugins) {
+ if (!window.DeckyPluginLoader.hasPlugin(plugin)) window.DeckyPluginLoader?.importPlugin(plugin);
+ }
+ };
-setTimeout(() => window.syncDeckyPlugins(), 5000);
+ setTimeout(() => window.syncDeckyPlugins(), 5000);
-window.deckyHasLoaded = true;
+ window.deckyHasLoaded = true;
+})();