1
0
mirror of synced 2025-10-28 18:19:17 +00:00

bug fix when multiple memberships & minors

This commit is contained in:
Valentin PUCCETTI
2023-09-10 22:22:28 +02:00
parent a3b8a865fd
commit c8efefdc4e
9 changed files with 108 additions and 70 deletions

View File

@@ -3,7 +3,7 @@ const Sequelize = require('sequelize');
const sequelize = new Sequelize('accessgate', 'user', 'password', {
dialect: 'sqlite',
host: './database.db',
logging: false
logging: true
})

View File

@@ -1,5 +1,5 @@
const Group = require('../model/group.model')
const Members = require('../model/member.model')
const Member = require('../model/member.model')
const regexp = /^\S*$/;
const User = require('../model/user.model')
@@ -28,6 +28,13 @@ async function delGroup(name) {
result.destroy()
.then(() => {
console.log('group ' + result.name + ' added to database')
Member.findAll({where: { groupName: name}}).then((members) => {
for (x in members) {
members[x].destroy().then(() => {
console.log('member ' + members[x].userId + ' deleted from database')
})
}
});
});
} else {
return false;
@@ -37,23 +44,39 @@ async function delGroup(name) {
});
}
async function groupUserList(groupName) {
User.hasMany(Members);
Members.belongsTo(User);
const users = await User.findAll({ include: Members });
async function userGroupList(userId) {
const members = await Member.findAll({where: { userId: userId}})
var result = []
for (x in members) {
result[x] = (members[x].dataValues)
}
return result
}
async function groupUserList(groupName) {
User.hasMany(Member);
Member.belongsTo(User);
const users = await User.findAll({ include: Member });
var result = []
console.log(users)
for (x in users) {
try {
if (users[x].dataValues.members[0].dataValues.groupName === groupName) {
result[x] = (users[x].dataValues)
for (y in users[x].dataValues.members) {
if (users[x].dataValues.members[y].dataValues.groupName === groupName) {
result[x] = (users[x].dataValues)
}
}
} catch (error) {
}}
console.log(result)
return result
};
module.exports = {
addGroup,
delGroup,
groupUserList
groupUserList,
userGroupList
};

View File

@@ -0,0 +1,54 @@
const Member = require('../model/member.model')
const Group = require("../model/group.model");
const User = require("../model/user.model");
const regexp = /^\S*$/;
async function addMember(userId, groupName) {
Group.findOne({ where: { name: groupName} }).then((result) => {
if (result) {
User.findOne({ where: { id: userId } }).then((user) => {
if (user) {
Member.findOne({ where: { groupname: result.name, userId: user.id } }).then((member) => {
if (!member) {
Member.create({
userId: user.id,
groupName: result.name
}).then((member) => {
console.log('member added to database' + '(' + member.userId + ',' + member.groupName + ')')
});
}
})
}
})
}
})
}
async function delMember(userId, groupName) {
Group.findOne({ where: { name: groupName} }).then((result) => {
if (result) {
User.findOne({ where: { id: userId } }).then((user) => {
if (user) {
Member.findOne({ where: { groupname: result.name, userId: user.id } }).then((member) => {
if (member) {
member.destroy()
.then(() => {
console.log('member deleted from database' + '(' + member.userId + ',' + member.groupName + ')')
});
}
})
}
})
}
})
}
module.exports = {
addMember,
delMember
};

View File

@@ -15,7 +15,7 @@ function makeAdmin(userId) {
});
}
module.exports = {
userList,
makeAdmin
};