Skip to content
Snippets Groups Projects
Commit fb7b5523 authored by Alfredo Chissotti's avatar Alfredo Chissotti
Browse files

first page automatically redirects

parent 6dae2028
No related branches found
No related tags found
No related merge requests found
......@@ -15,6 +15,8 @@ if(!uri.includes('#')) {
a.href = a.href.replace("$MY_CODE_CHALLENGE", mySecure.codeChallenge).replace("$MY_STATE", mySecure.state);
sessionStorage.setItem("stateSent", mySecure.state); // state inviato durante la richiesta dell'authcode
sessionStorage.setItem("codeVerifier", mySecure.codeVerifier);
//automatically redirect to the login page
window.location.href = a.href;
}
else {
// l'uri e' del tipo localhost:3000/secured# seguito da parametri
......@@ -22,10 +24,11 @@ else {
const params = uriSplit[1].split('&');
const uriState = queryStringGetValue(params[0]);
const uriAuthCode = queryStringGetValue(params[2]);
const body = document.getElementById('body-id');
// get the body element
const body = document.getElementsByTagName('body')[0];
body.innerHTML = "";
if(!sessionStorage.stateSent || sessionStorage.stateSent !== uriState) {
body.innerHTML = `Errors in the request!`;
body.innerHTML = `Errors in the request!`;
}
else {
token = await requestToken(uriAuthCode); // post per la richiesta del token
......@@ -34,13 +37,13 @@ else {
const myDomains = getMyDomains(token);
const app = new App(myDomains);
}
// DA FARE: capire come richiedere il refresh token
}
}
/**
* Ottengo il valore associato al parametro.
* Ottengo il valore associato al parametro.
* @param {*} queryString query string del tipo parametro=valore.
* @returns il valore associato al parametro.
*/
......@@ -52,7 +55,7 @@ function queryStringGetValue(queryString) {
/**
* Post per la richiesta del token
* @returns il token ottenuto
* @returns il token ottenuto
*/
async function requestToken(uriAuthCode) {
......@@ -71,20 +74,20 @@ async function requestToken(uriAuthCode) {
})
});
const token = await response.json();
if(response.ok)
if(response.ok)
return token;
else
return null;
}
/**
* Funzione per ottenenere dal domain manager tutte le informazioni
* Funzione per ottenenere dal domain manager tutte le informazioni
* sui domini dell'utente che ha fatto il login
* @param {*} token token da inviare al domain manager
*/
async function getMyDomains(token) {
const responseDomain = await fetch('http://localhost:3001/secured/domains', { // DA FARE: controllare che l'uri che ho specificato qui coincida con quello specificato dal domain manager
method: 'GET',
method: 'GET',
headers: {
// DA FARE: mettere qui il token
}
......@@ -94,7 +97,7 @@ async function getMyDomains(token) {
const domainsArray = domainsJson.response;
const myDomains = domainsArray.map((d) => Domain.from(d));
return myDomains;
}
}
else
throw domainsJson;
}
......
......@@ -4,15 +4,15 @@
<head>
<meta charset="utf-8">
<title id="title">SmartHome</title>
<link rel="icon" href="res/favicon.png">
<!--<link rel="icon" href="res/favicon.png">-->
<!-- link all other useful scripts -->
<!-- link bootstrap -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet"
<!--<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet"
integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
<script defer src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js"
integrity="sha384-ka7Sk0Gln4gmtz2MlQnikT1wXgYsOg+OMhuP+IlRH9sENBO0LRn5q+8nbTov4+1p"
crossorigin="anonymous"></script>
crossorigin="anonymous"></script>-->
<!-- link fontawesome (for icons)-->
<!-- <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css"
integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous"> -->
......@@ -23,14 +23,14 @@
<!-- <script defer src="https://github.com/nodejs/node/blob/v18.8.0/lib/crypto.js" type="text/javascript"></script> -->
<!-- <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/rollups/aes.js"></script> -->
<!-- <script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/rollups/aes.js"></script> -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9-1/crypto-js.min.js"></script>
<!--<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9-1/crypto-js.min.js"></script>-->
<!-- <script defer src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
<script defer src="js/authentication/axios.min.js"></script> -->
<script defer src="js/authentication/script.js" type="module"></script>
</head>
<body id="body-id">
<h1>Pissir SmartHome</h1>
<body>
<!--<h1>Pissir SmartHome</h1>-->
<a href="http://$DOMAIN/realms/$REALM/protocol/openid-connect/auth?
response_type=code&
code_challenge=$MY_CODE_CHALLENGE&
......@@ -40,6 +40,6 @@
scope=openid&
nonce=a81e1a84-8885-4702-b8d1-f6c5a0d1fc4d&
response_mode=fragment&
state=$MY_STATE" id="my-link">I'm the best at logging in :p</a>
state=$MY_STATE" id="my-link" style="visibility: hidden">I'm the best at logging in :p</a>
</body>
</html>
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment