blob: 35c16d3808f960ee08c3d0031d591226d3ffc44e [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* 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.
*/
import React, { Fragment } from "react";
import { Link, Redirect, Switch, Route } from "dva/router";
import DocumentTitle from "react-document-title";
import { connect } from "dva";
import { Icon, message } from "antd";
import GlobalFooter from "../components/GlobalFooter";
import styles from "./UserLayout.less";
import TitleLogo from "../assets/TitleLogo.svg";
import { getRoutes, getPageQuery, getQueryPath } from "../utils/utils";
message.config({
top: 200,
duration: 2,
maxCount: 3
});
const links = [];
const copyright = (
<Fragment>
Copyright <Icon type="copyright" /> {new Date().getFullYear()} The Apache Software Foundation, Licensed under the Apache License, Version 2.0. Apache ShenYu, Apache, the Apache feather logo, the Apache ShenYu logo are trademarks of The Apache Software Foundation.
</Fragment>
);
function getLoginPathWithRedirectPath() {
const params = getPageQuery();
const { redirect } = params;
return getQueryPath("/user/login", {
redirect
});
}
class UserLayout extends React.PureComponent {
getPageTitle() {
const { routerData, location } = this.props;
const { pathname } = location;
let title = "Login";
if (routerData[pathname] && routerData[pathname].name) {
title = `${routerData[pathname].name} - bbex`;
}
return title;
}
render() {
const { routerData, match } = this.props;
return (
<DocumentTitle title={this.getPageTitle()}>
<div className={styles.container}>
<div className={styles.content}>
<div className={styles.top}>
<div className={styles.header}>
<Link to="/">
<img alt="logo" className={styles.logo} src={TitleLogo} />
</Link>
</div>
<div className={styles.desc}>
Apache ShenYu Gateway Management System
</div>
</div>
<Switch>
{getRoutes(match.path, routerData).map(item => (
<Route
key={item.key}
path={item.path}
component={item.component}
exact={item.exact}
/>
))}
<Redirect from="/user" to={getLoginPathWithRedirectPath()} />
</Switch>
</div>
<GlobalFooter links={links} copyright={copyright} />
</div>
</DocumentTitle>
);
}
}
export default connect(({ global = {} }) => ({
collapsed: global.collapsed
}))(UserLayout);