Merge branch 'master' into develop

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>

# Conflicts:
#	front/src/Components/Menu/Menu.svelte
#	front/src/Components/Menu/ProfileSubMenu.svelte
#	front/src/Components/Menu/SettingsSubMenu.svelte
#	front/src/Connexion/ConnectionManager.ts
#	front/src/Stores/MediaStore.ts
#	front/src/Stores/MenuStore.ts
#	front/style/TextGlobalMessageSvelte-Style.scss
#	front/style/style.scss
This commit is contained in:
Gregoire Parant 2021-09-08 18:20:13 +02:00
commit 3a3e5d5f3b
5 changed files with 16 additions and 9 deletions

View file

@ -22,3 +22,5 @@ RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule "^[_@]/" "/index.html" [L] RewriteRule "^[_@]/" "/index.html" [L]
RewriteRule "^register/" "/index.html" [L] RewriteRule "^register/" "/index.html" [L]
RewriteRule "^login" "/index.html" [L]
RewriteRule "^jwt/" "/index.html" [L]

View file

@ -45,7 +45,7 @@ class ConnectionManager {
loginSceneVisibleIframeStore.set(false); loginSceneVisibleIframeStore.set(false);
return null; return null;
} }
const redirectUrl = `${this._currentRoom.iframeAuthentication}?state=${state}&nonce=${nonce}`; const redirectUrl = `${this._currentRoom.iframeAuthentication}?state=${state}&nonce=${nonce}&playUri=${this._currentRoom.key}`;
window.location.assign(redirectUrl); window.location.assign(redirectUrl);
return redirectUrl; return redirectUrl;
} }
@ -76,10 +76,9 @@ class ConnectionManager {
this.connexionType = connexionType; this.connexionType = connexionType;
this._currentRoom = null; this._currentRoom = null;
if (connexionType === GameConnexionTypes.login) { if (connexionType === GameConnexionTypes.login) {
//TODO clear all cash and redirect on login scene (iframe)
localUserStore.setAuthToken(null);
this._currentRoom = await Room.createRoom(new URL(localUserStore.getLastRoomUrl())); this._currentRoom = await Room.createRoom(new URL(localUserStore.getLastRoomUrl()));
urlManager.pushRoomIdToUrl(this._currentRoom); this.loadOpenIDScreen();
return Promise.reject(new Error("You will be redirect on login page"));
} else if (connexionType === GameConnexionTypes.jwt) { } else if (connexionType === GameConnexionTypes.jwt) {
const urlParams = new URLSearchParams(window.location.search); const urlParams = new URLSearchParams(window.location.search);
const code = urlParams.get("code"); const code = urlParams.get("code");
@ -91,13 +90,14 @@ class ConnectionManager {
throw "No Auth code provided"; throw "No Auth code provided";
} }
localUserStore.setCode(code); localUserStore.setCode(code);
this._currentRoom = await Room.createRoom(new URL(localUserStore.getLastRoomUrl()));
try { try {
await this.checkAuthUserConnexion(); await this.checkAuthUserConnexion();
} catch (err) { } catch (err) {
console.error(err); console.error(err);
this.loadOpenIDScreen(); this.loadOpenIDScreen();
return Promise.reject(new Error("You will be redirect on login page"));
} }
this._currentRoom = await Room.createRoom(new URL(localUserStore.getLastRoomUrl()));
urlManager.pushRoomIdToUrl(this._currentRoom); urlManager.pushRoomIdToUrl(this._currentRoom);
} else if (connexionType === GameConnexionTypes.register) { } else if (connexionType === GameConnexionTypes.register) {
//@deprecated //@deprecated

View file

@ -1090,7 +1090,7 @@ div.is-silent {
border-radius: 15px 15px 15px 15px; border-radius: 15px 15px 15px 15px;
max-height: 20%; max-height: 20%;
transition: right 350ms; transition: right 350ms;
right: -20vw; right: -300px;
background-color: black; background-color: black;
font-size: 20px; font-size: 20px;
color: white; color: white;

View file

@ -27,13 +27,17 @@ export class AuthenticateController extends BaseController {
console.warn("/message request was aborted"); console.warn("/message request was aborted");
}); });
const { nonce, state } = parse(req.getQuery()); const { nonce, state, playUri } = parse(req.getQuery());
if (!state || !nonce) { if (!state || !nonce) {
res.writeStatus("400 Unauthorized").end("missing state and nonce URL parameters"); res.writeStatus("400 Unauthorized").end("missing state and nonce URL parameters");
return; return;
} }
try { try {
const loginUri = await openIDClient.authorizationUrl(state as string, nonce as string); const loginUri = await openIDClient.authorizationUrl(
state as string,
nonce as string,
playUri as string | undefined
);
res.writeStatus("302"); res.writeStatus("302");
res.writeHeader("Location", loginUri); res.writeHeader("Location", loginUri);
return res.end(); return res.end();

View file

@ -20,13 +20,14 @@ class OpenIDClient {
return this.issuerPromise; return this.issuerPromise;
} }
public authorizationUrl(state: string, nonce: string) { public authorizationUrl(state: string, nonce: string, playUri?: string) {
return this.initClient().then((client) => { return this.initClient().then((client) => {
return client.authorizationUrl({ return client.authorizationUrl({
scope: "openid email", scope: "openid email",
prompt: "login", prompt: "login",
state: state, state: state,
nonce: nonce, nonce: nonce,
playUri: playUri,
}); });
}); });
} }