From 4b8444132db62602760db1c0a931d4246882a2fc Mon Sep 17 00:00:00 2001 From: Jeremy DUCOURTHIAL Date: Wed, 23 Nov 2022 15:13:31 +0100 Subject: [PATCH] =?UTF-8?q?AJout=20pagAjout=20page=20admin=20op=C3=A9ratio?= =?UTF-8?q?nelle?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server-api/api.js | 47 ++++++++++++- src/App.js | 3 + src/components/NavigationAdmin.js | 2 +- src/pages/Admin_list.js | 23 ------- src/pages/Admin_supp.js | 67 ++++++++++--------- src/pages/RestartPassword.js | 105 ++++++++++++++++++++++++++++++ 6 files changed, 188 insertions(+), 59 deletions(-) create mode 100644 src/pages/RestartPassword.js diff --git a/server-api/api.js b/server-api/api.js index a936c54..c95ec21 100644 --- a/server-api/api.js +++ b/server-api/api.js @@ -86,6 +86,20 @@ app.get('/User/Auth/:login/:pwd', (req, res) => { }); }); +app.get('/User/Auth/Password/:id/:pwd', (req, res) => { + + const id = req.params.id; + const pwd = req.params.pwd; + let sql = 'SELECT login FROM users WHERE iduser = ? AND password = ?'; + + db.query(sql, [id, pwd], (err, result) => { + if (err) throw err; + + console.log(result); + res.send(result); + }); +}); + app.get('/User/Role/:login', (req, res) => { const login = req.params.login; @@ -155,11 +169,38 @@ app.put('/User/Update/:id', (req, res) => { const id = req.params.id; let form = req.body; - const sql = `UPDATE users SET lastname = ?, firstname = ?, idrole = ?, login = ?, password = ?, phone = ?, mail = ? WHERE (iduser = ?)`; - db.query(sql, [form.lastname, form.firstname, form.idrole, form.login, form.password, form.phone, form.mail, id], (err, result) => { + const sql = `UPDATE users SET lastname = ?, firstname = ?, idrole = ?, login = ?, phone = ?, mail = ? WHERE (iduser = ?)`; + db.query(sql, [form.lastname, form.firstname, form.idrole, form.login, form.phone, form.mail, id], (err, result) => { + if (err) throw err; + console.log(result); + res.send('Post update...'); + }); +}); + +app.put('/User/Update/Password/:id', (req, res) => { + + const id = req.params.id; + let form = req.body; + + console.log(form.newPassword); + + const sql = `UPDATE users SET password = ? WHERE (iduser = ?)`; + db.query(sql, [form.newPassword, id], (err, result) => { + if (err) throw err; + console.log(result); + res.send('Post password update...'); + }); +}); + +app.delete('/User/Delete/:id', (req, res) => { + + const id = req.params.id; + + const sql = `DELETE FROM users WHERE (iduser = ?)`; + db.query(sql, [id], (err, result) => { if (err) throw err; console.log(result); - res.send('Post added...'); + res.send('Post delete...'); }); }); diff --git a/src/App.js b/src/App.js index fe047fb..c91514a 100644 --- a/src/App.js +++ b/src/App.js @@ -12,6 +12,8 @@ import Admin_create from './pages/Admin_create'; import Calendrier from './pages/Calendrier'; import Repertoire from './pages/Repertoire'; import Parametres from './pages/Parametres'; +import RestartPassword from './pages/RestartPassword'; + @@ -25,6 +27,7 @@ const App = () => { } /> } /> } /> + } /> } /> } /> } /> diff --git a/src/components/NavigationAdmin.js b/src/components/NavigationAdmin.js index 301cc1b..19db335 100644 --- a/src/components/NavigationAdmin.js +++ b/src/components/NavigationAdmin.js @@ -16,7 +16,7 @@ const NavigationAdmin = (props) => { - + diff --git a/src/pages/Admin_list.js b/src/pages/Admin_list.js index 63c2acc..67ff739 100644 --- a/src/pages/Admin_list.js +++ b/src/pages/Admin_list.js @@ -33,7 +33,6 @@ function Admin_list() { return ( - {/* Create a page to delete an user in the admin page*/}

Admin

@@ -45,28 +44,6 @@ function Admin_list() {
- {/* -
- - -
-

- Dupont Jacques -

-

- Carreau Alexis -

-
- - -
- - -
- -
-
- */} diff --git a/src/pages/Admin_supp.js b/src/pages/Admin_supp.js index c652765..6a1db1d 100644 --- a/src/pages/Admin_supp.js +++ b/src/pages/Admin_supp.js @@ -1,44 +1,52 @@ import React, { useState, useEffect } from 'react'; import axios from 'axios' import NavigationAdmin from '../components/NavigationAdmin.js'; +import { NavLink, useLocation } from "react-router-dom"; import { TableContainer,Table,TableHead,TableBody,TableRow,TableCell } from '@mui/material'; import { Paper } from '@mui/material'; +import { useNavigate } from "react-router-dom"; const api = axios.create({ baseURL: 'http://localhost:8080' }) -const Admin_supp = () => { +function Admin_supp(){ - const [users, setUsers] = useState([]); - const [selectedIdUser, setSelectedIdUser] = useState(); + const location = useLocation(); + const { iduser } = location.state; + + const [selectedUser, setSelectedUsers] = useState([]); + + const navigate = useNavigate(); useEffect(() =>{ - api.get('/User/All/').then((response) => { - setUsers(response.data); - setSelectedIdUser(response.data[0].iduser); + const apiString = '/User/Id/' + iduser; + api.get(apiString).then((response) => { + console.log(response.data[0]); + setSelectedUsers(response.data[0]); }); }, []); - const handleClick = (event, iduser) => { - setSelectedIdUser(iduser); - }; + function checkDelete(event){ + + event.preventDefault(); + + const apiString = '/User/Delete/' + iduser; + api.delete(apiString).then((response) => { + console.log(response.data); + }); + + navigate("/Admin_list"); + } return (
- {/* Create a page to delete an user in the admin page*/}

Admin

Supression d'utilisateur

-
- - - - -
@@ -48,29 +56,24 @@ const Admin_supp = () => { Identifiant Téléphone Email - Rôle - {users.map((user) => ( - handleClick(event, user.iduser)} - selected={user.iduser === selectedIdUser} - > - {user.lastname} - {user.firstname} - {user.login} - {user.phone} - {user.mail} - {user.name} - - ))} + + {selectedUser.lastname} + {selectedUser.firstname} + {selectedUser.login} + {selectedUser.phone} + {selectedUser.mail} +
+
+ + Retour +
); diff --git a/src/pages/RestartPassword.js b/src/pages/RestartPassword.js new file mode 100644 index 0000000..0fac4bf --- /dev/null +++ b/src/pages/RestartPassword.js @@ -0,0 +1,105 @@ +import axios from 'axios' +import React, { useState, useEffect } from 'react'; +import NavigationAdmin from '../components/NavigationAdmin.js'; +import Admin from './Admin_create.js'; +import { useLocation } from "react-router-dom"; +import Select, { SelectChangeEvent } from '@mui/material/Select'; +import MenuItem from '@mui/material/MenuItem'; +import { NavLink } from 'react-router-dom'; +import CryptoJS from 'crypto-js'; +import { useNavigate } from "react-router-dom"; + + +const api = axios.create({ + baseURL: 'http://localhost:8080' + }) + +function RestartPassword() { + const location = useLocation(); + const { iduser } = location.state; + console.log(iduser); + + const [password, setPassword] = useState(""); + const [confPassword, setConfPassword] = useState(""); + const [newPassword, setNewPassword] = useState(""); + + const navigate = useNavigate(); + + function handleChangePassword(event){ + setPassword(event.target.value); + }; + + function handleChangeConfPassword(event){ + setConfPassword(event.target.value); + }; + + function handleChangeNewPassword(event){ + setNewPassword(event.target.value); + }; + + function checkRestartPassword(event){ + + const formData = new FormData(event.currentTarget); + const values = Object.fromEntries(formData.entries()); + + event.preventDefault(); + + if(password === confPassword) + { + const apiString = '/User/Auth/Password/' + iduser + "/" + CryptoJS.SHA256(confPassword).toString(CryptoJS.enc.Hex); + api.get(apiString).then((response) => { + const login = response.data; + if (login.length > 0){ + console.log(values.newPassword); + + values.newPassword = CryptoJS.SHA256(newPassword).toString(CryptoJS.enc.Hex); + + const apiStringUpdate = '/User/Update/Password/' + iduser; + api.put(apiStringUpdate, values).then((response) => { + console.log(response.data); + }); + + navigate("/Admin_list"); + } + else{ + console.log("trt"); + } + }); + } + } + + return ( +
+ + {/* Create a admin page */} +
+

Admin

+

Modification d'utilisateur

+
+
+ + +
+

Mot de passe :

+

Confirmation mot de passe :

+

Nouveau mot de passe :

+
+ + + + + + +
+
+ + Retour +
+
+
+
+
+ ); +}; + +export default RestartPassword; \ No newline at end of file