diff --git a/front/src/Components/Login/LoginScene.svelte b/front/src/Components/Login/LoginScene.svelte index edc45ce2..a25fa2ee 100644 --- a/front/src/Components/Login/LoginScene.svelte +++ b/front/src/Components/Login/LoginScene.svelte @@ -64,7 +64,7 @@ {#if logo !== logoImg && gameManager.currentStartedRoom.showPoweredBy !== false} -
+
Powered by WorkAdventure
{/if} @@ -144,6 +144,7 @@ &.powered-by { position: fixed; bottom: 0; + right: 10px; } } } diff --git a/front/src/Components/Menu/MenuIcon.svelte b/front/src/Components/Menu/MenuIcon.svelte index b5d71563..00dd759d 100644 --- a/front/src/Components/Menu/MenuIcon.svelte +++ b/front/src/Components/Menu/MenuIcon.svelte @@ -11,6 +11,9 @@ import { showShareLinkMapModalStore } from "../../Stores/ModalStore"; import LL from "../../i18n/i18n-svelte"; import { analyticsClient } from "../../Administration/AnalyticsClient"; + import { gameManager } from "../../Phaser/Game/GameManager"; + + let miniLogo = gameManager.currentStartedRoom.miniLogo ?? logoWA; function showMenu() { menuVisiblilityStore.set(!get(menuVisiblilityStore)); @@ -57,7 +60,7 @@ /> {:else} {$LL.menu.icon.open.menu()} { diff --git a/front/style/cowebsite/_global.scss b/front/style/cowebsite/_global.scss index 2a6a3f4a..e3bad8be 100644 --- a/front/style/cowebsite/_global.scss +++ b/front/style/cowebsite/_global.scss @@ -5,6 +5,10 @@ background-color: rgba(10, 9, 9, 0.8); display: none; + #cowebsite-slot-main #custom-logo{ + max-width: 30%; + } + main { iframe { width: 100%; diff --git a/messages/JsonMessages/MapDetailsData.ts b/messages/JsonMessages/MapDetailsData.ts index c191ae72..51cb7187 100644 --- a/messages/JsonMessages/MapDetailsData.ts +++ b/messages/JsonMessages/MapDetailsData.ts @@ -39,6 +39,11 @@ export const isMapDetailsData = z.object({ description: 'Whether the "report" feature is enabled or not on this room', example: true, }), + loadingCowebsiteLogo: extendApi(z.optional(z.nullable(z.string())), { + description: "The URL of the image to be used on the cowebsite loading page", + example: "https://example.com/logo.gif", + }), + miniLogo: z.optional(z.nullable(z.string())), // The URL of the logo image on the loading screen loadingLogo: extendApi(z.optional(z.nullable(z.string())), { description: "The URL of the image to be used on the loading page", diff --git a/pusher/src/Controller/AuthenticateController.ts b/pusher/src/Controller/AuthenticateController.ts index 62daef9a..6eee2e5d 100644 --- a/pusher/src/Controller/AuthenticateController.ts +++ b/pusher/src/Controller/AuthenticateController.ts @@ -418,7 +418,7 @@ export class AuthenticateController extends BaseHttpController { profileCallback() { // eslint-disable-next-line @typescript-eslint/no-misused-promises this.app.get("/profile-callback", async (req, res) => { - const { token } = parse(req.path_query); + const { token, playUri } = parse(req.path_query); try { //verify connected by token if (token != undefined) { @@ -431,7 +431,10 @@ export class AuthenticateController extends BaseHttpController { //get login profile res.status(302); - res.setHeader("Location", adminService.getProfileUrl(authTokenData.accessToken)); + res.setHeader( + "Location", + adminService.getProfileUrl(authTokenData.accessToken, playUri as string) + ); res.send(""); return; } catch (error) { @@ -497,7 +500,7 @@ export class AuthenticateController extends BaseHttpController { * @param email * @param playUri * @param IPAddress - * @return + * @return |object * @private */ diff --git a/pusher/src/Services/AdminApi.ts b/pusher/src/Services/AdminApi.ts index cdd2e35b..6fbf0a8f 100644 --- a/pusher/src/Services/AdminApi.ts +++ b/pusher/src/Services/AdminApi.ts @@ -457,11 +457,15 @@ class AdminApi implements AdminInterface { }); } - getProfileUrl(accessToken: string): string { + getProfileUrl(accessToken: string, playUri: string): string { if (!OPID_PROFILE_SCREEN_PROVIDER) { throw new Error("No admin backoffice set!"); } - return `${OPID_PROFILE_SCREEN_PROVIDER}?accessToken=${accessToken}`; + return `${OPID_PROFILE_SCREEN_PROVIDER}?accessToken=${accessToken}&playUri=${playUri}`; + } + + async logoutOauth(token: string): Promise { + await Axios.get(ADMIN_API_URL + `/oauth/logout?token=${token}`); } } diff --git a/pusher/src/Services/AdminInterface.ts b/pusher/src/Services/AdminInterface.ts index afdf4a9e..7ec8806c 100644 --- a/pusher/src/Services/AdminInterface.ts +++ b/pusher/src/Services/AdminInterface.ts @@ -71,7 +71,13 @@ export interface AdminInterface { /** * @param accessToken + * @param playUri * @return string */ - getProfileUrl(accessToken: string): string; + getProfileUrl(accessToken: string, playUri: string): string; + + /** + * @param token + */ + logoutOauth(token: string): Promise; } diff --git a/pusher/src/Services/LocalAdmin.ts b/pusher/src/Services/LocalAdmin.ts index d16f4c30..4b58b359 100644 --- a/pusher/src/Services/LocalAdmin.ts +++ b/pusher/src/Services/LocalAdmin.ts @@ -47,9 +47,11 @@ class LocalAdmin implements AdminInterface { contactPage: null, group: null, iframeAuthentication: null, + miniLogo: null, loadingLogo: null, loginSceneLogo: null, showPoweredBy: true, + loadingCowebsiteLogo: null, }); } @@ -84,10 +86,14 @@ class LocalAdmin implements AdminInterface { return Promise.reject(new Error("No admin backoffice set!")); } - getProfileUrl(accessToken: string): string { + getProfileUrl(accessToken: string, playUri: string): string { new Error("No admin backoffice set!"); return ""; } + + async logoutOauth(token: string): Promise { + return Promise.reject(new Error("No admin backoffice set!")); + } } export const localAdmin = new LocalAdmin();