From a2b6dd34d73bf432846dc59c6f57dd59a03aff9b Mon Sep 17 00:00:00 2001 From: Michael Dürre Date: Thu, 8 Sep 2022 09:45:06 +0200 Subject: update odlux sources MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit update basic odlux functionality for kohn Issue-ID: CCSDK-3765 Signed-off-by: Michael Dürre Change-Id: I3723c9c2f35b9012ba537920b294a54bb556cbc6 Signed-off-by: Michael Dürre --- .../src/services/authenticationService.ts | 8 ++- .../framework/src/services/broadcastService.ts | 2 +- .../framework/src/services/forceLogoutService.ts | 57 ---------------------- .../wt/odlux/framework/src/services/restService.ts | 15 +++++- .../framework/src/services/userSessionService.ts | 2 +- 5 files changed, 22 insertions(+), 62 deletions(-) delete mode 100644 sdnr/wt/odlux/framework/src/services/forceLogoutService.ts (limited to 'sdnr/wt/odlux/framework/src/services') diff --git a/sdnr/wt/odlux/framework/src/services/authenticationService.ts b/sdnr/wt/odlux/framework/src/services/authenticationService.ts index a7691bf6f..39f407e40 100644 --- a/sdnr/wt/odlux/framework/src/services/authenticationService.ts +++ b/sdnr/wt/odlux/framework/src/services/authenticationService.ts @@ -18,7 +18,7 @@ import { AuthPolicy, AuthToken } from "../models/authentication"; import { ExternalLoginProvider } from "../models/externalLoginProvider"; -import { requestRest, formEncode } from "./restService"; +import { requestRest, formEncode, requestRestExt } from "./restService"; type AuthTokenResponse = { access_token: string; @@ -85,6 +85,12 @@ class AuthenticationService { public async getAccessPolicies(){ return await requestRest(`oauth/policies`, { method: "GET" }, true); } + + public async getServerReadyState(){ + + const result = await fetch("/ready", {method: "GET"}); + return result.status == (200 || 304) ? true : false; + } } export const authenticationService = new AuthenticationService(); diff --git a/sdnr/wt/odlux/framework/src/services/broadcastService.ts b/sdnr/wt/odlux/framework/src/services/broadcastService.ts index 85ae3e65c..f2c3ebc57 100644 --- a/sdnr/wt/odlux/framework/src/services/broadcastService.ts +++ b/sdnr/wt/odlux/framework/src/services/broadcastService.ts @@ -33,7 +33,7 @@ export type SettingsMessage={key: SettingsType, enableNotifications: boolean, us let channels: Broadcaster[] = []; let store : ApplicationStore | null = null; -export const subscribe = (channel: BroadcastChannel, channelName: string) => { +export const saveChannel = (channel: BroadcastChannel, channelName: string) => { channels.push({channel: channel, key: channelName}); } diff --git a/sdnr/wt/odlux/framework/src/services/forceLogoutService.ts b/sdnr/wt/odlux/framework/src/services/forceLogoutService.ts deleted file mode 100644 index a57739025..000000000 --- a/sdnr/wt/odlux/framework/src/services/forceLogoutService.ts +++ /dev/null @@ -1,57 +0,0 @@ -/** - * ============LICENSE_START======================================================================== - * ONAP : ccsdk feature sdnr wt odlux - * ================================================================================================= - * Copyright (C) 2019 highstreet technologies GmbH Intellectual Property. All rights reserved. - * ================================================================================================= - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except - * in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. - * ============LICENSE_END========================================================================== - */ - -import { ApplicationStore } from "../store/applicationStore"; -import { UpdateUser } from "../actions/authentication"; -import { ReplaceAction } from "../actions/navigationActions"; - -const maxMinutesTillLogout = 15; -let applicationStore: ApplicationStore | null; -let tickTimer = 15; - - -export const startForceLogoutService = (store: ApplicationStore) => { - applicationStore = store; - if (process.env.NODE_ENV === "development") { - console.warn("logout timer not started in development mode"); - } else { - createForceLogoutInterval(); - } - -}; - -const createForceLogoutInterval = () => { - console.log("logout timer running..."); - - return setInterval(function () { - if (applicationStore && applicationStore.state.framework.authenticationState.user) { - tickTimer--; - - if (tickTimer === 0) { - console.log("got logged out by timer") - if (applicationStore) { - applicationStore.dispatch(new UpdateUser(undefined)); - applicationStore.dispatch(new ReplaceAction("/login")); - } - } - } - - }, 1 * 60000) -} - -document.addEventListener("mousemove", function () { tickTimer = maxMinutesTillLogout; }, false) \ No newline at end of file diff --git a/sdnr/wt/odlux/framework/src/services/restService.ts b/sdnr/wt/odlux/framework/src/services/restService.ts index b21e3ec75..d727e4c9e 100644 --- a/sdnr/wt/odlux/framework/src/services/restService.ts +++ b/sdnr/wt/odlux/framework/src/services/restService.ts @@ -19,6 +19,7 @@ import { ApplicationStore } from "../store/applicationStore"; import { ReplaceAction } from "../actions/navigationActions"; +import { AddErrorInfoAction } from "../actions/errorActions"; const baseUri = `${ window.location.origin }`; const absUrlPattern = /^https?:\/\//; @@ -118,12 +119,22 @@ export async function requestRestExt(path: string = '', init: RequestInit //'Authorization': 'Basic YWRtaW46YWRtaW4=' }); } + const fetchResult = await fetch(uri, init); - if (fetchResult.status === 401 || fetchResult.status === 403) { - applicationStore && applicationStore.dispatch(new ReplaceAction(`/login?returnTo=${applicationStore.state.framework.navigationState.pathname}`)); + + if(fetchResult.status === 403){ + applicationStore && applicationStore.dispatch(new AddErrorInfoAction({title: "Forbidden", message:"Status: [403], access denied."})); return { ...result, status: 403, + message: "Forbidden." + }; + } + else if (fetchResult.status === 401) { + applicationStore && applicationStore.dispatch(new ReplaceAction(`/login?returnTo=${applicationStore.state.framework.navigationState.pathname}`)); + return { + ...result, + status: 401, message: "Authentication requested by server." }; } diff --git a/sdnr/wt/odlux/framework/src/services/userSessionService.ts b/sdnr/wt/odlux/framework/src/services/userSessionService.ts index 0d5936a7e..8d899c4d6 100644 --- a/sdnr/wt/odlux/framework/src/services/userSessionService.ts +++ b/sdnr/wt/odlux/framework/src/services/userSessionService.ts @@ -24,7 +24,7 @@ import { User } from "../models/authentication"; let currentUser: User | null; let applicationStore: ApplicationStore | null = null; -let timer : NodeJS.Timeout | null = null; +let timer : null | ReturnType = null; export const startUserSessionService = (store: ApplicationStore) =>{ applicationStore=store; -- cgit 1.2.3-korg