From d891c1c9fd80e99e0e6af946f214e25797b3aa11 Mon Sep 17 00:00:00 2001 From: "jeremy.ducourthial" Date: Sun, 6 Nov 2022 17:51:49 +0100 Subject: [PATCH] =?UTF-8?q?Debut=20ajout=20modif=20page=20+=20erreur=20?= =?UTF-8?q?=C3=A0=20corrig=C3=A9=20API?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server-api/api.js | 14 ++++ src/App.js | 6 +- src/components/NavigationAdmin.js | 7 +- src/pages/{Admin.js => Admin_create.js} | 17 +++- src/pages/Admin_list.js | 101 ++++++++++++++++++++++++ src/pages/Admin_modif.js | 64 +++++++++++++-- src/pages/Connexion.js | 5 +- 7 files changed, 195 insertions(+), 19 deletions(-) rename src/pages/{Admin.js => Admin_create.js} (89%) create mode 100644 src/pages/Admin_list.js diff --git a/server-api/api.js b/server-api/api.js index 11dc8dc..81d7076 100644 --- a/server-api/api.js +++ b/server-api/api.js @@ -58,6 +58,20 @@ app.get('/Customer/Id/:id', (req, res) => { }); }); +app.get('/User/Id/:id', (req, res) => { + + const id = req.params.id; + let sql = 'SELECT lastname,firstname,phone,mail,login,idrole FROM users WHERE iduser = ?'; + + db.query(sql, [id], (err, result) => { + if (err) throw err; + + console.log(result); + res.send(result); + }); +}); + + app.get('/User/Auth/:login/:pwd', (req, res) => { const login = req.params.login; diff --git a/src/App.js b/src/App.js index ebde1e4..bc585f3 100644 --- a/src/App.js +++ b/src/App.js @@ -2,19 +2,21 @@ import React from 'react'; import { BrowserRouter, Routes, Route } from 'react-router-dom'; import Compte from './pages/Compte'; import Connexion from './pages/Connexion'; -import Admin from './pages/Admin'; import Admin_modif from './pages/Admin_modif'; import Admin_supp from './pages/Admin_supp'; import Dashboard from './pages/Dashboard'; import Analyse from './pages/Analyse'; +import Admin_list from './pages/Admin_list'; +import Admin_create from './pages/Admin_create'; const App = () => { return ( } /> - } /> + } /> } /> + } /> } /> } /> } /> diff --git a/src/components/NavigationAdmin.js b/src/components/NavigationAdmin.js index 99f4d96..488fad2 100644 --- a/src/components/NavigationAdmin.js +++ b/src/components/NavigationAdmin.js @@ -1,15 +1,16 @@ import React from 'react'; import { NavLink } from 'react-router-dom'; -const NavigationAdmin = () => { +const NavigationAdmin = (props) => { + return (
- + - + diff --git a/src/pages/Admin.js b/src/pages/Admin_create.js similarity index 89% rename from src/pages/Admin.js rename to src/pages/Admin_create.js index da4c60b..ba02f93 100644 --- a/src/pages/Admin.js +++ b/src/pages/Admin_create.js @@ -4,16 +4,21 @@ import NavigationAdmin from '../components/NavigationAdmin.js'; import CryptoJS from 'crypto-js'; import Select, { SelectChangeEvent } from '@mui/material/Select'; import MenuItem from '@mui/material/MenuItem'; +import { NavLink } from 'react-router-dom'; +import { useNavigate } from "react-router-dom"; +import { Button } from '@mui/material'; const api = axios.create({ baseURL: 'http://localhost:8080' }) -function Admin() { +function Admin_create() { const [loginError, setLoginError] = useState(false); const [roles, setRoles] = useState([]); const [selectedIdRole, setSelectedIdRole] = useState(1); + + const navigate = useNavigate(); useEffect(() =>{ api.get('/Role/All/').then((response) => { @@ -45,13 +50,15 @@ function Admin() { api.post('/User/Add', values).then (function(response) { console.log(response.data); }); + + navigate("/Admin_list"); } }); }; return (
- + {/**/} {/* Create a admin page */}

Admin

@@ -92,7 +99,9 @@ function Admin() {

{loginError === true?"L'identifiant existe déja":''}

- + + +
@@ -101,4 +110,4 @@ function Admin() { ); }; -export default Admin; \ No newline at end of file +export default Admin_create; \ No newline at end of file diff --git a/src/pages/Admin_list.js b/src/pages/Admin_list.js new file mode 100644 index 0000000..d31c28a --- /dev/null +++ b/src/pages/Admin_list.js @@ -0,0 +1,101 @@ +import React, { useState, useEffect } from 'react'; +import axios from 'axios' +import NavigationAdmin from '../components/NavigationAdmin.js'; +import { TableContainer,Table,TableHead,TableBody,TableRow,TableCell } from '@mui/material'; +import { Paper } from '@mui/material'; + +const api = axios.create({ + baseURL: 'http://localhost:8080' + }) + +function Admin_list() { + + const [users, setUsers] = useState([]); + const [selectedIdUser, setSelectedIdUser] = useState(); + + useEffect(() =>{ + api.get('/User/All/').then((response) => { + setUsers(response.data); + setSelectedIdUser(response.data[0].iduser); + }); + }, []); + + const handleClick = (event, iduser) => { + setSelectedIdUser(iduser); + }; + + return ( +
+ + {/* Create a page to delete an user in the admin page*/} + +
+

Admin

+

Liste des utilisateurs

+
+
+ + + + +
+ {/* +
+ + +
+

+ Dupont Jacques +

+

+ Carreau Alexis +

+
+ + +
+ + +
+ +
+
+ */} + + + + + Nom + Prénom + 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} + + ))} + +
+
+
+
+
+ ); +}; + +export default Admin_list; \ No newline at end of file diff --git a/src/pages/Admin_modif.js b/src/pages/Admin_modif.js index a636e26..6642cf2 100644 --- a/src/pages/Admin_modif.js +++ b/src/pages/Admin_modif.js @@ -1,8 +1,42 @@ -import React from 'react'; +import axios from 'axios' +import React, { useState, useEffect } from 'react'; import NavigationAdmin from '../components/NavigationAdmin.js'; -import Admin from './Admin.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'; + +const api = axios.create({ + baseURL: 'http://localhost:8080' + }) + +function Admin_modif() { + const location = useLocation(); + const { iduser } = location.state; + + const [currentUser, setCurrentUser] = useState([]); + const [roles, setRoles] = useState([]); + const [selectedIdRole, setSelectedIdRole] = useState(1); + + useEffect(() =>{ + const apiString = '/User/Id/' + iduser; + api.get(apiString).then((response) => { + console.log(response.data); + setCurrentUser(response.data); + setSelectedIdRole(response.data[0].idrole); + }); + }); + + useEffect(() =>{ + api.get('/Role/All/').then((response) => { + setRoles(response.data); + }); + }, []); + + function handleChangeRole(event){ + setSelectedIdRole(event.target.value); + }; -const Admin_modif = () => { return (
@@ -23,11 +57,25 @@ const Admin_modif = () => {
- - - - - + + {/* + + + + */} + + {/* + + */}
diff --git a/src/pages/Connexion.js b/src/pages/Connexion.js index 010c294..59f3eb9 100644 --- a/src/pages/Connexion.js +++ b/src/pages/Connexion.js @@ -1,8 +1,9 @@ import axios from 'axios' import React, { useState } from 'react'; import CryptoJS from 'crypto-js'; -import Admin from './Admin.js' +import Admin from './Admin_create.js' import Dashboard from './Dashboard.js'; +import Admin_list from './Admin_list.js'; const api = axios.create({ baseURL: 'http://localhost:8080' @@ -67,7 +68,7 @@ function Connexion() { }); console.log("RoleUser: " + roleUser); if (roleUser === 4) - return (); + return (); else if (roleUser === 1) return (); }