Le but de ce workshop est d’associer chaque objet créé à un utilisateur, ce qui permet ensuite d’afficher à l’utilisateur que les objets qu’il a créé. Rappel du workshop précédent, Workshop 9 - Design de sa base de donnée.
Tous les synthériseurs sont créés par un utilisateur, on peut systématiquement ajouter la relation suivante :
Cette relation est une relation “many-to-one”, soit “plusieurs synthétiseurs on été créé par un utilisateur” et “un utilisateur a créé zéro ou plusieurs synthétiseurs”.
Dans cette page d’accueil, un utilisateur peut voir tous les synthétiseurs de tout le monde. On cherche à ce qu’il puisse voir seulement ceux qu’il a créé:
Puisque cette page est authentifiée, le backend reçoit systématiquement l’utilisateur qui fait la requête (POST ou GET).
String username = SecurityContextHolder.getContext().getAuthentication().getName();
User user = userRepository.findById(username).orElseThrow();
const jwt = require('jsonwebtoken')
const User = require('../models/User')
const auth = async(req, res, next) => {
const token = req.header('Authorization').replace('Bearer ', '')
const data = jwt.verify(token, process.env.JWT_KEY)
try {
const user = await User.findOne({ _id: data._id, 'tokens.token': token })
// ...
} catch (error) {
// ...
}
}
module.exports = auth
Puis, lorsque l’utilisateur fait un GET, il faut filtrer les éléments pour cet utilisateur, pour que l’utilisateur ne voit que ses synths:
Les utilisateurs ont des “role”, il est possible d’afficher du contenu en fonction du rôle de l’utilisateur:
Workshop suivant : Workshop 11 - Design BDD 03 - Ajouter une relation