Skip to content
Snippets Groups Projects
Commit 57e02899 authored by Damien's avatar Damien
Browse files

Add oauth for the front

parent 8e0ec185
No related branches found
No related tags found
No related merge requests found
......@@ -5,6 +5,7 @@ var { celebrate } = require("celebrate");
var { newToucan, validId, validLimit } = require("../utils/schema");
var env = require("../.env");
var isLogged = require("../utils/authentification");
var upload = require("../utils/fileSaver");
var Toucan = require("../models/modelToucan");
var router = express.Router();
......@@ -19,13 +20,14 @@ router.route("/toucans")
if (err) {
res.send(err);
} else {
res/*.header("Access-Control-Allow-Origin","*")*/.json(toucans);
res.json(toucans);
}
});
})
// Une route pour créer un toucan
.post(
isLogged,
upload.fields([{name:"toucan", maxCount:1 }, {name:"cover", maxCount:1 }]),
celebrate({body:newToucan}),
function(req,res) {
......@@ -83,7 +85,10 @@ router.route("/img/:id")
});
// Supprime le toucan avec l'id donné
router.route("/delete/:id")
.post(celebrate({params: validId}), function(req,res) {
.post(
isLogged,
celebrate({params: validId}),
function(req,res) {
Toucan.deleteOne({_id:req.params.id},
function(err) {
if (err) {
......
var jwt = require("jsonwebtoken");
var env = require("../.env");
/**
* Un middleware qui vérifie que l'utilisateur ayant envoyé
* la requete soit bien authentifié.
*/
function isLogged(req, res, next) {
const token = req.headers.token;
if (!token) {
res.status(401).end("Vous n'êtes pas authentifié");
}
try {
if(jwt.verify(token,env.tokenSecret)) { // Si le token n'est pas compromis
next();
} else {
res.status(400).end("Une erreur s'est produite lors de l'authentification");
}
} catch (err) {
res.status(400).end("Une erreur s'est produite lors de l'authentification");
}
}
module.exports = isLogged;
\ No newline at end of file
......@@ -60,27 +60,24 @@ class FormToucan extends Component {
form.append("title",title)
form.append("toucan",toucan)
form.append("cover",cover)
fetch(`${env.backURL}/toucan/toucans`,{
method: 'POST',
headers:{token: localStorage.getItem("token")},
body: form
})
.then((response) => {
if (response.ok) { // Si la réponse est bonne on reload tout simplement
window.location.reload()
} else {
try {
response.json().then((json)=>{
response.json()
.then((json)=>{
if(json.errmsg.split(" ")[0]==="E11000"){ // L'erreur la plus probable
this.setState({responseMessage:"La date sélectionnée existe déjà"})
} else {
this.setState({responseMessage:json.errmsg})
}
});
} catch {
response.text().then(text => this.setState({responseMessage:text}))
}};
})
};
} )
.catch((err)=> this.setState({responseMessage:err}))
}
......
import React, {Component} from 'react'
import {Modal, Button, Image} from 'semantic-ui-react'
import {Modal, Button, Image,Message} from 'semantic-ui-react'
import env from '../../.env'
class ModalSupression extends Component {
state = {error:''};
deleteToucan(id) {
fetch(`${env.backURL}/toucan/delete/${id}`,{
method: "Post"
method: "Post",
headers:{token: localStorage.getItem("token")}
})
.then((response) => {
if (response.ok) {
window.location.reload()
} else {
response.text()
.then((error) => this.setState({error:error}))
}
})
.then(() => window.location.reload())
.catch(err => console.log(err))
}
......@@ -24,6 +34,7 @@ class ModalSupression extends Component {
<Button positive onClick={()=>this.props.closeModal()}> Laisser le Toucan il est</Button>
<Button negative onClick={()=>this.deleteToucan(this.props.toucanId)}>Supprimer le Toucan</Button>
</Modal.Actions>
{this.state.error && <Message negative content={this.state.error}/>}
</Modal>
)
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment