From 8b4c2f0e79c24d73d184b0f0827b7b92fda0a8c3 Mon Sep 17 00:00:00 2001 From: Jayasanka Date: Mon, 7 Oct 2019 18:05:56 +0530 Subject: [PATCH] Redirect logged-out user within the loading screen in APPM UI --- .../react-app/src/App.js | 31 +++++++++++++--- .../components/new-release/AddReleaseForm.js | 7 ++-- .../react-app/src/App.js | 36 ++++++++++++++++--- .../react-app/src/js/Utils.js | 3 +- 4 files changed, 64 insertions(+), 13 deletions(-) diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/react-app/src/App.js b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/react-app/src/App.js index 484fe6be6c..801f875404 100644 --- a/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/react-app/src/App.js +++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/react-app/src/App.js @@ -24,7 +24,7 @@ import { Redirect, Switch, } from 'react-router-dom'; import axios from "axios"; -import {Layout, Spin, Result} from "antd"; +import {Layout, Spin, Result, notification} from "antd"; import ConfigContext from "./context/ConfigContext"; const {Content} = Layout; @@ -68,9 +68,7 @@ class App extends React.Component { window.location.origin + "/publisher/public/conf/config.json", ).then(res => { const config = res.data; - - this.getAndroidEnterpriseToken(config); - + this.checkUserLoggedIn(config); }).catch((error) => { this.setState({ loading: false, @@ -99,6 +97,31 @@ class App extends React.Component { }); }; + checkUserLoggedIn = (config) => { + axios.get( + window.location.origin + config.serverConfig.invoker.uri + + config.serverConfig.invoker.publisher + "/applications/categories" + ).then(res => { + this.getAndroidEnterpriseToken(config); + }).catch((error) => { + if (error.hasOwnProperty("response") && error.response.status === 401) { + const redirectUrl = encodeURI(window.location.href); + const pageURL = window.location.pathname; + const lastURLSegment = pageURL.substr(pageURL.lastIndexOf('/') + 1); + if(lastURLSegment!=="login"){ + window.location.href = window.location.origin + `/publisher/login?redirect=${redirectUrl}`; + }else{ + this.getAndroidEnterpriseToken(config); + } + } else { + this.setState({ + loading: false, + error: true + }) + } + }); + }; + render() { const {loading, error} = this.state; diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/react-app/src/components/new-release/AddReleaseForm.js b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/react-app/src/components/new-release/AddReleaseForm.js index c3c7abbb1f..200cf9e741 100644 --- a/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/react-app/src/components/new-release/AddReleaseForm.js +++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/react-app/src/components/new-release/AddReleaseForm.js @@ -106,8 +106,6 @@ class AddNewReleaseFormComponent extends React.Component { loading: true }); const {price, isSharedWithAllTenants, icon, screenshots, releaseDescription, releaseType, binaryFile} = values; - - const data = new FormData(); //add release data @@ -115,7 +113,7 @@ class AddNewReleaseFormComponent extends React.Component { description: releaseDescription, price: (price === undefined) ? 0 : parseInt(price), isSharedWithAllTenants, - metaData: "string", + metaData: "[]", releaseType: releaseType, supportedOsVersions: `${this.lowerOsVersion}-${this.upperOsVersion}` }; @@ -132,7 +130,8 @@ class AddNewReleaseFormComponent extends React.Component { data.append("applicationRelease", blob); - const url = window.location.origin + config.serverConfig.invoker.uri + config.serverConfig.invoker.publisher + "/applications/" + deviceType + "/ent-app/" + appId; + const url = window.location.origin + config.serverConfig.invoker.uri + + config.serverConfig.invoker.publisher + "/applications/" + deviceType + "/ent-app/" + appId; axios.post( url, diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.store.ui/react-app/src/App.js b/components/application-mgt/org.wso2.carbon.device.application.mgt.store.ui/react-app/src/App.js index 5d8747417f..4fc452939e 100644 --- a/components/application-mgt/org.wso2.carbon.device.application.mgt.store.ui/react-app/src/App.js +++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.store.ui/react-app/src/App.js @@ -67,16 +67,44 @@ class App extends React.Component { axios.get( window.location.origin + "/store/public/conf/config.json", ).then(res => { - console.log(res); + const config = res.data; + this.checkUserLoggedIn(config); + }).catch((error) => { this.setState({ loading: false, - config: res.data + error: true }) - }).catch((error) => { + }); + } + + checkUserLoggedIn = (config) => { + axios.get( + window.location.origin + config.serverConfig.invoker.uri + + config.serverConfig.invoker.publisher + "/applications/categories" + ).then(res => { this.setState({ loading: false, - error: true + config: config }) + }).catch((error) => { + if (error.hasOwnProperty("response") && error.response.status === 401) { + const redirectUrl = encodeURI(window.location.href); + const pageURL = window.location.pathname; + const lastURLSegment = pageURL.substr(pageURL.lastIndexOf('/') + 1); + if(lastURLSegment!=="login"){ + window.location.href = window.location.origin + `/store/login?redirect=${redirectUrl}`; + }else{ + this.setState({ + loading: false, + config: config + }) + } + } else { + this.setState({ + loading: false, + error: true + }) + } }); } diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.store.ui/react-app/src/js/Utils.js b/components/application-mgt/org.wso2.carbon.device.application.mgt.store.ui/react-app/src/js/Utils.js index 9bb8c4a521..d99d02dde9 100644 --- a/components/application-mgt/org.wso2.carbon.device.application.mgt.store.ui/react-app/src/js/Utils.js +++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.store.ui/react-app/src/js/Utils.js @@ -21,7 +21,8 @@ import {notification} from "antd"; export const handleApiError = (error, message) => { console.log(error); if (error.hasOwnProperty("response") && error.response.status === 401) { - window.location.href = window.location.origin + '/store/login'; + const redirectUrl = encodeURI(window.location.href); + window.location.href = window.location.origin + `/store/login?redirect=${redirectUrl}`; } else { notification["error"]({ message: "There was a problem",