mirror of
https://github.com/Telecominfraproject/wlan-cloud-ui.git
synced 2025-11-01 11:17:59 +00:00
set up Authentication
This commit is contained in:
@@ -5,6 +5,9 @@
|
|||||||
Install Dependencies
|
Install Dependencies
|
||||||
`npm install`
|
`npm install`
|
||||||
|
|
||||||
|
To link cu-ui package locally for development:
|
||||||
|
`npm link ../cu-ui`
|
||||||
|
|
||||||
## Run:
|
## Run:
|
||||||
### Development
|
### Development
|
||||||
`npm start`
|
`npm start`
|
||||||
|
|||||||
1
app/constants/index.js
Normal file
1
app/constants/index.js
Normal file
@@ -0,0 +1 @@
|
|||||||
|
export const AUTH_TOKEN = 'tip-auth-token';
|
||||||
32
app/containers/App/components/ProtectedRouteWithLayout.js
Normal file
32
app/containers/App/components/ProtectedRouteWithLayout.js
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
import React from 'react';
|
||||||
|
import T from 'prop-types';
|
||||||
|
import { Route, Redirect } from 'react-router-dom';
|
||||||
|
|
||||||
|
import MasterLayout from 'containers/MasterLayout';
|
||||||
|
import { getItem } from 'utils/localStorage';
|
||||||
|
import { AUTH_TOKEN } from 'constants/index';
|
||||||
|
|
||||||
|
const ProtectedRouteWithLayout = ({ component: Component, ...rest }) => (
|
||||||
|
<Route
|
||||||
|
{...rest}
|
||||||
|
render={props =>
|
||||||
|
getItem(AUTH_TOKEN) ? (
|
||||||
|
<MasterLayout>
|
||||||
|
<Component {...props} />
|
||||||
|
</MasterLayout>
|
||||||
|
) : (
|
||||||
|
<Redirect
|
||||||
|
to={{
|
||||||
|
pathname: '/login',
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
|
||||||
|
ProtectedRouteWithLayout.propTypes = {
|
||||||
|
component: T.func.isRequired,
|
||||||
|
};
|
||||||
|
|
||||||
|
export default ProtectedRouteWithLayout;
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
import React from 'react';
|
|
||||||
import T from 'prop-types';
|
|
||||||
import { Route } from 'react-router-dom';
|
|
||||||
|
|
||||||
import MasterLayout from 'containers/MasterLayout';
|
|
||||||
|
|
||||||
const RouteWithLayout = ({ component: Component, ...rest }) => (
|
|
||||||
<Route
|
|
||||||
{...rest}
|
|
||||||
render={props => (
|
|
||||||
<MasterLayout>
|
|
||||||
<Component {...props} />
|
|
||||||
</MasterLayout>
|
|
||||||
)}
|
|
||||||
/>
|
|
||||||
);
|
|
||||||
|
|
||||||
RouteWithLayout.propTypes = {
|
|
||||||
component: T.func.isRequired,
|
|
||||||
};
|
|
||||||
|
|
||||||
export default RouteWithLayout;
|
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { Helmet } from 'react-helmet';
|
import { Helmet } from 'react-helmet';
|
||||||
import { Switch } from 'react-router-dom';
|
import { Switch, Route } from 'react-router-dom';
|
||||||
|
|
||||||
import { Dashboard } from 'cu-ui';
|
import { Login, Dashboard } from 'cu-ui';
|
||||||
|
|
||||||
import RouteWithLayout from './components/RouteWithLayout';
|
import ProtectedRouteWithLayout from './components/ProtectedRouteWithLayout';
|
||||||
|
|
||||||
const App = () => (
|
const App = () => (
|
||||||
<>
|
<>
|
||||||
@@ -13,7 +13,8 @@ const App = () => (
|
|||||||
</Helmet>
|
</Helmet>
|
||||||
|
|
||||||
<Switch>
|
<Switch>
|
||||||
<RouteWithLayout exact path="/" component={Dashboard} />
|
<Route exact path="/login" component={Login} />
|
||||||
|
<ProtectedRouteWithLayout exact path="/" component={Dashboard} />
|
||||||
</Switch>
|
</Switch>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
|
|||||||
11
app/index.js
11
app/index.js
@@ -8,11 +8,20 @@ import 'styles/antd.less';
|
|||||||
import 'styles/index.scss';
|
import 'styles/index.scss';
|
||||||
|
|
||||||
import App from 'containers/App';
|
import App from 'containers/App';
|
||||||
|
import { AUTH_TOKEN } from 'constants/index';
|
||||||
|
|
||||||
const MOUNT_NODE = document.getElementById('root');
|
const MOUNT_NODE = document.getElementById('root');
|
||||||
|
|
||||||
const client = new ApolloClient({
|
const client = new ApolloClient({
|
||||||
// uri: "https://48p1r2roz4.sse.codesandbox.io"
|
// uri: ""
|
||||||
|
request: operation => {
|
||||||
|
const token = localStorage.getItem(AUTH_TOKEN);
|
||||||
|
operation.setContext({
|
||||||
|
headers: {
|
||||||
|
authorization: token ? `Bearer ${token}` : '',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
const render = () => {
|
const render = () => {
|
||||||
|
|||||||
3
package-lock.json
generated
3
package-lock.json
generated
@@ -3330,9 +3330,6 @@
|
|||||||
"integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
|
"integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"cu-ui": {
|
|
||||||
"version": "git+https://sean_macfarlane@bitbucket.org/connectustechnologies/connectus-wlan-ui-workspace.git#1956b5f3f702a67e8f503a47fe5a14af0ef2a202"
|
|
||||||
},
|
|
||||||
"currently-unhandled": {
|
"currently-unhandled": {
|
||||||
"version": "0.4.1",
|
"version": "0.4.1",
|
||||||
"resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
|
"resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ module.exports = {
|
|||||||
devtool: 'inline-source-map',
|
devtool: 'inline-source-map',
|
||||||
devServer: {
|
devServer: {
|
||||||
port: 3000,
|
port: 3000,
|
||||||
|
historyApiFallback: true,
|
||||||
},
|
},
|
||||||
module: {
|
module: {
|
||||||
rules: [
|
rules: [
|
||||||
|
|||||||
Reference in New Issue
Block a user