Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Damien Armillon
API Toucan
Commits
57e02899
Commit
57e02899
authored
May 11, 2019
by
Damien
Browse files
Add oauth for the front
parent
8e0ec185
Changes
4
Hide whitespace changes
Inline
Side-by-side
backend/routes/routesToucan.js
View file @
57e02899
...
...
@@ -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,38 +85,41 @@ router.route("/img/:id")
});
// Supprime le toucan avec l'id donné
router
.
route
(
"
/delete/:id
"
)
.
post
(
celebrate
({
params
:
validId
}),
function
(
req
,
res
)
{
Toucan
.
deleteOne
({
_id
:
req
.
params
.
id
},
function
(
err
)
{
if
(
err
)
{
res
.
send
(
500
).
send
(
err
);
}
else
{
// Si on a supprimée l'entrée, on supprime le pdf
var
pdfPath
=
path
.
format
({
dir
:
env
.
savedExtensions
[
1
].
path
,
name
:
req
.
params
.
id
,
ext
:
"
.pdf
"
});
fs
.
unlink
(
pdfPath
,
(
err
)
=>
{
if
(
err
)
{
res
.
status
(
500
).
send
(
err
);
}
else
{
// Si on a supprimé le pdf on supprime l'image
var
imgPath
=
path
.
join
(
env
.
savedExtensions
[
0
].
path
,
"
/
"
,
req
.
params
.
id
);
env
.
savedExtensions
[
0
].
extensions
.
forEach
(
ext
=>
{
if
(
fs
.
existsSync
(
imgPath
+
ext
)){
imgPath
=
imgPath
+
ext
;
fs
.
unlink
(
imgPath
,
(
err
)
=>
{
if
(
err
)
{
res
.
status
(
500
).
send
(
err
);
}
else
{
res
.
send
(
"
Toucan supprimé
"
);
}
});
}
});
}
});
}
});
});
.
post
(
isLogged
,
celebrate
({
params
:
validId
}),
function
(
req
,
res
)
{
Toucan
.
deleteOne
({
_id
:
req
.
params
.
id
},
function
(
err
)
{
if
(
err
)
{
res
.
send
(
500
).
send
(
err
);
}
else
{
// Si on a supprimée l'entrée, on supprime le pdf
var
pdfPath
=
path
.
format
({
dir
:
env
.
savedExtensions
[
1
].
path
,
name
:
req
.
params
.
id
,
ext
:
"
.pdf
"
});
fs
.
unlink
(
pdfPath
,
(
err
)
=>
{
if
(
err
)
{
res
.
status
(
500
).
send
(
err
);
}
else
{
// Si on a supprimé le pdf on supprime l'image
var
imgPath
=
path
.
join
(
env
.
savedExtensions
[
0
].
path
,
"
/
"
,
req
.
params
.
id
);
env
.
savedExtensions
[
0
].
extensions
.
forEach
(
ext
=>
{
if
(
fs
.
existsSync
(
imgPath
+
ext
)){
imgPath
=
imgPath
+
ext
;
fs
.
unlink
(
imgPath
,
(
err
)
=>
{
if
(
err
)
{
res
.
status
(
500
).
send
(
err
);
}
else
{
res
.
send
(
"
Toucan supprimé
"
);
}
});
}
});
}
});
}
});
});
module
.
exports
=
router
;
\ No newline at end of file
backend/utils/authentification.js
0 → 100644
View file @
57e02899
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
front/src/view/FormToucan.js
View file @
57e02899
...
...
@@ -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
'
,
body
:
form
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
)
=>
{
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
}))
}};
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
((
err
)
=>
this
.
setState
({
responseMessage
:
err
}))
}
...
...
front/src/view/showToucan/ModalSuppression.js
View file @
57e02899
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
là
où
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
>
)
}
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment