diff options
Diffstat (limited to 'sdnr/wt/odlux/framework/src/services')
5 files changed, 22 insertions, 62 deletions
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<AuthPolicy[]>(`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<TData>(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<typeof setTimeout> = null; export const startUserSessionService = (store: ApplicationStore) =>{ applicationStore=store; |