soupirehn

This commit is contained in:
Guillem George 2026-05-15 17:27:27 +02:00
parent c3e9ffcb6d
commit 168a35f9de
2 changed files with 53 additions and 67 deletions

View file

@ -1,5 +1,31 @@
import * as redirect from "./redirect"; import * as redirect from "./redirect";
async function sendRequest(endpoint, body) {
const request = {
method: "POST",
headers: {
"Content-Type": "application/x-www-form-urlencoded",
},
body: new URLSearchParams(body)
};
console.debug(request)
let response;
try {
response = await fetch(endpoint, request)
if (!response.ok) {
throw new Error(response.statusText)
}
}
catch (err) {
console.error(err)
return null
}
return await response.json()
}
/** /**
* @param {string} code the authorization code received from the OIDC * @param {string} code the authorization code received from the OIDC
* provider * provider
@ -12,47 +38,22 @@ async function getToken(code) {
const formData = { const formData = {
"grant_type": "authorization_code", "grant_type": "authorization_code",
"code": code, "code": code,
"redirect_uri": redirect.createLink(), "redirect_uri": `${auth_url}/complete/epita/`,
"client_id": import.meta.env.VITE_CLIENT_ID "client_id": import.meta.env.VITE_CLIENT_ID
} }
const request = { const response = await sendRequest(endpoint, formData)
method: "POST", if (response === null) {
// mode: 'cors',
headers: {
"Content-Type": "application/x-www-form-urlencoded",
},
body: new URLSearchParams(formData)
};
try {
const response = await fetch(endpoint, request)
if (!response.ok) {
throw new Error(response.statusText)
}
}
catch (err) {
console.error("Failed to retrieve OIDC token") console.error("Failed to retrieve OIDC token")
alert("Failed to retrieve OIDC token") alert("Failed to retrieve OIDC token")
console.error(err)
localStorage.clear(); localStorage.clear();
redirect.redirectToLoginPage() redirect.redirectToLoginPage()
return false return false;
} }
const { localStorage.setItem("token", response.id_token);
// access_token, localStorage.setItem("refresh_token", response.refresh_token);
// token_type, console.debug("Saved token and refresh tokens")
refresh_token,
// expires_in,
id_token
} = response.body
// console.debug("Saving token and refresh tokens...")
localStorage.setItem("token", id_token);
localStorage.setItem("refresh_token", refresh_token);
return true return true
} }
@ -64,50 +65,34 @@ async function getToken(code) {
*/ */
async function refreshToken(refreshToken) { async function refreshToken(refreshToken) {
refreshToken= refreshToken || localStorage.getItem("refresh_token");
if (!refreshToken) {
console.error("Unable to retrieve refresh token")
return false
}
const auth_url = import.meta.env.VITE_URL; const auth_url = import.meta.env.VITE_URL;
const endpoint = `${auth_url}/auth-api/token`; const endpoint = `${auth_url}/auth-api/token`;
const formData = { const formData = {
client_id: import.meta.env.VITE_CLIENT_ID, "client_id": import.meta.env.VITE_CLIENT_ID,
client_secret: "...", // client_secret: "",
grant_type: "code", "grant_type": "authorization_code",
refresh_token: refreshToken, refresh_token: refreshToken,
scope: "epita profile picture", scope: "epita profile picture"
} }
const request = { const response = await sendRequest(endpoint, formData)
method: "POST", if (response === null) {
// mode: 'cors',
headers: {
"Content-Type": "application/x-www-form-urlencoded",
},
body: new URLSearchParams(formData)
};
try {
const response = await fetch(endpoint, request)
if (!response.ok) {
throw new Error(response.statusText)
}
}
catch (err) {
console.error("Failed to retrieve OIDC token") console.error("Failed to retrieve OIDC token")
alert("Failed to retrieve OIDC token")
localStorage.clear(); localStorage.clear();
redirect.redirectToLoginPage() redirect.redirectToLoginPage()
return false return false;
} }
const { localStorage.setItem("token", response.id_token);
// access_token, localStorage.setItem("refresh_token", response.refresh_token);
// token_type, console.debug("Saved token and refresh tokens")
refresh_token,
// expires_in,
id_token
} = response.body
// console.debug("Saving token and refresh tokens...")
localStorage.setItem("token", id_token);
localStorage.setItem("refresh_token", refresh_token);
return true return true
} }
@ -133,6 +118,6 @@ async function authenticate() {
export { export {
getToken, getToken,
// refreshToken, refreshToken,
authenticate authenticate
} }

View file

@ -10,7 +10,8 @@ function createLink() {
}); });
const base_url = import.meta.env.VITE_AUTH_URL const base_url = import.meta.env.VITE_AUTH_URL
return `${base_url}/authorize?${params}` const res = `${base_url}/authorize?${params}`
return res;
} }