Skip to content

Commit 0f2a7c3

Browse files
authored
Merge pull request #1150 from hargata/Hargata/565
rbac lol
2 parents d23b16d + 1032112 commit 0f2a7c3

File tree

5 files changed

+44
-19
lines changed

5 files changed

+44
-19
lines changed

Views/Admin/Index.cshtml

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,9 @@
199199
$('#householdModal').modal('show');
200200
})
201201
}
202+
function hideHouseholdModal(){
203+
$('#householdModal').modal('hide');
204+
}
202205
function adminRemoveUserFromHousehold(parentUserId, childUserId){
203206
$.post('/Admin/RemoveUserFromHousehold', {parentUserId: parentUserId, childUserId: childUserId}, function(data){
204207
if (data) {
@@ -210,11 +213,18 @@
210213
});
211214
}
212215
function adminUpdateUserHousehold(parentUserId, childUserId, e){
213-
let selectedChecks = $(e).closest('tr').find(':checked');
214-
let permissions = selectedChecks.map((y, x) => {
215-
return x.value;
216-
});
217-
$.post('/Admin/ModifyUserHouseholdPermissions', {parentUserId: parentUserId, childUserId: childUserId, permissions: permissions.toArray()}, function(data){
216+
let selectedRole = $(e).val();
217+
let permissions = [];
218+
switch (selectedRole){
219+
case 'editor':
220+
permissions.push('Edit');
221+
break;
222+
case 'manager':
223+
permissions.push('Edit');
224+
permissions.push('Delete');
225+
break;
226+
}
227+
$.post('/Admin/ModifyUserHouseholdPermissions', {parentUserId: parentUserId, childUserId: childUserId, permissions: permissions}, function(data){
218228
if (data) {
219229
successToast('Household Updated');
220230
loadUserHousehold(parentUserId);

Views/Admin/_AdminUserHouseholdModal.cshtml

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,7 @@
2222
<thead class="sticky-top">
2323
<tr class="d-flex">
2424
<th scope="col" class="col-6">@translator.Translate(userLanguage, "Username")</th>
25-
<th scope="col" class="col-2">@translator.Translate(userLanguage, "Edit")</th>
26-
<th scope="col" class="col-2">@translator.Translate(userLanguage, "Delete")</th>
25+
<th scope="col" class="col-4">@translator.Translate(userLanguage, "Role")</th>
2726
<th scope="col" class="col-2">@translator.Translate(userLanguage, "Remove")</th>
2827
</tr>
2928
</thead>
@@ -32,8 +31,13 @@
3231
{
3332
<tr class="d-flex">
3433
<td class="col-6">@viewModel.UserName</td>
35-
<td class="col-2 d-flex align-items-center"><input class="form-check-input" type="checkbox" value="Edit" onchange="adminUpdateUserHousehold(@viewModel.UserHousehold.Id.ParentUserId, @viewModel.UserHousehold.Id.ChildUserId, this)" @(viewModel.UserHousehold.Permissions.Contains(HouseholdPermission.Edit) ? "checked" : "") /></td>
36-
<td class="col-2 d-flex align-items-center"><input class="form-check-input" type="checkbox" value="Delete" onchange="adminUpdateUserHousehold(@viewModel.UserHousehold.Id.ParentUserId, @viewModel.UserHousehold.Id.ChildUserId, this)" @(viewModel.UserHousehold.Permissions.Contains(HouseholdPermission.Delete) ? "checked" : "") /></td>
34+
<td class="col-4">
35+
<select class="form-select" onchange="adminUpdateUserHousehold(@viewModel.UserHousehold.Id.ParentUserId, @viewModel.UserHousehold.Id.ChildUserId, this)">
36+
<!option @(!viewModel.UserHousehold.Permissions.Contains(HouseholdPermission.Edit) && !viewModel.UserHousehold.Permissions.Contains(HouseholdPermission.Delete) ? "selected" : "") value="viewer">@translator.Translate(userLanguage, "Viewer")</!option>
37+
<!option @(viewModel.UserHousehold.Permissions.Contains(HouseholdPermission.Edit) && !viewModel.UserHousehold.Permissions.Contains(HouseholdPermission.Delete) ? "selected" : "") value="editor">@translator.Translate(userLanguage, "Editor")</!option>
38+
<!option @(viewModel.UserHousehold.Permissions.Contains(HouseholdPermission.Edit) && viewModel.UserHousehold.Permissions.Contains(HouseholdPermission.Delete) ? "selected" : "") value="manager">@translator.Translate(userLanguage, "Manager")</!option>
39+
</select>
40+
</td>
3741
<td class="col-2">
3842
<button type="button" class="btn btn-danger" onclick="adminRemoveUserFromHousehold(@viewModel.UserHousehold.Id.ParentUserId, @viewModel.UserHousehold.Id.ChildUserId)"><i class="bi bi-trash"></i></button>
3943
</td>

Views/Home/_UserHouseholdModal.cshtml

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,7 @@
2222
<thead class="sticky-top">
2323
<tr class="d-flex">
2424
<th scope="col" class="col-6">@translator.Translate(userLanguage, "Username")</th>
25-
<th scope="col" class="col-2">@translator.Translate(userLanguage, "Edit")</th>
26-
<th scope="col" class="col-2">@translator.Translate(userLanguage, "Delete")</th>
25+
<th scope="col" class="col-4">@translator.Translate(userLanguage, "Role")</th>
2726
<th scope="col" class="col-2">@translator.Translate(userLanguage, "Remove")</th>
2827
</tr>
2928
</thead>
@@ -32,8 +31,13 @@
3231
{
3332
<tr class="d-flex">
3433
<td class="col-6">@viewModel.UserName</td>
35-
<td class="col-2 d-flex align-items-center"><input class="form-check-input" type="checkbox" value="Edit" onchange="modifyUserHousehold(@viewModel.UserHousehold.Id.ChildUserId, this)" @(viewModel.UserHousehold.Permissions.Contains(HouseholdPermission.Edit) ? "checked" : "") /></td>
36-
<td class="col-2 d-flex align-items-center"><input class="form-check-input" type="checkbox" value="Delete" onchange="modifyUserHousehold(@viewModel.UserHousehold.Id.ChildUserId, this)" @(viewModel.UserHousehold.Permissions.Contains(HouseholdPermission.Delete) ? "checked" : "") /></td>
34+
<td class="col-4">
35+
<select class="form-select" onchange="modifyUserHousehold(@viewModel.UserHousehold.Id.ChildUserId, this)">
36+
<!option @(!viewModel.UserHousehold.Permissions.Contains(HouseholdPermission.Edit) && !viewModel.UserHousehold.Permissions.Contains(HouseholdPermission.Delete) ? "selected" : "") value="viewer">@translator.Translate(userLanguage, "Viewer")</!option>
37+
<!option @(viewModel.UserHousehold.Permissions.Contains(HouseholdPermission.Edit) && !viewModel.UserHousehold.Permissions.Contains(HouseholdPermission.Delete) ? "selected" : "") value="editor">@translator.Translate(userLanguage, "Editor")</!option>
38+
<!option @(viewModel.UserHousehold.Permissions.Contains(HouseholdPermission.Edit) && viewModel.UserHousehold.Permissions.Contains(HouseholdPermission.Delete) ? "selected" : "") value="manager">@translator.Translate(userLanguage, "Manager")</!option>
39+
</select>
40+
</td>
3741
<td class="col-2">
3842
<button type="button" class="btn btn-danger" onclick="removeUserFromHousehold(@viewModel.UserHousehold.Id.ChildUserId, this)"><i class="bi bi-trash"></i></button>
3943
</td>

wwwroot/defaults/en_US.json

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

wwwroot/js/garage.js

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -602,11 +602,18 @@ function removeUserFromHousehold(userId) {
602602
})
603603
}
604604
function modifyUserHousehold(userId, e) {
605-
let selectedChecks = $(e).closest('tr').find(':checked');
606-
let permissions = selectedChecks.map((y, x) => {
607-
return x.value;
608-
});
609-
$.post('/Home/ModifyUserHouseholdPermissions', { userId: userId, permissions: permissions.toArray() }, function (data) {
605+
let selectedRole = $(e).val();
606+
let permissions = [];
607+
switch (selectedRole) {
608+
case 'editor':
609+
permissions.push('Edit');
610+
break;
611+
case 'manager':
612+
permissions.push('Edit');
613+
permissions.push('Delete');
614+
break;
615+
}
616+
$.post('/Home/ModifyUserHouseholdPermissions', { userId: userId, permissions: permissions }, function (data) {
610617
if (data) {
611618
successToast('Household Updated');
612619
showHouseholdModal();

0 commit comments

Comments
 (0)