feature: flag permissions

feature: flag permissions
This commit is contained in:
Gary Sharp
2025-07-20 10:45:55 +10:00
parent 7deead494b
commit be7ee4cae8
72 changed files with 5590 additions and 2109 deletions
+9 -14
View File
@@ -1,15 +1,8 @@
@model Disco.Web.Models.User.ShowModel
@using Disco.Services.Users.UserFlags;
@{
Authorization.Require(Claims.User.ShowFlagAssignments);
var hasRemove = Authorization.Has(Claims.User.Actions.RemoveFlags);
var hasEdit = Authorization.Has(Claims.User.Actions.EditFlags);
var hasUserFlagShow = Authorization.Has(Claims.Config.UserFlag.Show);
var activeAssignmentCount = Model.User.UserFlagAssignments == null ? 0 : Model.User.UserFlagAssignments.Count(a => !a.RemovedDate.HasValue);
var flagAssignments = Model.User.UserFlagAssignments.Select(a => Tuple.Create(a, UserFlagService.GetUserFlag(a.UserFlagId))).ToList();
var flagAssignments = Model.User.UserFlagAssignments.Select(a => Tuple.Create(a, UserFlagService.GetUserFlag(a.UserFlagId))).Where(g => g.Item2.permission.CanShow()).ToList();
var activeAssignmentCount = flagAssignments.Count(a => !a.Item1.RemovedDate.HasValue);
}
<div id="UserDetailTab-Flags" class="UserPart">
@if (flagAssignments.Count > 0)
@@ -25,14 +18,14 @@
{
<tr data-userflagassignmentid="@fa.Item1.Id" data-flagassignmentaddeddate="@(fa.Item1.AddedDate.ToString("s"))" class="@(!fa.Item1.RemovedDate.HasValue ? "added" : "removed")">
<td class="name">
<i class="fa fa-@(fa.Item2.Icon) fa-fw fa-lg d-@(fa.Item2.IconColour)"></i>
@if (hasUserFlagShow)
<i class="fa fa-@(fa.Item2.flag.Icon) fa-fw fa-lg d-@(fa.Item2.flag.IconColour)"></i>
@if (Authorization.Has(Claims.Config.UserFlag.Show))
{
@Html.ActionLink(fa.Item2.Name, MVC.Config.UserFlag.Index(fa.Item2.Id))
@Html.ActionLink(fa.Item2.flag.Name, MVC.Config.UserFlag.Index(fa.Item2.flag.Id))
}
else
{
@fa.Item2.Name
@fa.Item2.flag.Name
}
</td>
<td class="added">
@@ -43,7 +36,7 @@
}
</td>
<td class="comments">
@if (hasEdit)
@if (fa.Item2.permission.CanEdit())
{
<div class="editable"><i class="fa fa-fw fa-edit" title="Edit Comments"></i></div>
}
@@ -77,6 +70,7 @@
<div id="User_Show_Flags_Actions_Remove_Dialog" class="dialog" title="Remove this flag from the user?">
@using (Html.BeginForm(MVC.API.UserFlagAssignment.RemoveUser()))
{
@Html.AntiForgeryToken()
<input id="User_Show_Flags_Actions_Remove_Dialog_Id" type="hidden" name="id" value="" />
<p>
<i class="fa fa-exclamation-triangle fa-lg"></i>&nbsp;Are you sure?
@@ -86,6 +80,7 @@
<div id="User_Show_Flags_Actions_EditComments_Dialog" class="dialog" title="Edit the Comments">
@using (Html.BeginForm(MVC.API.UserFlagAssignment.UpdateComments()))
{
@Html.AntiForgeryToken()
<input id="User_Show_Flags_Actions_EditComments_Dialog_Id" type="hidden" name="id" value="" />
<input type="hidden" name="redirect" value="true" />
<h4>Comments:</h4>