Commit 9b487731 authored by Ibadullina Inabat's avatar Ibadullina Inabat

проделана работа по восстановлению пароля

parent 0e93993f
...@@ -36,6 +36,7 @@ router.post('/', async (req : Request, res : Response):Promise<object> => { ...@@ -36,6 +36,7 @@ router.post('/', async (req : Request, res : Response):Promise<object> => {
router.post('/sessions/', async (req : Request, res : Response):Promise<object> => { router.post('/sessions/', async (req : Request, res : Response):Promise<object> => {
const {email, password} = req.body; const {email, password} = req.body;
console.log("email" + email, "password" + password )
const user = await dataSource const user = await dataSource
.createQueryBuilder() .createQueryBuilder()
.select("user") .select("user")
...@@ -45,6 +46,7 @@ router.post('/sessions/', async (req : Request, res : Response):Promise<object> ...@@ -45,6 +46,7 @@ router.post('/sessions/', async (req : Request, res : Response):Promise<object>
if(!user) return res.status(404).send({Message:'user not found'}) if(!user) return res.status(404).send({Message:'user not found'})
const isMatch:boolean = await user.checkPassword(password); const isMatch:boolean = await user.checkPassword(password);
console.log("123")
if (!isMatch) return res.status(400).send({ if (!isMatch) return res.status(400).send({
error: "Wrong Password" error: "Wrong Password"
}) })
......
...@@ -6,6 +6,7 @@ import MyTasks from './containers/MyTasks/MyTasks'; ...@@ -6,6 +6,7 @@ import MyTasks from './containers/MyTasks/MyTasks';
import Login from './containers/Login/Login'; import Login from './containers/Login/Login';
import Register from './containers/Register/Register'; import Register from './containers/Register/Register';
import MonthCalendar from './containers/MonthCalendar/MonthCalendar'; import MonthCalendar from './containers/MonthCalendar/MonthCalendar';
import ForgottenPassword from "./containers/ForgottenPassword/ForgottenPassword";
const ProtectedRoute = ({isAllowed, roles, redirectUrl, children}) => { const ProtectedRoute = ({isAllowed, roles, redirectUrl, children}) => {
const user = useSelector(state => state.users?.user); const user = useSelector(state => state.users?.user);
...@@ -95,6 +96,7 @@ const App = () => { ...@@ -95,6 +96,7 @@ const App = () => {
}/> }/>
<Route path={"/sign-in"} element={<Login/>}/> <Route path={"/sign-in"} element={<Login/>}/>
<Route path={"/forgottenpassword"} element={<ForgottenPassword/>}/>
<Route path='*' element={<h1>404</h1>}/> <Route path='*' element={<h1>404</h1>}/>
</Route> </Route>
</Routes> </Routes>
......
import { Button, Grid} from "@mui/material";
import { NavLink } from "react-router-dom";
import FormElement from "../UI/Form/FormElement/FormElement";
const ResetPasswordForm = ({ state, onChange, onSubmit, getFieldError, buttonText }) => {
return <form onSubmit={onSubmit}>
<Grid container spacing={2}>
<FormElement
onChange={onChange}
name="email"
label="Enter your email address"
state={state}
error={getFieldError?.("email")}
/>
</Grid>
<Button
sx={{ mt: "15px" }}
type="submit"
fullWidth
variant="contained"
color="primary"
>
{buttonText}
</Button>
</form>
}
export default ResetPasswordForm;
\ No newline at end of file
import { Button, Grid} from "@mui/material"; import { Button, Grid} from "@mui/material";
// import { NavLink } from "react-router-dom"; import { NavLink } from "react-router-dom";
import FormElement from "../UI/Form/FormElement/FormElement"; import FormElement from "../UI/Form/FormElement/FormElement";
const UserForm = ({ state, onChange, onSubmit, getFieldError, buttonText, resetPassword }) => { const UserForm = ({ state, onChange, onSubmit, getFieldError, buttonText, resetPassword }) => {
...@@ -30,17 +30,17 @@ const UserForm = ({ state, onChange, onSubmit, getFieldError, buttonText, resetP ...@@ -30,17 +30,17 @@ const UserForm = ({ state, onChange, onSubmit, getFieldError, buttonText, resetP
> >
{buttonText} {buttonText}
</Button> </Button>
{/* <Button <Button
component={NavLink} component={NavLink}
to={"/forgottenpassword"} to={"/forgottenpassword"}
sx={{ mt: "15px" }} sx={{ mt: "15px", color: "red" }}
type="submit" type="submit"
fullWidth fullWidth
variant="contained" variant="contained"
color="primary" color="inherit"
> >
{resetPassword} {resetPassword}
</Button> */} </Button>
</form> </form>
} }
......
...@@ -25,13 +25,13 @@ const UserRegistrationForm = ({ state, onChange, onSubmit, getFieldError, button ...@@ -25,13 +25,13 @@ const UserRegistrationForm = ({ state, onChange, onSubmit, getFieldError, button
state={state} state={state}
error={getFieldError?.("email")} error={getFieldError?.("email")}
/> />
<FormElement {/* <FormElement
onChange={onChange} onChange={onChange}
name="number" name="number"
label="Number" label="Number"
state={state} state={state}
error={getFieldError?.("number")} error={getFieldError?.("number")}
/> /> */}
<FormElement <FormElement
onChange={onChange} onChange={onChange}
name="password" name="password"
......
// import { useState } from "react"; import { useState } from "react";
// import { useDispatch, useSelector } from "react-redux"; import { useDispatch, useSelector } from "react-redux";
// import { useNavigate } from "react-router-dom"; import { useNavigate } from "react-router-dom";
// import Loader from "../../components/UI/Loader/Loader"; import Loader from "../../components/UI/Loader/Loader";
// import UserForm from "../../components/UserForm/UserForm"; import { loginUser } from "../../store/actions/usersActions";
// import { loginUser } from "../../store/actions/usersActions"; import PersonIcon from '@mui/icons-material/Person';
// import PersonIcon from '@mui/icons-material/Person'; import styled from "@emotion/styled";
// import styled from "@emotion/styled"; import { Alert, Avatar, Container, Typography } from "@mui/material";
// import { Alert, Avatar, Container, Typography } from "@mui/material"; import ResetPasswordForm from "../../components/UserForm/ResetPasswordForm";
// const StyledContainer = styled(Container)` const StyledContainer = styled(Container)`
// padding-top: 30px; padding-top: 30px;
// padding-bottom: 30px; padding-bottom: 30px;
// box-shadow: 0 18px 30px 0 rgba(0, 0, 0, 0.6); box-shadow: 0 18px 30px 0 rgba(0, 0, 0, 0.6);
// border-radius: 6px; border-radius: 6px;
// `; `;
// const StyledTitle = styled(Typography)` const StyledTitle = styled(Typography)`
// text-align: center; text-align: center;
// font-size: 30px; font-size: 30px;
// margin-bottom: 30px; margin-bottom: 30px;
// `; `;
// const ForgottenPassword = () => { const ForgottenPassword = () => {
// const [state, setState] = useState({ const [state, setState] = useState({
// email: '', email: '',
// redirectUrl: 'http://localhost:3000/passwordreset' redirectUrl: 'http://localhost:3000/passwordreset'
// }); });
// const dispatch = useDispatch(); const dispatch = useDispatch();
// const { loginError, loading } = useSelector(state => state.users); const { loginError, loading } = useSelector(state => state.users);
// console.log(loginError) console.log(loginError)
// const navigate = useNavigate("/") const navigate = useNavigate("/")
// const inputChangeHandler = (e) => { const inputChangeHandler = (e) => {
// const { name, value } = e.target; const { name, value } = e.target;
// setState((prevState) => { setState((prevState) => {
// return { return {
// ...prevState, ...prevState,
// [name]: value [name]: value
// } }
// }); });
// }; };
// const submitHandler = async (e) => { const submitHandler = async (e) => {
// e.preventDefault(); e.preventDefault();
// await dispatch(loginUser(state, navigate)); await dispatch(loginUser(state, navigate));
// }; };
// return <> return <>
// <StyledContainer component={"section"} maxWidth={"xs"}> <StyledContainer component={"section"} maxWidth={"xs"}>
// {!!loginError && <Alert color="error">{loginError}</Alert>} {!!loginError && <Alert color="error">{loginError}</Alert>}
// <Avatar sx={{ m: "0 auto 30px" }}> <Avatar sx={{ m: "0 auto 30px" }}>
// <PersonIcon /> <PersonIcon />
// </Avatar> </Avatar>
// <StyledTitle variant={"h1"}> <StyledTitle variant={"h1"}>
// Password Reset Password Reset
// </StyledTitle> </StyledTitle>
// <UserForm <ResetPasswordForm
// onSubmit={submitHandler} onSubmit={submitHandler}
// state={state} state={state}
// onChange={inputChangeHandler} onChange={inputChangeHandler}
// buttonText={"Sign In"} buttonText={"Submit"}
// resetPassword={"Forgot your password?"} resetPassword={"Forgot your password?"}
// /> />
// </StyledContainer> </StyledContainer>
// <Loader loading={loading} /> <Loader loading={loading} />
// </> </>
// }; };
// export default ForgottenPassword; export default ForgottenPassword;
\ No newline at end of file \ No newline at end of file
...@@ -62,7 +62,7 @@ const Login = () => { ...@@ -62,7 +62,7 @@ const Login = () => {
state={state} state={state}
onChange={inputChangeHandler} onChange={inputChangeHandler}
buttonText={"Sign In"} buttonText={"Sign In"}
// resetPassword={"Forgot your password?"} resetPassword={"Forgot your password?"}
/> />
</StyledContainer> </StyledContainer>
<Loader loading={loading} /> <Loader loading={loading} />
......
...@@ -26,7 +26,7 @@ const Register = () => { ...@@ -26,7 +26,7 @@ const Register = () => {
name: '', name: '',
surname: "", surname: "",
email: "", email: "",
number: "", // number: "",
password: '', password: '',
// avatar: "", // avatar: "",
}); });
......
...@@ -49,7 +49,25 @@ const logoutUserFailure = (error) => { ...@@ -49,7 +49,25 @@ const logoutUserFailure = (error) => {
export const loginUser = (userData, navigate) => { export const loginUser = (userData, navigate) => {
return async (dispatch) => { return async (dispatch) => {
try { try {
console.log(userData)
const response = await axios.post("users/sessions", userData); const response = await axios.post("users/sessions", userData);
console.log(response)
dispatch(loginUserSuccess(response.data));
navigate("/")
} catch (e) {
dispatch(loginUserFailure(e?.response?.data?.err))
}
}
}
export const forgottenPassword = (userData, navigate) => {
return async (dispatch) => {
try {
console.log(userData)
const response = await axios.post("users/requestPasswordReset", userData);
// if (userData.email === response.data.email) {
// }
dispatch(loginUserSuccess(response.data)); dispatch(loginUserSuccess(response.data));
navigate("/") navigate("/")
} catch (e) { } catch (e) {
......
import { REGISTER_USER_REQUEST, REGISTER_USER_SUCCESS, REGISTER_USER_FAILURE, LOGIN_USER_SUCCESS, LOGIN_USER_FAILURE, LOGOUT_USER_SUCCESS } from "../actionTypes/actionTypes"; import { REGISTER_USER_REQUEST, REGISTER_USER_SUCCESS, REGISTER_USER_FAILURE, LOGIN_USER_SUCCESS, LOGIN_USER_FAILURE, LOGOUT_USER_SUCCESS } from "../actionTypes/actionTypes";
const initialState = { const initialState = {
user: { user: null,
name: 'Ivan',
surname: 'Petrov',
email: 'test@gmail.com',
role: 'user'
},
registerError: null, registerError: null,
loginError: null, loginError: null,
loading: false loading: false
}; };
const usersReduser = (state = initialState, action) => { const usersReducer = (state = initialState, action) => {
switch(action.type) { switch(action.type) {
case REGISTER_USER_REQUEST: case REGISTER_USER_REQUEST:
return {...state, loading: true}; return {...state, loading: true};
...@@ -21,8 +16,10 @@ const usersReduser = (state = initialState, action) => { ...@@ -21,8 +16,10 @@ const usersReduser = (state = initialState, action) => {
case REGISTER_USER_FAILURE: case REGISTER_USER_FAILURE:
return {...state, loading: false, registerError: action.error}; return {...state, loading: false, registerError: action.error};
case LOGIN_USER_SUCCESS: case LOGIN_USER_SUCCESS:
console.log("action.user" + action.user)
return {...state, user: action.user}; return {...state, user: action.user};
case LOGIN_USER_FAILURE: case LOGIN_USER_FAILURE:
console.log("action.error" + action.error)
return {...state, loginError: action.error}; return {...state, loginError: action.error};
case LOGOUT_USER_SUCCESS: case LOGOUT_USER_SUCCESS:
return {...state, user: null}; return {...state, user: null};
...@@ -31,4 +28,4 @@ const usersReduser = (state = initialState, action) => { ...@@ -31,4 +28,4 @@ const usersReduser = (state = initialState, action) => {
} }
}; };
export default usersReduser; export default usersReducer;
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment