diff options
author | Aijana Schumann <aijana.schumann@highstreet-technologies.com> | 2021-02-15 18:22:28 +0100 |
---|---|---|
committer | Aijana Schumann <aijana.schumann@highstreet-technologies.com> | 2021-02-15 18:23:57 +0100 |
commit | 8515052e1a6de2de56effbc61c73d3aa80169a93 (patch) | |
tree | 8707b2b587890522b35cd7dd1b54ce4f006f1c3a /sdnr/wt/odlux/framework/src/services | |
parent | db20d36689c011333ed7216b64d3e987e473f1ee (diff) |
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 <aijana.schumann@highstreet-technologies.com>
Change-Id: Id5772e0026fa7ebda22c41c2620a7868598f41aa
Diffstat (limited to 'sdnr/wt/odlux/framework/src/services')
-rw-r--r-- | sdnr/wt/odlux/framework/src/services/authenticationService.ts | 32 | ||||
-rw-r--r-- | sdnr/wt/odlux/framework/src/services/forceLogoutService.ts | 4 |
2 files changed, 25 insertions, 11 deletions
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<ExternalLoginProvider[]>(`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<AuthToken | null> { - const result = await requestRest<string>(`oauth2/token`, { + const result = await requestRest<AuthTokenResponse>(`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<AuthPolicy[]>(`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")); } } |