59 lines
No EOL
1.5 KiB
JavaScript
59 lines
No EOL
1.5 KiB
JavaScript
|
|
import {
|
|
Group,
|
|
User
|
|
} from "../../../../lib/database/connect.mjs";
|
|
|
|
import {
|
|
getConfig
|
|
} from "../../../../lib/config.mjs";
|
|
|
|
|
|
export const get = async function (request, response) {
|
|
if (request.getAuthState() != 'authenticated') {
|
|
response.set('HX-Redirect', '/login').status(401).end();
|
|
return;
|
|
}
|
|
|
|
const dbGroup = await Group.findByPk(request.params.groupid);
|
|
const config = await getConfig();
|
|
|
|
const userList = await User.findAll({
|
|
attributes: [
|
|
'id',
|
|
'uidnumber',
|
|
'name',
|
|
'othergroups',
|
|
'primarygroup'
|
|
]
|
|
}).filter((user) => {
|
|
// check if users primary group is the group being edited
|
|
if (user.primarygroup == dbGroup.gidnumber) {
|
|
return true;
|
|
}
|
|
// check if users other groups include the group being edited
|
|
if (user.othergroups.split(',').map(gidnumber => parseInt(gidnumber)).includes(dbGroup.gidnumber)) {
|
|
return true;
|
|
}
|
|
// else exclude user
|
|
return false;
|
|
}).map((user) => {
|
|
return {
|
|
id: user.id,
|
|
name: user.name,
|
|
uidnumber: user.uidnumber,
|
|
};
|
|
});
|
|
|
|
response.render(`views/htmx/admin/editGroup.njk`, {
|
|
group: {
|
|
id: dbGroup.id,
|
|
name: dbGroup.name,
|
|
gidnumber: dbGroup.gidnumber,
|
|
},
|
|
ldap: {
|
|
baseDN: config.ldap.baseDN,
|
|
},
|
|
userList: userList
|
|
});
|
|
} |