accessGate/services/groups.service.js

116 lines
3.2 KiB
JavaScript

const Group = require('../model/group.model')
const Member = require('../model/member.model')
const User = require('../model/user.model')
const Server = require('../model/server.model')
const Access = require('../model/access.model')
const regexp_space = /^\S*$/;
async function addGroup(name) {
Group.findOne({where: { name: name}}).then((result) => {
if (result) {
return false;
} else {
if (name && regexp_space.test(name)) {
Group.create({
name: name.toLowerCase(),
}).then((result) => {
console.log('Group ' + result.name + ' added to database')
});
} else {
return false;
}
}
});
}
async function delGroup(name) {
Group.findOne({where: { name: name}}).then((result) => {
if (result && regexp_space.test(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')
})
}
});
Access.findAll({where: { groupName: name}}).then((accesses) => {
for (x in accesses) {
accesses[x].destroy().then(() => {
console.log('access ' + accesses[x].userId + ' deleted from database')
})
}
});
});
} else {
return false;
}
});
}
async function getGroupsWithMembers() {
Group.hasMany(Member);
Member.belongsTo(Group);
const count = await Group.findAll({ include: Member });
return count
}
async function groupUserList(groupName) {
User.hasMany(Member);
Member.belongsTo(User);
const users = await User.findAll({ include: Member });
var result = []
for (x in users) {
try {
for (y in users[x].dataValues.members) {
if (users[x].dataValues.members[y].dataValues.groupName === groupName) {
result[x] = (users[x].dataValues)
}
}
} catch (error) {
}}
return result
};
async function groupServerList(groupName) {
Server.hasMany(Access);
Access.belongsTo(Server);
const servers = await Server.findAll({ include: Access });
var result = []
for (x in servers) {
try {
for (y in servers[x].dataValues.accesses) {
if (servers[x].dataValues.accesses[y].dataValues.groupName === groupName) {
result[x] = (servers[x].dataValues)
}
}
} catch (error) {
}}
return result
};
groupServerList('group1').then(
(result) => {
console.log(result)
}
)
module.exports = {
addGroup,
delGroup,
groupUserList,
getGroupsWithMembers,
groupServerList
};