From 8515052e1a6de2de56effbc61c73d3aa80169a93 Mon Sep 17 00:00:00 2001 From: Aijana Schumann Date: Mon, 15 Feb 2021 18:22:28 +0100 Subject: Add OAuth support to odlux Extend odlux to support oauth, support external login provider for sign-in Issue-ID: CCSDK-3167 Signed-off-by: Aijana Schumann Change-Id: Id5772e0026fa7ebda22c41c2620a7868598f41aa --- .../src/services/authenticationService.ts | 32 ++++++++++++++++------ .../framework/src/services/forceLogoutService.ts | 4 +-- 2 files changed, 25 insertions(+), 11 deletions(-) (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 9b006fc16..4e7d109d9 100644 --- a/sdnr/wt/odlux/framework/src/services/authenticationService.ts +++ b/sdnr/wt/odlux/framework/src/services/authenticationService.ts @@ -15,19 +15,30 @@ * the License. * ============LICENSE_END========================================================================== */ +import { AuthPolicy, AuthToken } from "../models/authentication"; +import { ExternalLoginProvider } from "../models/externalLoginProvider"; + import { requestRest, formEncode } from "./restService"; -import { AuthToken } from "../models/authentication"; type AuthTokenResponse = { access_token: string; token_type: string; - expires_in: number; + expires_at: number; } - class AuthenticationService { + public async getAvaliableExteralProvider() { + const result = await requestRest(`oauth/providers`, { + method: "GET", + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + }, false); + return result; + } + public async authenticateUserOAuth(email: string, password: string, scope: string): Promise { - const result = await requestRest(`oauth2/token`, { + const result = await requestRest(`oauth/login`, { method: "POST", headers: { 'Content-Type': 'application/x-www-form-urlencoded' @@ -39,12 +50,11 @@ class AuthenticationService { scope: scope }) }, false); - const resultObj: AuthTokenResponse| null = result && JSON.parse(result); - return resultObj && { + return result && { username: email, - access_token: resultObj.access_token, - token_type: resultObj.token_type, - expires: (new Date().valueOf()) + (resultObj.expires_in * 1000) + access_token: result.access_token, + token_type: result.token_type, + expires: (result.expires_at * 1000) } || null; } @@ -65,6 +75,10 @@ class AuthenticationService { } return null; } + + public async getAccessPolicies(){ + return await requestRest(`oauth/policies`, { method: "GET" }, true); + } } export const authenticationService = new AuthenticationService(); diff --git a/sdnr/wt/odlux/framework/src/services/forceLogoutService.ts b/sdnr/wt/odlux/framework/src/services/forceLogoutService.ts index 0c7c38dff..a57739025 100644 --- a/sdnr/wt/odlux/framework/src/services/forceLogoutService.ts +++ b/sdnr/wt/odlux/framework/src/services/forceLogoutService.ts @@ -17,7 +17,7 @@ */ import { ApplicationStore } from "../store/applicationStore"; -import { UpdateAuthentication } from "../actions/authentication"; +import { UpdateUser } from "../actions/authentication"; import { ReplaceAction } from "../actions/navigationActions"; const maxMinutesTillLogout = 15; @@ -45,7 +45,7 @@ const createForceLogoutInterval = () => { if (tickTimer === 0) { console.log("got logged out by timer") if (applicationStore) { - applicationStore.dispatch(new UpdateAuthentication(null)); + applicationStore.dispatch(new UpdateUser(undefined)); applicationStore.dispatch(new ReplaceAction("/login")); } } -- cgit 1.2.3-korg