soupirehn
This commit is contained in:
parent
c3e9ffcb6d
commit
168a35f9de
2 changed files with 53 additions and 67 deletions
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue