aboutsummaryrefslogtreecommitdiffstats
path: root/sdnr/wt/odlux/framework/src/services
diff options
context:
space:
mode:
authorAijana Schumann <aijana.schumann@highstreet-technologies.com>2021-02-15 18:22:28 +0100
committerAijana Schumann <aijana.schumann@highstreet-technologies.com>2021-02-15 18:23:57 +0100
commit8515052e1a6de2de56effbc61c73d3aa80169a93 (patch)
tree8707b2b587890522b35cd7dd1b54ce4f006f1c3a /sdnr/wt/odlux/framework/src/services
parentdb20d36689c011333ed7216b64d3e987e473f1ee (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.ts32
-rw-r--r--sdnr/wt/odlux/framework/src/services/forceLogoutService.ts4
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"));
}
}