From 8988233da897e8447a1dbdb700836fb8576e5e6b Mon Sep 17 00:00:00 2001 From: Indrajith K L Date: Wed, 11 Dec 2019 18:54:05 +0530 Subject: :tada: Initial Commit --- src/App.css | 38 -------------------------- src/App.js | 16 +---------- src/config.js | 3 ++ src/core/app.routes.js | 15 ++++++++++ src/core/custom.router.js | 27 ++++++++++++++++++ src/core/routes.js | 35 ++++++++++++++++++++++++ src/core/store.js | 31 +++++++++++++++++++++ src/index.css | 5 ---- src/index.js | 32 +++++++++++++++++++--- src/logo.svg | 7 ----- src/middlewares/root.middleware.js | 7 +++++ src/modules/admin/admin.container.js | 12 ++++++++ src/modules/dashboard/dashboard.container.js | 12 ++++++++ src/modules/login/login.container.js | 12 ++++++++ src/modules/superadmin/superadmin.container.js | 12 ++++++++ src/reducers/root.reducer.js | 9 ++++++ src/services/http.service.js | 0 src/services/storage.service.js | 16 +++++++++++ src/shared/header.hoc.js | 0 19 files changed, 220 insertions(+), 69 deletions(-) create mode 100644 src/config.js create mode 100644 src/core/app.routes.js create mode 100644 src/core/custom.router.js create mode 100644 src/core/routes.js create mode 100644 src/core/store.js delete mode 100644 src/logo.svg create mode 100644 src/middlewares/root.middleware.js create mode 100644 src/modules/admin/admin.container.js create mode 100644 src/modules/dashboard/dashboard.container.js create mode 100644 src/modules/login/login.container.js create mode 100644 src/modules/superadmin/superadmin.container.js create mode 100644 src/reducers/root.reducer.js create mode 100644 src/services/http.service.js create mode 100644 src/services/storage.service.js create mode 100644 src/shared/header.hoc.js (limited to 'src') diff --git a/src/App.css b/src/App.css index 74b5e05..e69de29 100644 --- a/src/App.css +++ b/src/App.css @@ -1,38 +0,0 @@ -.App { - text-align: center; -} - -.App-logo { - height: 40vmin; - pointer-events: none; -} - -@media (prefers-reduced-motion: no-preference) { - .App-logo { - animation: App-logo-spin infinite 20s linear; - } -} - -.App-header { - background-color: #282c34; - min-height: 100vh; - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - font-size: calc(10px + 2vmin); - color: white; -} - -.App-link { - color: #61dafb; -} - -@keyframes App-logo-spin { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } -} diff --git a/src/App.js b/src/App.js index ce9cbd2..5c5ec79 100644 --- a/src/App.js +++ b/src/App.js @@ -1,24 +1,10 @@ import React from 'react'; -import logo from './logo.svg'; import './App.css'; function App() { return (
-
- logo -

- Edit src/App.js and save to reload. -

- - Learn React - -
+
); } diff --git a/src/config.js b/src/config.js new file mode 100644 index 0000000..1281554 --- /dev/null +++ b/src/config.js @@ -0,0 +1,3 @@ +export const Config = { + baseUrl: "http://localhost:5555" +} \ No newline at end of file diff --git a/src/core/app.routes.js b/src/core/app.routes.js new file mode 100644 index 0000000..5d06e63 --- /dev/null +++ b/src/core/app.routes.js @@ -0,0 +1,15 @@ +import AdminContainer from "../modules/admin/admin.container"; +import SuperAdminContainer from "../modules/superadmin/superadmin.container"; + +export const AppRoutes = [ + { + path: '/admin', + component: AdminContainer, + permission: ['admin','superadmin'] + }, + { + path: '/superadmin', + component: SuperAdminContainer, + permission: ['admin', 'superadmin', 'user'] + } +]; diff --git a/src/core/custom.router.js b/src/core/custom.router.js new file mode 100644 index 0000000..b3f08ec --- /dev/null +++ b/src/core/custom.router.js @@ -0,0 +1,27 @@ +import React from "react"; +import { Route, Redirect } from "react-router-dom"; +import Storage from "../services/storage.service"; + +export const CustomRouter = ({ xComponent: Component, ...xProps }) => { + return ( + { + console.log(props.permissions) + let token = Storage.get("token"); + let pathName = props.match.path; + if (!token && pathName !== "/login") { + return ; + } else if (pathName === "/login" && token) { + + return ; + }else if (pathName === "/" && token) { + + return ; + } + debugger + return ; + }} + /> + ); + }; \ No newline at end of file diff --git a/src/core/routes.js b/src/core/routes.js new file mode 100644 index 0000000..764e793 --- /dev/null +++ b/src/core/routes.js @@ -0,0 +1,35 @@ +import React, { Suspense } from "react"; +import { Provider } from "react-redux"; +import { ConnectedRouter } from "connected-react-router"; +import { Switch, Redirect, Route } from "react-router-dom"; +import { CustomRouter } from "./custom.router"; +import LoginContainer from "../modules/login/login.container"; +import DashBoardContainer from "../modules/dashboard/dashboard.container"; +import { AppRoutes } from "./app.routes"; + +const Routes = ({ store, history }) => { + return ( + + + Loading ...} + > + + + + {AppRoutes.map(_routes => + )} + + + + + + ); +}; + +export default Routes; \ No newline at end of file diff --git a/src/core/store.js b/src/core/store.js new file mode 100644 index 0000000..5e55424 --- /dev/null +++ b/src/core/store.js @@ -0,0 +1,31 @@ +import { createStore, applyMiddleware } from "redux"; +import { routerMiddleware } from "connected-react-router"; +import createSagaMiddleware from "redux-saga"; +import { createBrowserHistory } from "history"; +import { composeWithDevTools } from "redux-devtools-extension/developmentOnly"; + +import createRootReducer from "../reducers/root.reducer"; + +export const history = createBrowserHistory({ + hashType: "slash" +}); + +const RouterMiddleware = routerMiddleware(history); +const SagaMiddleware = createSagaMiddleware(); + +const getMiddleware = () => { + // DEVELPOPMENT + return composeWithDevTools(applyMiddleware(SagaMiddleware, RouterMiddleware)); + // PRODUCTION + // return compose(applyMiddleware(SagaMiddleware, RouterMiddleware)); +}; + +export function configureStore(initialState) { + const store = createStore( + createRootReducer(history), + initialState, + getMiddleware() + ); + store.runSaga = SagaMiddleware.run; + return store; +} diff --git a/src/index.css b/src/index.css index ec2585e..1532074 100644 --- a/src/index.css +++ b/src/index.css @@ -6,8 +6,3 @@ body { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } - -code { - font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', - monospace; -} diff --git a/src/index.js b/src/index.js index 87d1be5..a3b342f 100644 --- a/src/index.js +++ b/src/index.js @@ -1,12 +1,36 @@ import React from 'react'; import ReactDOM from 'react-dom'; +import "bootstrap/dist/css/bootstrap.min.css"; import './index.css'; import App from './App'; import * as serviceWorker from './serviceWorker'; +import { history, configureStore } from './core/store'; +import rootMiddleware from './middlewares/root.middleware'; +import { + BrowserRouter as Router, + Route + } from "react-router-dom"; +import Routes from './core/routes'; + +require("es6-promise").polyfill(); + + + +const store = configureStore(); +store.runSaga(rootMiddleware); + +const XRouter = () => { + return ( + + + + + + ); + }; + + + ReactDOM.render(, document.getElementById('root')); -ReactDOM.render(, document.getElementById('root')); -// If you want your app to work offline and load faster, you can change -// unregister() to register() below. Note this comes with some pitfalls. -// Learn more about service workers: https://bit.ly/CRA-PWA serviceWorker.unregister(); diff --git a/src/logo.svg b/src/logo.svg deleted file mode 100644 index 6b60c10..0000000 --- a/src/logo.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/middlewares/root.middleware.js b/src/middlewares/root.middleware.js new file mode 100644 index 0000000..2e90582 --- /dev/null +++ b/src/middlewares/root.middleware.js @@ -0,0 +1,7 @@ +import { all } from "redux-saga/effects"; + +export default function* rootMiddleware() { + yield all([ + //...LoginSaga, + ]); +} \ No newline at end of file diff --git a/src/modules/admin/admin.container.js b/src/modules/admin/admin.container.js new file mode 100644 index 0000000..e7e669a --- /dev/null +++ b/src/modules/admin/admin.container.js @@ -0,0 +1,12 @@ +import React, {Component} from 'react'; + +class AdminContainer extends Component{ + + render(){ + return( +
Admin Container
+ ); + } +} + +export default AdminContainer; \ No newline at end of file diff --git a/src/modules/dashboard/dashboard.container.js b/src/modules/dashboard/dashboard.container.js new file mode 100644 index 0000000..595aa9f --- /dev/null +++ b/src/modules/dashboard/dashboard.container.js @@ -0,0 +1,12 @@ +import React, {Component} from 'react'; + +class DashBoardContainer extends Component{ + + render(){ + return( +
Dashboard
+ ); + } +} + +export default DashBoardContainer; \ No newline at end of file diff --git a/src/modules/login/login.container.js b/src/modules/login/login.container.js new file mode 100644 index 0000000..705284e --- /dev/null +++ b/src/modules/login/login.container.js @@ -0,0 +1,12 @@ +import React,{Component} from 'react'; + +class LoginContainer extends Component{ + + render(){ + return( +
Login
+ ); + } +} + +export default LoginContainer; \ No newline at end of file diff --git a/src/modules/superadmin/superadmin.container.js b/src/modules/superadmin/superadmin.container.js new file mode 100644 index 0000000..a82608d --- /dev/null +++ b/src/modules/superadmin/superadmin.container.js @@ -0,0 +1,12 @@ +import React, {Component} from 'react'; + +class SuperAdminContainer extends Component{ + + render(){ + return( +
SuperAdminContainer
+ ); + } +} + +export default SuperAdminContainer; \ No newline at end of file diff --git a/src/reducers/root.reducer.js b/src/reducers/root.reducer.js new file mode 100644 index 0000000..de1a3b8 --- /dev/null +++ b/src/reducers/root.reducer.js @@ -0,0 +1,9 @@ +import { combineReducers } from "redux"; +import { connectRouter } from "connected-react-router"; + +const createRootReducer = history => + combineReducers({ + router: connectRouter(history), + }); + +export default createRootReducer; diff --git a/src/services/http.service.js b/src/services/http.service.js new file mode 100644 index 0000000..e69de29 diff --git a/src/services/storage.service.js b/src/services/storage.service.js new file mode 100644 index 0000000..c41d552 --- /dev/null +++ b/src/services/storage.service.js @@ -0,0 +1,16 @@ +class Storage{ + static get = (key)=>{ + if(!key)throw("Storage.get expects a 'key' - 'key' can't be null"); + if(!localStorage.getItem(key)) return null; + return localStorage.getItem(key); + } + + static set = (key, value)=>{ + if(!key||!value){ + throw("Storag.set expects a 'key' and a 'value' - 'value' & 'key' can't be null"); + } + localStorage.setItem(key, JSON.stringify(value)); + } +} + +export default Storage; \ No newline at end of file diff --git a/src/shared/header.hoc.js b/src/shared/header.hoc.js new file mode 100644 index 0000000..e69de29 -- cgit v1.2.3