Compare commits

...

5 commits

2 changed files with 39 additions and 27 deletions

View file

@ -780,7 +780,8 @@ expressMiddleware(server, {
token, token,
new TextEncoder().encode(process.env.SECRET_KEY), new TextEncoder().encode(process.env.SECRET_KEY),
); );
console.log('Token verified:', verify.payload); // Log du payload du token // Log du payload du token
console.log('Token verified:', verify.payload);
user = await new UserService().findUserByEmail( user = await new UserService().findUserByEmail(
verify.payload.email, verify.payload.email,
); );
@ -816,8 +817,9 @@ export const customAuthChecker: AuthChecker<MyContext> = (
roles roles
) => { ) => {
if (context.user) { if (context.user) {
//si l 'utilisateur est connecté // si l 'utilisateur est connecté
//vérifier que le user à le role demandé si le tableau de roles à une longueur > 1 // vérifier que le user a le role demandé
// si le tableau de roles a une longueur > 1
if (roles.length > 0) { // si un role est indiqué au décorateur if (roles.length > 0) { // si un role est indiqué au décorateur
//et que le user a le role parmi ce tableau //et que le user a le role parmi ce tableau
if (roles.includes(context.user.role)) { if (roles.includes(context.user.role)) {
@ -1317,7 +1319,12 @@ import styles from '../components/MainNav/MainNav.module.css';
function CategoryButton({name, id}: {name: string, id: string}) { function CategoryButton({name, id}: {name: string, id: string}) {
return ( return (
<div> <div>
<Button className={styles.categoryButton} variant="contained" href={`/categories/${id}`} style={{width: 285}}>{name}</Button> <Button
className={styles.categoryButton}
variant="contained"
href={`/categories/${id}`}
style={{width: 285}}
>{name}</Button>
</div> </div>
); );
} }
@ -1906,7 +1913,10 @@ Ensuite, nous avons mis en place l'environnement serveur requis pour le déploie
healthcheck: healthcheck:
test: test:
- CMD-SHELL - CMD-SHELL
- "curl -f http://backend:4000/graphql?query=%7B__typename%7D -H 'Apollo-Require-Preflight: true' || exit 1" - >
curl -f http://backend:4000/graphql?query=%7B__typename%7D
-H 'Apollo-Require-Preflight: true'
|| exit 1
interval: 10s interval: 10s
timeout: 30s timeout: 30s
retries: 5 retries: 5
@ -1996,7 +2006,8 @@ Ensuite, nous avons mis en place l'environnement serveur requis pour le déploie
# Caddyfile # Caddyfile
1123-jaune-1.wns.wilders.dev { 1123-jaune-1.wns.wilders.dev {
# Redirect request to production running on port 8000 reverse_proxy localhost:8000 # Redirect request to production running on port 8000
reverse_proxy localhost:8000
# log # log
log { log {
@ -2005,7 +2016,8 @@ Ensuite, nous avons mis en place l'environnement serveur requis pour le déploie
} }
staging.1123-jaune-1.wns.wilders.dev { staging.1123-jaune-1.wns.wilders.dev {
# Redirect request to staging running on port 8001 reverse_proxy localhost:8001 # Redirect request to staging running on port 8001
reverse_proxy localhost:8001
# log # log
log { log {
@ -2014,29 +2026,31 @@ Ensuite, nous avons mis en place l'environnement serveur requis pour le déploie
} }
ops.1123-jaune-1.wns.wilders.dev { ops.1123-jaune-1.wns.wilders.dev {
# Redirect request to webhook service running on port 9000 reverse_proxy localhost:9000 # Redirect request to webhook service running on port 9000
reverse_proxy localhost:9000
# log # log
log { log {
output file /var/log/caddy/ops.log output file /var/log/caddy/ops.log
} }
} }
``` ```
```javascript ```javascript
// webhook.conf // webhook.conf
[ [
{ {
"id": "update-staging", "id": "update-staging",
"execute-command": "/home/wns_student/apps/oros/staging/fetch-and-deploy.sh", "execute-command": "/home/wns_student/apps/oros/staging/fetch-and-deploy.sh",
"command-working-directory": "/home/wns_student/apps/oros/staging/" "command-working-directory": "/home/wns_student/apps/oros/staging/"
}, },
{ {
"id": "update-prod", "id": "update-prod",
"execute-command": "/home/wns_student/apps/oros/prod/fetch-and-deploy.sh", "execute-command": "/home/wns_student/apps/oros/prod/fetch-and-deploy.sh",
"command-working-directory": "/home/wns_student/apps/oros/prod/" "command-working-directory": "/home/wns_student/apps/oros/prod/"
} }
] ]
``` ```
\newpage \newpage
# Securité de l’application # Securité de l’application
@ -2072,8 +2086,6 @@ La securité d’une application est extrêmement importante. On ne peut pas pen
* Security Headers : Middleware peut ajouter des security headers HTTP aux réponse, ce qui donne une couche additionnelle de sécurité contre les attaques. * Security Headers : Middleware peut ajouter des security headers HTTP aux réponse, ce qui donne une couche additionnelle de sécurité contre les attaques.
* Gestion des Sessions : Middleware peut gérer les cookies de session secures et implemente les mesures comme expiration des cookies et secure flags pour protéder les données de session. * Gestion des Sessions : Middleware peut gérer les cookies de session secures et implemente les mesures comme expiration des cookies et secure flags pour protéder les données de session.
\newpage
# Annexe (diagramme de classe) # Annexe (diagramme de classe)
![](images/class diagram.jpg){height=99%} ![](images/class diagram.jpg){height=95%}