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 (
);
}
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