Commit af3c33a7 authored by Ibadullina Inabat's avatar Ibadullina Inabat

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

parent a495d104
...@@ -14,6 +14,7 @@ const dataSource = myDataSource; ...@@ -14,6 +14,7 @@ const dataSource = myDataSource;
/**Make requiest to init recovery process */ /**Make requiest to init recovery process */
router.post ('/', async (req:Request, res:Response):Promise<void |Response>=>{ router.post ('/', async (req:Request, res:Response):Promise<void |Response>=>{
const {email} = req.body const {email} = req.body
console.log("emeil", email)
const user = await dataSource const user = await dataSource
.getRepository(User) .getRepository(User)
.findOne({ .findOne({
...@@ -21,13 +22,15 @@ router.post ('/', async (req:Request, res:Response):Promise<void |Response>=>{ ...@@ -21,13 +22,15 @@ router.post ('/', async (req:Request, res:Response):Promise<void |Response>=>{
email:email email:email
} }
}) })
console.log('user ', user)
if (!user) return res.status(404).send({message:'user not found'}) if (!user) return res.status(404).send({message:'user not found'})
const token = nanoid(); const token = nanoid();
try{ try{
const passwordRecovery = new PasswordRecovery() const passwordRecovery = new PasswordRecovery()
passwordRecovery.user= user; passwordRecovery.user= user;
passwordRecovery.token=token; passwordRecovery.token=token;
await passwordRecovery.save() await passwordRecovery.save()
console.log('passwordRecover ' , passwordRecovery)
const url = `${FRONTEND_URL}/reset-password/${token}`; const url = `${FRONTEND_URL}/reset-password/${token}`;
await transporter.sendMail({ await transporter.sendMail({
from:"planner45@yandex.com", from:"planner45@yandex.com",
...@@ -38,7 +41,7 @@ router.post ('/', async (req:Request, res:Response):Promise<void |Response>=>{ ...@@ -38,7 +41,7 @@ router.post ('/', async (req:Request, res:Response):Promise<void |Response>=>{
html:`Вы отправили запрос на восстановление пароля, html:`Вы отправили запрос на восстановление пароля,
перейдите по ссылке плз: <br><a> href="${url}">${url}</a>`}); перейдите по ссылке плз: <br><a> href="${url}">${url}</a>`});
return res.send({message:'Email successffuly send'}) return res.send({message:'Email successffuly send'})
} catch (e){ } catch (e){
console.log(e) console.log(e)
res.status(502).send({message:'mail got stuck in ', e }) res.status(502).send({message:'mail got stuck in ', e })
} }
...@@ -69,12 +72,12 @@ router.get('/', async(req: Request, res: Response):Promise<Response|void>=>{ ...@@ -69,12 +72,12 @@ router.get('/', async(req: Request, res: Response):Promise<Response|void>=>{
/**change password */ /**change password */
router.patch('/:id/change-password', async (req: Request, res: Response):Promise<Response|void>=>{ router.patch('/:id/change-password', async (req: Request, res: Response):Promise<Response|void>=>{
const user = await dataSource const user = await dataSource
.getRepository(User) .getRepository(User)
.findOneBy({id:req.params.id}) .findOneBy({id:req.params.id})
if(!user) return res.status(404).send({Message:'user not found'}) if(!user) return res.status(404).send({Message:'user not found'})
const salt = await bcrypt.genSalt(SALT_WORK_FACTOR); const salt = await bcrypt.genSalt(SALT_WORK_FACTOR);
let newPassword:string = await bcrypt.hash(req.body.password, salt); const newPassword:string = await bcrypt.hash(req.body.password, salt);
user.password = newPassword user.password = newPassword
try{ try{
await user.save() await user.save()
......
...@@ -119,6 +119,7 @@ const App = () => { ...@@ -119,6 +119,7 @@ const App = () => {
<Route path={"/sign-in"} element={<Login />} /> <Route path={"/sign-in"} element={<Login />} />
<Route path={"/forgottenpassword"} element={<ForgottenPassword />} /> <Route path={"/forgottenpassword"} element={<ForgottenPassword />} />
<Route path={"/reset-password"} element={<div>Reset</div>} />
<Route path='*' element={<h1>404</h1>} /> <Route path='*' element={<h1>404</h1>} />
</Route> </Route>
</Routes> </Routes>
......
...@@ -2,7 +2,7 @@ import { useState } from "react"; ...@@ -2,7 +2,7 @@ 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 { loginUser } from "../../store/actions/usersActions"; import { forgottenPassword, 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";
...@@ -24,7 +24,7 @@ const StyledTitle = styled(Typography)` ...@@ -24,7 +24,7 @@ const StyledTitle = styled(Typography)`
const ForgottenPassword = () => { const ForgottenPassword = () => {
const [state, setState] = useState({ const [state, setState] = useState({
email: '', email: '',
redirectUrl: 'http://localhost:3000/passwordreset' // redirectUrl: 'http://localhost:3000/passwordreset'
}); });
...@@ -45,7 +45,7 @@ const ForgottenPassword = () => { ...@@ -45,7 +45,7 @@ const ForgottenPassword = () => {
const submitHandler = async (e) => { const submitHandler = async (e) => {
e.preventDefault(); e.preventDefault();
await dispatch(loginUser(state, navigate)); await dispatch(forgottenPassword(state, navigate));
}; };
......
...@@ -65,7 +65,7 @@ const Register = () => { ...@@ -65,7 +65,7 @@ const Register = () => {
formData.append(key, state[key]); formData.append(key, state[key]);
console.log("key " + key + "state " + state[key]) console.log("key " + key + "state " + state[key])
}) })
if (state["password"] === state["confirmPassword"]) { if (state.password && state.password === state.confirmPassword) {
await dispatch(registerUser(formData, navigate)); await dispatch(registerUser(formData, navigate));
} else { } else {
alert("Пароли не совпадают") alert("Пароли не совпадают")
......
...@@ -85,14 +85,15 @@ export const forgottenPassword = (userData, navigate) => { ...@@ -85,14 +85,15 @@ export const forgottenPassword = (userData, navigate) => {
return async (dispatch) => { return async (dispatch) => {
try { try {
console.log( 'forgottenPassword userData ',userData) console.log( 'forgottenPassword userData ',userData)
const response = await axios.post("users/requestPasswordReset", userData); const response = await axios.post("/password-recovery", userData);
// if (userData.email === response.data.email) { // if (userData.email === response.data.email) {
// } // }
dispatch(loginUserSuccess(response.data)); console.log('response.data ', response.data)
// dispatch(loginUserSuccess(response.data));
navigate("/") navigate("/")
} catch (e) { } catch (e) {
dispatch(loginUserFailure(e?.response?.data?.err)) console.log("user not found")
} }
} }
} }
......
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