From 2ec02ee436597e22b3662a8fcab69da500cc3050 Mon Sep 17 00:00:00 2001 From: Nuwan Date: Thu, 11 Nov 2021 07:52:46 +0530 Subject: [PATCH] change user auth to have a login page for the users to sign in to the site --- jam-ui/src/Main.js | 18 +++-- jam-ui/src/components/auth/LoginForm.js | 16 ++--- .../components/auth/basic/AuthBasicRoutes.js | 18 ++--- jam-ui/src/components/auth/basic/Login.js | 6 +- .../components/dashboard/JKDashboardMain.js | 5 +- .../navbar/JKNotificationDropdown.js | 2 +- .../components/navbar/JKProfileDropdown.js | 8 +-- jam-ui/src/components/page/JKPerson.js | 2 +- .../src/components/profile/JKMessageModal.js | 2 +- .../components/profile/JKProfileSidePanel.js | 2 +- jam-ui/src/context/UserAuth.js | 63 ++++++++++++++++++ jam-ui/src/helpers/apiFetch.js | 1 - jam-ui/src/helpers/privateRoute.js | 33 ++++++++++ jam-ui/src/helpers/rest.js | 14 ++-- jam-ui/src/layouts/AuthBasicLayout.js | 5 +- jam-ui/src/layouts/JKDashboardLayout.js | 65 +++---------------- jam-ui/src/layouts/JKDashboardRoutes.js | 6 +- jam-ui/src/layouts/JKLayout.js | 10 ++- jam-ui/src/services/auth.js | 37 +++++++++++ web/app/controllers/api_auths_controller.rb | 5 ++ web/app/controllers/api_users_controller.rb | 9 ++- web/config/routes.rb | 1 + 22 files changed, 218 insertions(+), 110 deletions(-) create mode 100644 jam-ui/src/context/UserAuth.js create mode 100644 jam-ui/src/helpers/privateRoute.js create mode 100644 jam-ui/src/services/auth.js diff --git a/jam-ui/src/Main.js b/jam-ui/src/Main.js index c91277a12..d227eb7b4 100644 --- a/jam-ui/src/Main.js +++ b/jam-ui/src/Main.js @@ -1,7 +1,7 @@ import React, { useState, useEffect } from 'react'; import PropTypes from 'prop-types'; import AppContext from './context/Context'; -import { AuthProvider } from "./context/AuthContext"; + import { settings } from './config'; import toggleStylesheet from './helpers/toggleStylesheet'; import { getItemFromStore, setItemToStore, themeColors } from './helpers/utils'; @@ -118,15 +118,13 @@ const Main = props => { ); } - return - - - - {props.children} - - - - ; + return ( + + + {props.children} + + + ); }; Main.propTypes = { children: PropTypes.node }; diff --git a/jam-ui/src/components/auth/LoginForm.js b/jam-ui/src/components/auth/LoginForm.js index ad2e2f6f1..c3653a30b 100644 --- a/jam-ui/src/components/auth/LoginForm.js +++ b/jam-ui/src/components/auth/LoginForm.js @@ -6,8 +6,8 @@ import { Button, Form, Row, Col, FormGroup, Input, CustomInput, Label } from 're import Divider from '../common/Divider'; import SocialAuthButtons from './SocialAuthButtons'; import withRedirect from '../../hoc/withRedirect'; -import { useAuth } from '../../context/AuthContext'; -import { signin } from '../../services/authService'; +import { useAuth } from '../../context/UserAuth'; +//import { signin } from '../../services/authService'; const LoginForm = ({ setRedirect, hasLabel, layout }) => { // State @@ -17,19 +17,19 @@ const LoginForm = ({ setRedirect, hasLabel, layout }) => { const [isDisabled, setIsDisabled] = useState(true); const history = useHistory(); - const { setCurrentUser} = useAuth(); + const { login, setCurrentUser } = useAuth(); // Handler const handleSubmit = async e => { e.preventDefault(); const credentials = {email, password} - const user = await signin(credentials) + const user = await login(credentials) console.log("handleSubmit", user); if(user){ setCurrentUser(user) - localStorage.setItem('user', user) + //localStorage.setItem('user', user) toast.success(`Signed in as ${email}`); - setRedirect(true); + setRedirect(true) }else{ toast.error("Incorrect email or password"); } @@ -81,8 +81,8 @@ const LoginForm = ({ setRedirect, hasLabel, layout }) => { Log in - or log in with - + {/* or log in with + */} ); }; diff --git a/jam-ui/src/components/auth/basic/AuthBasicRoutes.js b/jam-ui/src/components/auth/basic/AuthBasicRoutes.js index b1459c937..b4012fc7a 100644 --- a/jam-ui/src/components/auth/basic/AuthBasicRoutes.js +++ b/jam-ui/src/components/auth/basic/AuthBasicRoutes.js @@ -1,25 +1,25 @@ import React from 'react'; import PropTypes from 'prop-types'; import { Redirect, Route, Switch, withRouter } from 'react-router-dom'; -//import Login from './Login'; +import Login from './Login'; import Start from './Start'; import Logout from './Logout'; -// import Registration from './Registration'; -// import ForgetPassword from './ForgetPassword'; -// import PasswordReset from './PasswordReset'; -// import ConfirmMail from './ConfirmMail'; -// import LockScreen from './LockScreen'; +import Registration from './Registration'; +import ForgetPassword from './ForgetPassword'; +import PasswordReset from './PasswordReset'; +import ConfirmMail from './ConfirmMail'; +import LockScreen from './LockScreen'; const AuthBasicRoutes = ({ match: { url } }) => ( - {/* */} + - {/* + - */} + {/*Redirect*/} diff --git a/jam-ui/src/components/auth/basic/Login.js b/jam-ui/src/components/auth/basic/Login.js index fcce7985e..3fcf6bc27 100644 --- a/jam-ui/src/components/auth/basic/Login.js +++ b/jam-ui/src/components/auth/basic/Login.js @@ -7,13 +7,13 @@ const Login = () => ( -
Log in
+
Sign in
- + {/*

or create an account

- + */}
diff --git a/jam-ui/src/components/dashboard/JKDashboardMain.js b/jam-ui/src/components/dashboard/JKDashboardMain.js index 32577f505..845b62010 100644 --- a/jam-ui/src/components/dashboard/JKDashboardMain.js +++ b/jam-ui/src/components/dashboard/JKDashboardMain.js @@ -1,5 +1,6 @@ import React, { useContext, useEffect } from 'react'; import { Route, Switch } from 'react-router-dom'; +import PrivateRoute from '../../helpers/privateRoute'; import NavbarTop from '../navbar/JKNavbarTop'; import NavbarVertical from '../navbar/JKNavbarVertical'; @@ -14,8 +15,8 @@ import { addMessage } from "../../store/features/textMessagesSlice" import { add as addNotification } from '../../store/features/notificationSlice'; import Home from './JKHomePage'; -import loadable from '@loadable/component'; +import loadable from '@loadable/component'; const DashboardRoutes = loadable(() => import('../../layouts/JKDashboardRoutes')); function JKDashboard() { @@ -123,7 +124,7 @@ function JKDashboard() {
- + {!isKanban &&