AJout pagAjout page admin opérationelle

master
Jeremy DUCOURTHIAL 3 years ago
parent 2ae20c4acc
commit 4b8444132d

@ -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...');
});
});

@ -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 = () => {
<Route path="/Account" element={<Compte />} />
<Route path="/Admin_list" element={<Admin_list />} />
<Route path="/Admin_modif" element={<Admin_modif />} />
<Route path='/RestartPassword' element={<RestartPassword />} />
<Route path="/Admin_devis" element={<Admin_devis />} />
<Route path="/Admin_supp" element={<Admin_supp />} />
<Route path="/Dashboard" element={<Dashboard />} />

@ -16,7 +16,7 @@ const NavigationAdmin = (props) => {
<NavLink className="modify_user" to="/Admin_modif" state={{ iduser: props.iduser }}>
<button id="bouton_modif" className="bouton" type="button" value="Modifier un utilisateur">Modifier utilisateur</button>
</NavLink>
<NavLink className="delete_user" to="/Admin_supp">
<NavLink className="delete_user" to="/Admin_supp" state={{ iduser: props.iduser }}>
<button id="bouton_sup" className="bouton" type="button" value="Supprimer un utilisateur">Supprimer utilisateur</button>
</NavLink>
<NavLink className="list_devis" to="/Admin_devis">

@ -33,7 +33,6 @@ function Admin_list() {
return (
<body className="page_admin">
<link rel="stylesheet" href="https://unicons.iconscout.com/release/v4.0.0/css/line.css"></link>
{/* Create a page to delete an user in the admin page*/}
<NavigationAdmin iduser={selectedIdUser}/>
<div className="Titre_Formulaire_Rech">
<p className="Titre">Admin</p>
@ -45,28 +44,6 @@ function Admin_list() {
<i class="uil uil-search search-icon"></i>
</span>
</div>
{/*
<form className="formulaire">
<table className="Formulaire_de_recherche">
<tr className="tr_bouton">
<div className="bouton_personnes">
<p className="bouton_personne1">
<strong>Dupont Jacques</strong>
</p>
<p className="bouton_personne2">
<strong>Carreau Alexis</strong>
</p>
</div>
</tr>
<tr>
<div id="style" className='bouton_submit'>
<button className="bouton_sup" type="submit" onClick="document.getElementById('style').style.backgroundColor='green'">Supprimer</button>
<button className="bouton_ann" type="submit" onClick="document.getElementById('style').style.backgroundColor='red'">Annuler</button>
</div>
</tr>
</table>
</form>
*/}
<TableContainer component={Paper} sx={{ maxHeight: 0.8 }}>
<Table aria-label="simple table" size="small" stickyHeader>
<TableHead >

@ -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 (
<div className="page_admin">
<link rel="stylesheet" href="https://unicons.iconscout.com/release/v4.0.0/css/line.css"></link>
{/* Create a page to delete an user in the admin page*/}
<NavigationAdmin />
<div className="Titre_Formulaire_Rech">
<p className="Titre">Admin</p>
<p className="Sous-titre">Supression d'utilisateur</p>
<div className="rechLogo">
<div className="input_box">
<input type="search" placeholder="Rechercher..."/>
<span className="search">
<i class="uil uil-search search-icon"></i>
</span>
</div>
<TableContainer component={Paper} sx={{ maxHeight: 0.8 }}>
<Table aria-label="simple table" size="small" stickyHeader>
<TableHead >
@ -48,29 +56,24 @@ const Admin_supp = () => {
<TableCell sx={{ bgcolor: 'info.main'}} align="center">Identifiant</TableCell>
<TableCell sx={{ bgcolor: 'info.main'}} align="center">Téléphone</TableCell>
<TableCell sx={{ bgcolor: 'info.main'}} align="center">Email</TableCell>
<TableCell sx={{ bgcolor: 'info.main'}} align="center">Rôle</TableCell>
</TableRow>
</TableHead>
<TableBody >
{users.map((user) => (
<TableRow
key={user.iduser}
hover
onClick={(event) => handleClick(event, user.iduser)}
selected={user.iduser === selectedIdUser}
>
<TableCell align="left">{user.lastname}</TableCell>
<TableCell align="center">{user.firstname}</TableCell>
<TableCell align="center">{user.login}</TableCell>
<TableCell align="center">{user.phone}</TableCell>
<TableCell align="center">{user.mail}</TableCell>
<TableCell align="center">{user.name}</TableCell>
</TableRow>
))}
<TableRow>
<TableCell align="left">{selectedUser.lastname}</TableCell>
<TableCell align="center">{selectedUser.firstname}</TableCell>
<TableCell align="center">{selectedUser.login}</TableCell>
<TableCell align="center">{selectedUser.phone}</TableCell>
<TableCell align="center">{selectedUser.mail}</TableCell>
</TableRow>
</TableBody>
</Table>
</TableContainer>
</div>
<div className="bouton_submit">
<button onClick={checkDelete}>Valider</button>
<NavLink className="bouton_ann" to="/Admin_list">Retour</NavLink>
</div>
</div>
</div>
);

@ -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 (
<div className="page_admin">
<NavigationAdmin />
{/* Create a admin page */}
<div className="Titre_Formulaire">
<p className="Titre">Admin</p>
<p className="Sous-titre">Modification d'utilisateur</p>
<div className="Formulaire">
<form className="form" onSubmit={checkRestartPassword}>
<table className="Formulaire_de_connexion">
<tr>
<div className="texte_côté">
<p>Mot de passe :</p>
<p>Confirmation mot de passe :</p>
<p>Nouveau mot de passe :</p>
</div>
</tr>
<tr>
<input id="MotDePasse" value={password} onChange={handleChangePassword} name='password' className="texte_zone" type="text" placeholder="Mot de passe..." required/>
<input id="ConfirmeMotDePasse" value={confPassword} onChange={handleChangeConfPassword} name='confimPassword' className="texte_zone" type="text" placeholder="Confirmation mot de passe..." required/>
<input id="NouvMotDePasse" value={newPassword} onChange={handleChangeNewPassword} name='newPassword' className="texte_zone" type="text" placeholder="Nouveau mot de passe..." required/>
</tr>
</table>
<div className="bouton_submit">
<button className="bouton_val" type="submit">Valider</button>
<NavLink className="bouton_ann" to="/Admin_list">Retour</NavLink>
</div>
</form>
</div>
</div>
</div>
);
};
export default RestartPassword;
Loading…
Cancel
Save