From 3b65842697d5e2f523292f271828a8804a478fe8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sascha=20K=C3=BChl?= Date: Mon, 26 May 2025 15:41:31 +0200 Subject: [PATCH] fixed user, role and user-role association --- backend/controllers/user.controller.js | 8 +++++-- backend/models/role.model.js | 3 ++- backend/models/user.model.js | 1 + backend/models/userRole.model.js | 30 ++++++++++++++++++++++++++ 4 files changed, 39 insertions(+), 3 deletions(-) create mode 100644 backend/models/userRole.model.js diff --git a/backend/controllers/user.controller.js b/backend/controllers/user.controller.js index e81b497..28c352f 100644 --- a/backend/controllers/user.controller.js +++ b/backend/controllers/user.controller.js @@ -21,10 +21,14 @@ exports.findAll = (req, res) => { exports.findOne = (req, res) => { const id = req.params.id; - User.findByPk(id) + User.findByPk(id, { + include: ['roles'] + }) .then(data => { if (data) { - res.send(data); + let dts = data.toJSON(); + dts.roles = data.roles.map(role => "ROLE_" + role.name.toUpperCase()); + res.send(dts); } else { res.status(404).send({ message: `Cannot find user with id=${id}.` diff --git a/backend/models/role.model.js b/backend/models/role.model.js index bb418f3..a75f27c 100644 --- a/backend/models/role.model.js +++ b/backend/models/role.model.js @@ -10,6 +10,7 @@ module.exports = (sequelize, DataTypes) => { Role.belongsToMany(models.User, { through: "UserRoles", foreignKey: 'roleId', + otherKey: 'userId', as: 'users', }); } @@ -25,4 +26,4 @@ module.exports = (sequelize, DataTypes) => { tableName: "Roles", }); return Role; -}; \ No newline at end of file +}; diff --git a/backend/models/user.model.js b/backend/models/user.model.js index 16901f8..377c5ac 100644 --- a/backend/models/user.model.js +++ b/backend/models/user.model.js @@ -11,6 +11,7 @@ module.exports = (sequelize, DataTypes) => { User.belongsToMany(models.Role, { through: "UserRoles", foreignKey: 'userId', + otherKey: 'roleId', as: 'roles', }); User.belongsTo(models.Auth, { diff --git a/backend/models/userRole.model.js b/backend/models/userRole.model.js new file mode 100644 index 0000000..7d5183d --- /dev/null +++ b/backend/models/userRole.model.js @@ -0,0 +1,30 @@ +const { Model } = require('sequelize'); + +module.exports = (sequelize, DataTypes) => { + class UserRole extends Model { + static associate(models) {} + } + + UserRole.init({ + userId: { + type: DataTypes.INTEGER, + references: { + model: 'Users', + key: 'id' + } + }, + roleId: { + type: DataTypes.INTEGER, + references: { + model: 'Roles', + key: 'id' + } + } + }, { + sequelize, + modelName: 'UserRole', + tableName: 'UserRoles' + }); + + return UserRole; +};