Skip to content

Commit 549b548

Browse files
committed
prevent auditor from trying changing tasks
1 parent d4e7acc commit 549b548

File tree

5 files changed

+43
-7
lines changed

5 files changed

+43
-7
lines changed

roles/lib/files/FWO.Services/WfHandler.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ public async Task<bool> Init(bool fetchData = false, List<int>? ownerIds = null,
156156
}
157157
ActionHandler = new (apiConnection, this, UserGroups, usedInMwServer);
158158
await ActionHandler.Init();
159-
dbAcc = new WfDbAccess(DisplayMessageInUi, userConfig, apiConnection, ActionHandler, AuthUser == null || AuthUser.IsInRole(Roles.Admin)){};
159+
dbAcc = new WfDbAccess(DisplayMessageInUi, userConfig, apiConnection, ActionHandler, AuthUser == null || AuthUser.IsInRole(Roles.Admin) || AuthUser.IsInRole(Roles.Auditor)){};
160160
Devices = await apiConnection.SendQueryAsync<List<Device>>(DeviceQueries.getDeviceDetails);
161161
AllOwners = await apiConnection.SendQueryAsync<List<FwoOwner>>(OwnerQueries.getOwners);
162162
await stateMatrixDict.Init(Phase, apiConnection);
@@ -266,12 +266,12 @@ public void SetContinueEnv(ObjAction action)
266266

267267
// Tickets
268268

269-
public async Task<WfTicket?> ResolveTicket(long ticketId, bool checkOwner = false)
269+
public async Task<WfTicket?> ResolveTicket(long ticketId)
270270
{
271271
WfTicket? ticket = null;
272272
if(dbAcc != null)
273273
{
274-
ticket = await dbAcc.FetchTicket(ticketId, checkOwner ? AllOwners.ConvertAll(x => x.Id) : null);
274+
ticket = await dbAcc.FetchTicket(ticketId, userConfig.ReqOwnerBased ? AllOwners.ConvertAll(x => x.Id) : null);
275275
if(ticket != null)
276276
{
277277
SetTicketEnv(ticket);

roles/ui/files/FWO.UI/Pages/NetworkModelling/EditConn.razor

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -392,7 +392,7 @@
392392
@if(ConnHandler.ActConn.IsRequested)
393393
{
394394
<button type="button" class="btn btn-sm btn-dark" @onclick="DisplayTicket">@(ConnHandler.DisplayButton("display_ticket", Icons.Display, userConfig.GetText("ticket")))</button>
395-
@if(!ConnHandler.ReadOnly)
395+
@if(!ConnHandler.ReadOnly && availableModules.Contains(Module.Workflow))
396396
{
397397
<button type="button" class="btn btn-sm btn-dark" @onclick="GotoTicket">@(ConnHandler.DisplayButton("edit_ticket", Icons.Edit, userConfig.GetText("ticket")))</button>
398398
}
@@ -480,12 +480,15 @@
480480
private bool RejectInterfaceMode = false;
481481

482482
private List<string> availableExtraConfigs = [];
483+
private List<Module> availableModules { get; set; } = [];
483484

484485

485486
protected override void OnInitialized()
486487
{
487488
sidebarLeftWidth = sidebarInitWidth;
488489
availableExtraConfigs = JsonSerializer.Deserialize<List<string>>(userConfig.ModExtraConfigs) ?? new();
490+
availableModules = string.IsNullOrEmpty(userConfig.AvailableModules) ? [.. Enum.GetValues(typeof(Module)).Cast<Module>()]
491+
: JsonSerializer.Deserialize<List<Module>>(userConfig.AvailableModules) ?? throw new JsonException("Config data could not be parsed.");
489492
}
490493

491494
protected override void OnParametersSet()

roles/ui/files/FWO.UI/Pages/Request/DisplayImplementationTask.razor

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,24 @@
1414
{
1515
<form>
1616
<div class="form-group row">
17+
<div class="col-sm-2">
18+
<div class="form-group row">
19+
<label class="col-sm-6 col-form-label col-form-label-sm">@(userConfig.GetText("id")):</label>
20+
<div class="col-sm-6">
21+
<label class="col-sm-12 border bg-secondary">@WfHandler.ActImplTask.Id</label>
22+
</div>
23+
</div>
24+
</div>
25+
<div class="col-sm-10">
26+
<div class="form-group row">
27+
<label class="col-sm-1 col-form-label col-form-label-sm">@(userConfig.GetText("title"))*:</label>
28+
<div class="col-sm-11">
29+
<input type="text" class="form-control form-control-sm" readonly="@(!WfHandler.EditImplTaskMode)" @bind="WfHandler.ActImplTask.Title" />
30+
</div>
31+
</div>
32+
</div>
33+
</div>
34+
<div class="form-group row mt-2">
1735
<div class="col-sm-3">
1836
<div class="form-group row">
1937
<label class="col-sm-4 col-form-label col-form-label-sm">@(userConfig.GetText("state")):</label>

roles/ui/files/FWO.UI/Pages/Request/PromoteObject.razor

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,9 @@
5050
[CascadingParameter]
5151
Action<Exception?, string, string, bool> DisplayMessageInUi { get; set; } = DefaultInit.DoNothing;
5252

53+
[CascadingParameter]
54+
private Task<AuthenticationState>? authenticationStateTask { get; set; }
55+
5356
[Parameter]
5457
public bool Promote { get; set; } = false;
5558

@@ -91,7 +94,7 @@
9194
if (Promote)
9295
{
9396
possibleStates = StateMatrix.getAllowedTransitions(StatefulObject.StateId);
94-
if(possibleStates.Count == 1)
97+
if(possibleStates.Count == 1 && !authenticationStateTask!.Result.User.IsInRole(Roles.Auditor))
9598
{
9699
int oldState = StatefulObject.StateId;
97100
StatefulObject.StateId = possibleStates[0];

roles/ui/files/FWO.UI/Pages/Request/RequestImplementations.razor

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ else
5151
private bool DisplayTickets = true;
5252
private Device selectedDeviceOpt = new ();
5353
private FwoOwner selectedOwnerOpt = new (){ Id = -1 };
54+
private bool JumpedIn = false;
5455

5556

5657
protected override async Task OnInitializedAsync()
@@ -69,9 +70,16 @@ else
6970
await HandleTicketId();
7071
await Select();
7172
wfHandler.SetContinueEnv(ObjAction.implement);
72-
if(wfHandler.ActTicket.Tasks.Count >= 1 && wfHandler.ActTicket.Tasks.First().ImplementationTasks.Count >= 1)
73+
if(wfHandler.ActTicket.Tasks.Count > 0 && wfHandler.ActTicket.Tasks[0].ImplementationTasks.Count > 0)
7374
{
74-
await wfHandler.ContinueImplPhase(wfHandler.ActTicket.Tasks.First().ImplementationTasks.First());
75+
if(JumpedIn && authenticationStateTask!.Result.User.IsInRole(Roles.Admin) || authenticationStateTask!.Result.User.IsInRole(Roles.Auditor))
76+
{
77+
wfHandler.SelectImplTask(wfHandler.ActTicket.Tasks[0].ImplementationTasks[0], ObjAction.display);
78+
}
79+
else
80+
{
81+
await wfHandler.ContinueImplPhase(wfHandler.ActTicket.Tasks[0].ImplementationTasks[0]);
82+
}
7583
}
7684
InitComplete = true;
7785
}
@@ -90,6 +98,10 @@ else
9098
{
9199
NavigationManager.NavigateTo($"/request/{newPhase.ToString()}s/{TicketId}");
92100
}
101+
else
102+
{
103+
JumpedIn = true;
104+
}
93105
}
94106
}
95107

0 commit comments

Comments
 (0)