Skip to content
Snippets Groups Projects
Commit d4fdbee2 authored by Fabien Zucchet's avatar Fabien Zucchet
Browse files

Add page gestion des administrateurs

parent 191ff8e4
No related branches found
No related tags found
No related merge requests found
......@@ -9,4 +9,60 @@ const dbConfig = {
database: dbdatabase
};
module.exports = {}
function getAdministrateurs(req, res){
var con = mysql.createConnection(dbConfig);
var query = "SELECT id,login FROM Admin;"
con.connect();
con.query(query, (err, result) => {
if(err){
console.log(err)
return res.send({success: false})
}
return res.send(result)
});
con.end();
};
function addNewAdministrateur(req, res){
var con = mysql.createConnection(dbConfig);
var query = "INSERT INTO `Admin` (`login`) VALUES ('"+req.body.login+"');"
con.connect();
con.query(query, (err, result) => {
if(err){
console.log(err)
return res.send({success: false})
}
return res.send(result)
});
con.end();
};
function updateAdministrateur(req, res){
var con = mysql.createConnection(dbConfig);
var query = "UPDATE Admin SET login = '"+req.body.login+"' WHERE id="+req.body.id+";"
con.connect();
con.query(query, (err, result) => {
if(err){
console.log(err)
return res.send({success: false})
}
return res.send(result)
});
con.end();
}
function deleteAdministrateur(req, res){
var con = mysql.createConnection(dbConfig);
var query = "DELETE FROM Admin WHERE id="+req.body.id+";"
con.connect();
con.query(query, (err, result) => {
if(err){
console.log(err)
return res.send({success: false})
}
return res.send(result)
});
con.end();
}
module.exports = {getAdministrateurs,addNewAdministrateur,updateAdministrateur,deleteAdministrateur}
......@@ -14,5 +14,6 @@ router.get('/equipes', controller.equipe.getEquipes);
router.get('/classement_individuel', controller.participant.getClassementIndividuel);
router.get('/participants', controller.participant.getParticipants);
router.get('/objectifs', controller.objectifs.getClassementObjectifs);
router.get('/administrateurs', controller.administrateur.getAdministrateurs);
module.exports = router;
......@@ -25,5 +25,9 @@ router.post('/update_objectif/description', controller.objectifs.updateObjectifD
router.post('/update_objectif/value', controller.objectifs.updateObjectifValue);
router.post('/update_objectif/coef', controller.objectifs.updateObjectifCoef);
router.post('/delete_objectif', controller.objectifs.deleteObjectif);
router.post('/new_administrateur', controller.administrateur.addNewAdministrateur);
router.post('/update_administrateur', controller.administrateur.updateAdministrateur);
router.post('/delete_administrateur', controller.administrateur.deleteAdministrateur);
module.exports = router;
......@@ -114,6 +114,17 @@ INSERT INTO `Score` (`id`, `participantId`, `equipeId`, `score`, `createdAt`) VA
(3, NULL, 4, 1500, '2020-03-19 23:22:16'),
(4, 5, 1, 50000, '2020-03-22 13:27:50');
CREATE TABLE `Admin` (
`id` int(11) NOT NULL,
`login` varchar(100) NOT NULL,
`name` varchar(100),
`password` varchar(100)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO `Admin` (`id`, `login`, `name`) VALUES
(1, 'admin', 'admin'),
(2, '2019zucchet', 'Fabien Zucchet');
--
-- Index pour les tables déchargées
--
......@@ -144,6 +155,9 @@ ALTER TABLE `Participant`
ALTER TABLE `Score`
ADD PRIMARY KEY (`id`);
ALTER TABLE `Admin`
ADD PRIMARY KEY (`id`);
--
-- AUTO_INCREMENT pour les tables déchargées
--
......@@ -171,6 +185,10 @@ ALTER TABLE `Participant`
--
ALTER TABLE `Score`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5;
ALTER TABLE `Admin`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;
COMMIT;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
......
import React from 'react';
import { TableauAdministrateursAdmin } from './gestionAdministrateurs/TableauAdministrateursAdmin';
import { useIsAdmin } from '../../hooks/authTools';
export default function(){
......@@ -8,5 +9,19 @@ export default function(){
}
return (
<div>Gestion des administrateurs</div>
<div class="container">
<div class="row">
<div class="col">
<h1>Gestion des administrateurs</h1>
</div>
<div class="col-3">
<a class="btn btn-secondary" href="/admin/administrateurs/nouveau" role="button">Nouvel administrateur</a>
</div>
</div>
<div class="row">
<div class="col">
<TableauAdministrateursAdmin />
</div>
</div>
</div>
)};
import React from 'react';
import axios from 'axios';
export function DeleteAdministrateur({ match, location }){
const { params: { id } } = match;
axios.post('/api/admin/delete_administrateur',{id: id})
.then((response) => {
alert('Administrateur supprimé');
window.location='/admin/admins';
}, (error) => {
console.log(error);
});
return(
<div><h1>Suppression...</h1></div>
)
};
import React from 'react';
import axios from 'axios';
import { useForm } from 'react-hook-form';
export function UpdateAdministrateur({ match, location }){
const { params: { id } } = match;
const editAdministrateur = (props) => {
axios.post('/api/admin/update_administrateur',{id: props.id, login:props.login})
.then((response) => {
alert('Administrateur mis à jour');
window.location='/admin/admins/'
}, (error) => {
console.log(error);
});
};
const { register, handleSubmit } = useForm();
const onSubmit = data => {editAdministrateur({id:id,login:data.login})}
return(
<div>
<form onSubmit={handleSubmit(onSubmit)}>
<div class="form-group">
<label for="loginInput">Login</label>
<input type="text" class="form-control" id="loginInput" name="login" ref={register}/>
</div>
<button type="submit" class="btn btn-secondary">Modifier</button>
</form>
</div>
)
};
import React from 'react';
import axios from 'axios';
import { useForm } from 'react-hook-form';
export function AddAdministrateurForm(){
const addAdministrateur = (props) => {
axios.post('/api/admin/new_administrateur',
{
login: props.login
})
.then((response) => {
alert("Administrateur ajouté");
window.location='/admin/admins';
}, (error) => {
console.log(error);
});
};
const { register, handleSubmit } = useForm();
const onSubmit = data => {addAdministrateur(data)}
return(
<div>
<form onSubmit={handleSubmit(onSubmit)}>
<div class="form-group">
<label for="loginInput">Nom</label>
<input type="text" class="form-control" id="loginInput" name="login" ref={register} required/>
</div>
<button type="submit" class="btn btn-secondary">Ajouter</button>
</form>
</div>
)
};
import React, { useState } from 'react';
import axios from 'axios';
export function TableauAdministrateursAdmin(){
var [administrateurs,setAdministrateurs] = useState([]);
axios.get('/api/administrateurs').then((response) => setAdministrateurs(response.data))
return(
<table class="table">
<thead class="thead-light">
<tr>
<th scope="col">Login</th>
<th scope="col">Modifier</th>
<th scope="col">Supprimer</th>
</tr>
</thead>
<tbody>
{administrateurs.map((item) => {
var editUrl='/admin/admins/edit/'+item.id;
var deleteUrl='/admin/admins/delete/'+item.id;
return (
<tr>
<th scope="row">{item.login}</th>
<td><a class="btn btn-secondary" href={editUrl} role="button">Modifier</a></td>
<td><a class="btn btn-danger" href={deleteUrl} role="button">Supprimer</a></td>
</tr>
)
})}
</tbody>
</table>
)
};
......@@ -23,6 +23,10 @@ import { DeleteParticipant } from './app/administration/gestionParticipants/Dele
import { AddObjectifForm } from './app/administration/gestionObjectifs/NouvelObjectif';
import { AfficheObjectif, UpdateObjectifName, UpdateObjectifDescription, UpdateObjectifValue, UpdateObjectifCoef } from './app/administration/gestionObjectifs/AfficheObjectif';
import { DeleteObjectif } from './app/administration/gestionObjectifs/DeleteObjectif';
import { AddAdministrateurForm } from './app/administration/gestionAdministrateurs/NouvelAdministrateur';
import { UpdateAdministrateur } from './app/administration/gestionAdministrateurs/EditAdministrateur';
import { DeleteAdministrateur } from './app/administration/gestionAdministrateurs/DeleteAdministrateur';
import './index.css';
import 'bootstrap/dist/css/bootstrap.min.css';
......@@ -60,6 +64,9 @@ ReactDOM.render(
<Route path="/admin/objectifs/edit/value/:id" component={UpdateObjectifValue} />
<Route path="/admin/objectifs/edit/coef/:id" component={UpdateObjectifCoef} />
<Route path="/admin/objectifs/delete/:id" component={DeleteObjectif} />
<Route path="/admin/admins/nouveau" component={AddAdministrateurForm} />
<Route path="/admin/admins/edit/:id" component={UpdateAdministrateur} />
<Route path="/admin/admins/delete/:id" component={DeleteAdministrateur} />
</div>
</Router>,
document.getElementById('root')
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment