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",
diff --git a/features/application-mgt/org.wso2.carbon.device.application.mgt.server.feature/src/main/resources/conf/application-mgt.xml b/features/application-mgt/org.wso2.carbon.device.application.mgt.server.feature/src/main/resources/conf/application-mgt.xml
index 140468aa06..6a6cfead86 100644
--- a/features/application-mgt/org.wso2.carbon.device.application.mgt.server.feature/src/main/resources/conf/application-mgt.xml
+++ b/features/application-mgt/org.wso2.carbon.device.application.mgt.server.feature/src/main/resources/conf/application-mgt.xml
@@ -162,6 +162,100 @@
perm:android-work:customer
perm:android-work:admin
perm:application-command:modify
+ perm:sign-csr
+ perm:admin:devices:view
+ perm:admin:topics:view
+ perm:roles:add
+ perm:roles:add-users
+ perm:roles:update
+ perm:roles:permissions
+ perm:roles:details
+ perm:roles:view
+ perm:roles:create-combined-role
+ perm:roles:delete
+ perm:dashboard:vulnerabilities
+ perm:dashboard:non-compliant-count
+ perm:dashboard:non-compliant
+ perm:dashboard:by-groups
+ perm:dashboard:device-counts
+ perm:dashboard:feature-non-compliant
+ perm:dashboard:count-overview
+ perm:dashboard:filtered-count
+ perm:dashboard:details
+ perm:get-activity
+ perm:devices:delete
+ perm:devices:applications
+ perm:devices:effective-policy
+ perm:devices:compliance-data
+ perm:devices:features
+ perm:devices:operations
+ perm:devices:search
+ perm:devices:details
+ perm:devices:update
+ perm:devices:view
+ perm:view-configuration
+ perm:manage-configuration
+ perm:policies:remove
+ perm:policies:priorities
+ perm:policies:deactivate
+ perm:policies:get-policy-details
+ perm:policies:manage
+ perm:policies:activate
+ perm:policies:update
+ perm:policies:changes
+ perm:policies:get-details
+ perm:users:add
+ perm:users:details
+ perm:users:count
+ perm:users:delete
+ perm:users:roles
+ perm:users:user-details
+ perm:users:credentials
+ perm:users:search
+ perm:users:is-exist
+ perm:users:update
+ perm:users:send-invitation
+ perm:admin-users:view
+ perm:admin:devices:update-enrollment
+ perm:groups:devices
+ perm:groups:update
+ perm:groups:add
+ perm:groups:device
+ perm:groups:devices-count
+ perm:groups:remove
+ perm:groups:groups
+ perm:groups:groups-view
+ perm:groups:share
+ perm:groups:count
+ perm:groups:roles
+ perm:groups:devices-remove
+ perm:groups:devices-add
+ perm:groups:assign
+ perm:device-types:configs
+ perm:device-types:features
+ perm:device-types:types
+ perm:applications:install
+ perm:applications:uninstall
+ perm:admin-groups:count
+ perm:admin-groups:view
+ perm:notifications:mark-checked
+ perm:notifications:view
+ perm:admin:certificates:delete
+ perm:admin:certificates:details
+ perm:admin:certificates:view
+ perm:admin:certificates:add
+ perm:admin:certificates:verify
+ perm:admin
+ perm:devicetype:deployment
+ perm:device-types:events
+ perm:device-types:events:view
+ perm:admin:device-type
+ perm:admin:device-type:view
+ perm:admin:device-type:configs
+ perm:device:enroll
+ perm:geo-service:analytics-view
+ perm:geo-service:alerts-manage
+ appm:rea
app-mgt