summaryrefslogtreecommitdiff
path: root/rushs/eplace/src/pages/complete/epita/index.js
diff options
context:
space:
mode:
Diffstat (limited to 'rushs/eplace/src/pages/complete/epita/index.js')
-rw-r--r--rushs/eplace/src/pages/complete/epita/index.js53
1 files changed, 53 insertions, 0 deletions
diff --git a/rushs/eplace/src/pages/complete/epita/index.js b/rushs/eplace/src/pages/complete/epita/index.js
new file mode 100644
index 0000000..ced46cf
--- /dev/null
+++ b/rushs/eplace/src/pages/complete/epita/index.js
@@ -0,0 +1,53 @@
+// FIXME: This file should handle the auth redirection
+
+// Get the code from the URL parameters and redirect to the relevant page
+const params = new URLSearchParams(window.location.search);
+
+const code = params.get("code");
+const form = new FormData();
+
+form.append("client_id", import.meta.env.VITE_CLIENT_ID);
+form.append("redirect_uri", `${import.meta.env.VITE_URL}/complete/epita/`);
+form.append("grant_type", "authorization_code");
+form.append("code", code);
+const config = {
+ method: "POST",
+ body: form,
+};
+
+export async function getToken() {
+ try {
+ const res = await fetch(
+ `${import.meta.env.VITE_URL}/auth-api/token`,
+ config,
+ );
+ const response = await res.json();
+
+ const token = response.id_token;
+
+ localStorage.setItem("token", token);
+ localStorage.setItem("refresh_token", response.refresh_token);
+ window.location.replace(import.meta.env.VITE_URL);
+ return true;
+ } catch (error) {
+ console.log(error);
+ return false;
+ }
+}
+
+if (!code) {
+ const authQueryParams = {
+ client_id: import.meta.env.VITE_CLIENT_ID,
+ scope: "epita profile picture",
+ redirect_uri: `${import.meta.env.VITE_URL}/complete/epita/`,
+ response_type: "code",
+ };
+ const url = new URL(
+ `?client_id=${authQueryParams.client_id}&scope=${authQueryParams.scope}&redirect_uri=${authQueryParams.redirect_uri}&response_type=${authQueryParams.response_type}`,
+ `${import.meta.env.VITE_AUTH_URL}/authorize`,
+ );
+
+ window.location.replace(url);
+} else {
+ getToken();
+}