mirror of
https://repository.entgra.net/community/device-mgt-core.git
synced 2025-10-06 02:01:45 +00:00
Improve publisher ui to support sso
This commit is contained in:
parent
6ee1d31a0e
commit
44c7affb49
@ -1,4 +1,5 @@
|
|||||||
{
|
{
|
||||||
|
"appName": "publisher",
|
||||||
"theme": {
|
"theme": {
|
||||||
"logo": "https://entgra.io/assets/images/svg/logo.svg",
|
"logo": "https://entgra.io/assets/images/svg/logo.svg",
|
||||||
"primaryColor": "rgb(24, 144, 255)",
|
"primaryColor": "rgb(24, 144, 255)",
|
||||||
@ -14,7 +15,10 @@
|
|||||||
},
|
},
|
||||||
"loginUri": "/publisher-ui-request-handler/login",
|
"loginUri": "/publisher-ui-request-handler/login",
|
||||||
"logoutUri": "/publisher-ui-request-handler/logout",
|
"logoutUri": "/publisher-ui-request-handler/logout",
|
||||||
"platform": "publisher"
|
"ssoLoginUri": "/publisher-ui-request-handler/ssoLogin",
|
||||||
|
"ssoLogoutUri": "/publisher-ui-request-handler/ssoLogout",
|
||||||
|
"platform": "publisher",
|
||||||
|
"appUiConfigUri": "/api/device-mgt-config/v1.0/configurations/ui-config"
|
||||||
},
|
},
|
||||||
"defaultPlatformIcons": {
|
"defaultPlatformIcons": {
|
||||||
"default": {
|
"default": {
|
||||||
|
|||||||
@ -23,6 +23,7 @@ import { BrowserRouter as Router, Redirect, Switch } from 'react-router-dom';
|
|||||||
import axios from 'axios';
|
import axios from 'axios';
|
||||||
import { Layout, Spin, Result } from 'antd';
|
import { Layout, Spin, Result } from 'antd';
|
||||||
import ConfigContext from './components/ConfigContext';
|
import ConfigContext from './components/ConfigContext';
|
||||||
|
import { getUiConfig } from './services/utils/uiConfigHandler';
|
||||||
|
|
||||||
const { Content } = Layout;
|
const { Content } = Layout;
|
||||||
const loadingView = (
|
const loadingView = (
|
||||||
@ -161,12 +162,29 @@ class App extends React.Component {
|
|||||||
const redirectUrl = encodeURI(window.location.href);
|
const redirectUrl = encodeURI(window.location.href);
|
||||||
const pageURL = window.location.pathname;
|
const pageURL = window.location.pathname;
|
||||||
const lastURLSegment = pageURL.substr(pageURL.lastIndexOf('/') + 1);
|
const lastURLSegment = pageURL.substr(pageURL.lastIndexOf('/') + 1);
|
||||||
if (lastURLSegment !== 'login') {
|
getUiConfig(config).then(uiConfig => {
|
||||||
window.location.href =
|
if (uiConfig !== undefined) {
|
||||||
window.location.origin + `/publisher/login?redirect=${redirectUrl}`;
|
if (uiConfig.isSsoEnable) {
|
||||||
} else {
|
window.location =
|
||||||
this.getAndroidEnterpriseToken(config);
|
window.location.origin +
|
||||||
}
|
config.serverConfig.ssoLoginUri +
|
||||||
|
'?redirect=' +
|
||||||
|
window.location.origin +
|
||||||
|
pageURL;
|
||||||
|
} else if (lastURLSegment !== 'login') {
|
||||||
|
window.location.href =
|
||||||
|
window.location.origin +
|
||||||
|
`/${config.appName}/login?redirect=${redirectUrl}`;
|
||||||
|
} else {
|
||||||
|
this.getAndroidEnterpriseToken(config);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
this.setState({
|
||||||
|
loading: false,
|
||||||
|
error: true,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
} else {
|
} else {
|
||||||
this.setState({
|
this.setState({
|
||||||
loading: false,
|
loading: false,
|
||||||
|
|||||||
@ -21,6 +21,7 @@ import { LogoutOutlined } from '@ant-design/icons';
|
|||||||
import { notification, Menu } from 'antd';
|
import { notification, Menu } from 'antd';
|
||||||
import axios from 'axios';
|
import axios from 'axios';
|
||||||
import { withConfigContext } from '../../../../components/ConfigContext';
|
import { withConfigContext } from '../../../../components/ConfigContext';
|
||||||
|
import { getUiConfig } from '../../../../services/utils/uiConfigHandler';
|
||||||
|
|
||||||
/*
|
/*
|
||||||
This class for call the logout api by sending request
|
This class for call the logout api by sending request
|
||||||
@ -44,27 +45,38 @@ class Logout extends React.Component {
|
|||||||
inValid: false,
|
inValid: false,
|
||||||
});
|
});
|
||||||
|
|
||||||
axios
|
let logoutUri;
|
||||||
.post(window.location.origin + config.serverConfig.logoutUri)
|
getUiConfig(config).then(uiConfig => {
|
||||||
.then(res => {
|
if (uiConfig !== undefined) {
|
||||||
// if the api call status is correct then user will logout and then it goes to login page
|
if (uiConfig.isSsoEnable) {
|
||||||
if (res.status === 200) {
|
logoutUri = window.location.origin + config.serverConfig.ssoLogoutUri;
|
||||||
window.location = window.location.origin + '/publisher/login';
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.catch(function(error) {
|
|
||||||
if (error.hasOwnProperty('response') && error.response.status === 400) {
|
|
||||||
thisForm.setState({
|
|
||||||
inValid: true,
|
|
||||||
});
|
|
||||||
} else {
|
} else {
|
||||||
notification.error({
|
logoutUri = window.location.origin + config.serverConfig.logoutUri;
|
||||||
message: 'There was a problem',
|
|
||||||
duration: 0,
|
|
||||||
description: 'Error occurred while trying to logout.',
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
});
|
axios
|
||||||
|
.post(logoutUri)
|
||||||
|
.then(res => {
|
||||||
|
// if the api call status is correct then user
|
||||||
|
// will logout and then it goes to login page
|
||||||
|
if (res.status === 200) {
|
||||||
|
window.location =
|
||||||
|
window.location.origin + `/${config.appName}/login`;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch(function(error) {
|
||||||
|
notification.error({
|
||||||
|
message: 'There was a problem',
|
||||||
|
duration: 0,
|
||||||
|
description: 'Error occurred while trying to logout.',
|
||||||
|
});
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
this.setState({
|
||||||
|
loading: false,
|
||||||
|
error: true,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
|
|||||||
@ -0,0 +1,40 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2020. Entgra (Pvt) Ltd, https://entgra.io
|
||||||
|
* All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Unauthorized copying/redistribution of this file, via any medium
|
||||||
|
* is strictly prohibited.
|
||||||
|
* Proprietary and confidential.
|
||||||
|
*
|
||||||
|
* Licensed under the Entgra Commercial License,
|
||||||
|
* Version 1.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
* https://entgra.io/licenses/entgra-commercial/1.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
import axios from 'axios';
|
||||||
|
import { notification } from 'antd';
|
||||||
|
|
||||||
|
export const getUiConfig = config => {
|
||||||
|
return axios
|
||||||
|
.get(window.location.origin + config.serverConfig.appUiConfigUri)
|
||||||
|
.then(res => {
|
||||||
|
return res.data;
|
||||||
|
})
|
||||||
|
.catch(error => {
|
||||||
|
notification.error({
|
||||||
|
message: 'There was a problem',
|
||||||
|
duration: 0,
|
||||||
|
description: 'Error occurred while trying to load UI configurations.',
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
Loading…
Reference in New Issue
Block a user