working on permissions

This commit is contained in:
2022-04-18 17:15:24 +02:00
parent 2b9a185bfc
commit fccfea671a
6 changed files with 100 additions and 13 deletions

View File

@@ -1,3 +1,9 @@
function addPermission(userEmail,permission){
if (confirm("Really give permission to "+userEmail+"?")){
$.post('/api/user/addpermission',{email:userEmail,permissions:permission},reload,'json');
}
}
function disableList(listEmail){
$.post('/api/list/disable',{list:listEmail},showListResult,'json');
}
@@ -6,6 +12,13 @@ function dropList(listEmail){
console.log('dopList('+listEmail+')');
}
function dropPermission(userEmail,permission){
if (confirm("Really withdraw permission from "+userEmail+"?")){
$.post('/api/user/droppermission',{email:userEmail,permissions:permission},reload,'json');
}
}
function enableList(listEmail){
$.post('/api/list/enable',{list:listEmail},showListResult,'json');
}
@@ -55,7 +68,7 @@ function showListOfEditableLists(data){
let select = $('<select/>',{name:addr}).change(function () {
let action = $(this).children("option:selected").val();
let list = $(this).attr('name');
if (confirm("This will "+action+" '"+list+"'. Are you sure?"))self[action+'List'](list);
if (confirm("This will "+action+" '"+list+"'. Are you sure?")) self[action+'List'](list);
});
$('<option/>').text('Actions').appendTo(select);
['enable','disable','drop','hide','show','test'].forEach(val => $('<option/>',{value:val}).text(val).appendTo(select));
@@ -70,7 +83,6 @@ function showListOfEditableLists(data){
$('<td/>').text(list.smtp_user).appendTo(row);
row.appendTo('#listlist');
}
console.log(data.user);
if (data.user.permissions.includes('create lists')){
$('a[href=add_list]').show();
} else {
@@ -97,7 +109,6 @@ function showListList(data){
}
function showListResult(result){
console.log(result);
if ('error' in result){
alert(result.error);
return;
@@ -123,6 +134,7 @@ function showMembers(data){
}
function showUserList(data){
let isAdmin = data.user.permissions.includes('admin');
for (let i in data.users){
let user = data.users[i];
let row = $('<tr/>');
@@ -130,9 +142,23 @@ function showUserList(data){
$('<td/>').text(user.email).appendTo(row);
$('<td/>').text(user.password).appendTo(row);
$('<td/>').text(user.permissions).appendTo(row);
let permissions = $('<span/>');
if (isAdmin){
if (user.permissions.includes('admin')){
$('<button/>').text("- admin").click(() => dropPermission(user.email,1)).appendTo(permissions);
} else {
$('<button/>').text("+ admin").click(() => addPermission(user.email,1)).appendTo(permissions);
}
if (user.permissions.includes('create lists')){
$('<button/>').text("- create lists").click(() => dropPermission(user.email,2)).appendTo(permissions);
} else {
$('<button/>').text("+ create lists").click(() => addPermission(user.email,2)).appendTo(permissions);
}
}
permissions.appendTo(row);
row.appendTo('#userlist');
}
if (data.user.permissions.includes('admin')){
if (isAdmin){
$('a[href=register]').show();
} else {
$('a[href=register]').hide();

View File

@@ -6,6 +6,7 @@
<th>Email</th>
<th>Password</th>
<th>Permissions</th>
<th>Actions</th>
</tr>
</table>
<a href="register">Register new user</a>