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

admin dashboard, database updated (members, groups), group setup and permissions

This commit is contained in:
Valentin PUCCETTI
2023-09-10 20:52:09 +02:00
parent 14dad1f5f1
commit a3b8a865fd
21 changed files with 723 additions and 34 deletions

View File

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

59
services/group.service.js Normal file
View File

@@ -0,0 +1,59 @@
const Group = require('../model/group.model')
const Members = require('../model/member.model')
const regexp = /^\S*$/;
const User = require('../model/user.model')
async function addGroup(name) {
Group.findOne({where: { name: name}}).then((result) => {
if (result) {
return false;
} else {
if (name && regexp.test(name)) {
Group.create({
name: name,
}).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.test(name)) {
result.destroy()
.then(() => {
console.log('group ' + result.name + ' added to database')
});
} else {
return false;
}
});
}
async function groupUserList(groupName) {
User.hasMany(Members);
Members.belongsTo(User);
const users = await User.findAll({ include: Members });
var result = []
for (x in users) {
try {
if (users[x].dataValues.members[0].dataValues.groupName === groupName) {
result[x] = (users[x].dataValues)
}
} catch (error) {
}}
return result
};
module.exports = {
addGroup,
delGroup,
groupUserList
};

49
services/keys.service.js Normal file
View File

@@ -0,0 +1,49 @@
const Key = require('../model/key.model')
const regexp = /^\S*$/;
async function addKey(content, name, idOwner) {
const id_key = idOwner.toString() + name;
Key.findOne({where: { idKey: id_key}}).then((result) => {
if (result) {
return false;
} else {
if (content && name && idOwner && regexp.test(name, idOwner, content)) {
Key.create({
idKey: id_key,
idOwner: idOwner,
content: content,
name: name,
}).then((key) => {
console.log('key ' + key.idKey + ' added to database')
});
} else {
return false;
}
}
});
}
async function delKey(id, idOwner) {
Key.findOne({where: { idKey: id}}).then((result) => {
if (result && regexp.test(id,idOwner)) {
if (result.idOwner !== idOwner) {
return false;
} else {
result.destroy()
.then(() => {
console.log('key ' + result.idKey + ' added to database')
});
}
} else {
return false;
}
});
}
module.exports = {
addKey,
delKey
};

21
services/users.service.js Normal file
View File

@@ -0,0 +1,21 @@
const User = require('../model/user.model')
async function userList(code) {
return await User.findAll()
}
function makeAdmin(userId) {
User.findOne({ where: { id: userId } }).then((result) => {
if (result) {
result.admin = true;
result.save().then(() => {
console.log('user ' + result.login + ' is now admin')
});
}
});
}
module.exports = {
userList,
makeAdmin
};