95 lines
3.4 KiB
Plaintext
95 lines
3.4 KiB
Plaintext
@page "/securitygroups"
|
|
@using UserService.DatabaseLayer.DataModels
|
|
@using UserService.DatabaseLayer.Repository
|
|
@inject ISecurityGroupsRepository SecurityGroupsRepository
|
|
@inject IOrganizationUnitsRepository OrganizationUnits
|
|
|
|
|
|
<h1>Table of all security groups</h1>
|
|
|
|
@if (_securityGroups == null)
|
|
{
|
|
<p>
|
|
<em>Loading...</em>
|
|
</p>
|
|
}
|
|
else
|
|
{
|
|
<MatTable Items="@_securityGroups" class="mat-elevation-z5">
|
|
<MatTableHeader>
|
|
<th style="width: 30%">Common Name</th>
|
|
<th style="width: 20%">Description</th>
|
|
<th style="width: 20%">E-Mail</th>
|
|
<th style="width: 20%">Parent</th>
|
|
<th style="width: auto"> </th>
|
|
<th style="width: auto"> </th>
|
|
</MatTableHeader>
|
|
<MatTableRow>
|
|
<td>@context.CommonName</td>
|
|
<td>@context.Description</td>
|
|
<td>@context.EMail</td>
|
|
<td>@context.Parent</td>
|
|
<td><a href="securitygroups" @onclick="@(e => EditSecurityGroup(context))">edit</a></td>
|
|
<td><a href="securitygroups" @onclick="@(e => DeleteSecurityGroup(context))">delete</a></td>
|
|
|
|
</MatTableRow>
|
|
</MatTable>
|
|
<MatButton @onclick="@(e => EditSecurityGroup(new SecurityGroup()))">Create new group</MatButton>
|
|
}
|
|
|
|
<MatDialog @bind-IsOpen="@_dialogIsOpen">
|
|
@if (_securityGroupToEdit != null)
|
|
{
|
|
<MatDialogTitle>@(_securityGroupToEdit.Id == 0 ? "New" : "Edit") @_securityGroupToEdit.CommonName (@_securityGroupToEdit.Id)</MatDialogTitle>
|
|
<MatDialogContent>
|
|
<MatTextField Label="Common name" @bind-Value="@_securityGroupToEdit.CommonName" ReadOnly="@(_securityGroupToEdit.Id != 0)"></MatTextField>
|
|
<p />
|
|
<MatTextField Label="Description" @bind-Value="@_securityGroupToEdit.Description"></MatTextField>
|
|
<MatTextField Label="E-Mail" @bind-Value="@_securityGroupToEdit.EMail"></MatTextField>
|
|
<p />
|
|
<MatAutocompleteList Items="@_organizationUnits" TItem="Node" Label="Parent" CustomStringSelector="@(i => i.CommonName)" @bind-Value="@_securityGroupToEdit.Parent"></MatAutocompleteList>
|
|
</MatDialogContent>
|
|
}
|
|
else
|
|
{
|
|
<MatDialogTitle>No securityGroup selected</MatDialogTitle>
|
|
}
|
|
<MatDialogActions>
|
|
<MatButton OnClick="@(e => { _dialogIsOpen = false; })">No Thanks</MatButton>
|
|
<MatButton OnClick="@OkClick">OK</MatButton>
|
|
</MatDialogActions>
|
|
</MatDialog>
|
|
|
|
|
|
@code {
|
|
bool _dialogIsOpen;
|
|
SecurityGroup _securityGroupToEdit;
|
|
|
|
private IReadOnlyList<SecurityGroup> _securityGroups;
|
|
private IReadOnlyList<OrganizationUnit> _organizationUnits;
|
|
|
|
protected override async Task OnInitializedAsync()
|
|
{
|
|
_securityGroups = await SecurityGroupsRepository.GetAllAsync();
|
|
_organizationUnits = await OrganizationUnits.GetAllAsync().ConfigureAwait(false);
|
|
}
|
|
|
|
private void EditSecurityGroup(SecurityGroup securityGroup)
|
|
{
|
|
_dialogIsOpen = true;
|
|
_securityGroupToEdit = (SecurityGroup)securityGroup.Clone();
|
|
}
|
|
|
|
async Task OkClick()
|
|
{
|
|
await SecurityGroupsRepository.UpdateAsync(_securityGroupToEdit).ConfigureAwait(false);
|
|
await OnInitializedAsync().ConfigureAwait(false);
|
|
_dialogIsOpen = false;
|
|
}
|
|
|
|
private async Task DeleteSecurityGroup(SecurityGroup securityGroup)
|
|
{
|
|
await SecurityGroupsRepository.DeleteAsync(securityGroup).ConfigureAwait(false);
|
|
await OnInitializedAsync().ConfigureAwait(false);
|
|
}
|
|
} |