AuthorizeView for AccountIndex and NavMenu

pull/1/head
DJh2o2 2023-01-13 10:16:45 +07:00
parent 67e8956d8f
commit cf24d16c0f
2 changed files with 113 additions and 95 deletions

@ -5,41 +5,57 @@
@inject GenericController GenericController
<h1>Accounts</h1>
<DataGrid TItem="Account" Data="@accounts" SelectedRow="@selectedAccount" SelectedRowChanged="@OnSelectedAccountChanged" Editable ShowPager Bordered Hoverable Sortable Filterable Striped Responsive>
<DataGridCommandColumn />
<DataGridColumn Field="@nameof(Account.AccountId)" Caption="AccountId" Filterable Sortable Editable/>
<DataGridColumn Field="@nameof(Account.AccountName)" Caption="AccountName" Filterable Sortable Editable/>
<DataGridColumn Field="@nameof(Account.Street)" Caption="Street" Filterable Sortable Editable/>
<DataGridColumn Field="@nameof(Account.Zip)" Caption="Zip" Filterable Sortable Editable/>
<DataGridColumn Field="@nameof(Account.City)" Caption="City" Filterable Sortable Editable/>
<DataGridColumn Field="@nameof(Account.SapAccountNumber)" Caption="SapAccountNumber" Filterable Sortable Editable/>
</DataGrid>
<h2>Contacts in @selectedAccount.AccountName</h2>
<DataGrid TItem="Contact" Data="@selectedAccount.Contacts" Editable ShowPager Bordered Hoverable Sortable Filterable Striped Responsive>
<DataGridCommandColumn />
<DataGridColumn Field="@nameof(Contact.ContactId)" Caption="ContactId" Filterable Sortable Editable/>
<DataGridColumn Field="@nameof(Contact.AccountId)" Caption="AccountId" Filterable Sortable Editable/>
<DataGridColumn Field="@nameof(Contact.LastName)" Caption="LastName" Filterable Sortable Editable/>
<DataGridColumn Field="@nameof(Contact.FirstName)" Caption="FirstName" Filterable Sortable Editable/>
<DataGridColumn Field="@nameof(Contact.Gender)" Caption="Gender" Filterable Sortable Editable/>
<DataGridColumn Field="@nameof(Contact.EMail)" Caption="EMail" Filterable Sortable Editable/>
<DataGridColumn Field="@nameof(Contact.SapContactNumber)" Caption="SAPContactNumber" Filterable Sortable Editable/>
</DataGrid>
<AuthorizeView>
<Authorized>
<h1>Accounts</h1>
<DataGrid TItem="Account" Data="@accounts" SelectedRow="@selectedAccount" SelectedRowChanged="@OnSelectedAccountChanged" Editable ShowPager Bordered Hoverable Sortable Filterable Striped Responsive>
<DataGridCommandColumn/>
<DataGridColumn Field="@nameof(Account.AccountId)" Caption="AccountId" Filterable Sortable Editable/>
<DataGridColumn Field="@nameof(Account.AccountName)" Caption="AccountName" Filterable Sortable Editable/>
<DataGridColumn Field="@nameof(Account.Street)" Caption="Street" Filterable Sortable Editable/>
<DataGridColumn Field="@nameof(Account.Zip)" Caption="Zip" Filterable Sortable Editable/>
<DataGridColumn Field="@nameof(Account.City)" Caption="City" Filterable Sortable Editable/>
<DataGridColumn Field="@nameof(Account.SapAccountNumber)" Caption="SapAccountNumber" Filterable Sortable Editable/>
</DataGrid>
<h2>Contacts in @selectedAccount.AccountName</h2>
<DataGrid TItem="Contact" Data="@selectedAccount.Contacts" Editable ShowPager Bordered Hoverable Sortable Filterable Striped Responsive>
<DataGridCommandColumn/>
<DataGridColumn Field="@nameof(Contact.ContactId)" Caption="ContactId" Filterable Sortable Editable/>
<DataGridColumn Field="@nameof(Contact.AccountId)" Caption="AccountId" Filterable Sortable Editable/>
<DataGridColumn Field="@nameof(Contact.LastName)" Caption="LastName" Filterable Sortable Editable/>
<DataGridColumn Field="@nameof(Contact.FirstName)" Caption="FirstName" Filterable Sortable Editable/>
<DataGridColumn Field="@nameof(Contact.Gender)" Caption="Gender" Filterable Sortable Editable/>
<DataGridColumn Field="@nameof(Contact.EMail)" Caption="EMail" Filterable Sortable Editable/>
<DataGridColumn Field="@nameof(Contact.SapContactNumber)" Caption="SAPContactNumber" Filterable Sortable Editable/>
</DataGrid>
</Authorized>
<NotAuthorized>
<h3>Authentication Failure!</h3>
<p>You're not signed in. Please click on the upper right to either register or log in.</p>
</NotAuthorized>
</AuthorizeView>
@code {
private IList<Account> accounts;
private Account selectedAccount;
protected override async Task OnInitializedAsync()
{
accounts = GenericController.GetAll<Account>();
selectedAccount = accounts.First();
}
private async Task OnSelectedAccountChanged(Account sA)
{
selectedAccount = sA;
}
[CascadingParameter]
private Task<AuthenticationState> authenticationStateTask { get; set; }
private IList<Account> accounts;
private Account selectedAccount;
protected override async Task OnInitializedAsync()
{
var user = (await authenticationStateTask).User;
if (user.Identity.IsAuthenticated)
{
accounts = GenericController.GetAll<Account>();
selectedAccount = accounts.First();
}
}
private async Task OnSelectedAccountChanged(Account sA)
{
selectedAccount = sA;
}
}

@ -1,70 +1,72 @@
<div class="top-row ps-3 navbar navbar-dark">
<div class="container-fluid">
<a class="navbar-brand" href="">Gremlin BlazorServer</a>
<button title="Navigation menu" class="navbar-toggler" @onclick="ToggleNavMenu">
<span class="navbar-toggler-icon"></span>
</button>
</div>
<div class="container-fluid">
<a class="navbar-brand" href="">Gremlin BlazorServer</a>
<button title="Navigation menu" class="navbar-toggler" @onclick="ToggleNavMenu">
<span class="navbar-toggler-icon"></span>
</button>
</div>
</div>
<div class="@NavMenuCssClass nav-scrollable" @onclick="ToggleNavMenu">
<nav class="flex-column">
<div class="nav-item px-3">
<NavLink class="nav-link" href="" Match="NavLinkMatch.All">
<span class="oi oi-home" aria-hidden="true"></span>Home
</NavLink>
</div>
<div class="nav-item px-3">
<NavLink class="nav-link" href="Contacts/ContactIndex">
<span class="oi oi-target" aria-hidden="true"></span>Contacts
</NavLink>
</div>
<div class="nav-item px-3">
<NavLink class="nav-link" href="Accounts/AccountIndex">
<span class="oi oi-star" aria-hidden="true"></span>Accounts
</NavLink>
</div>
<div class="nav-item px-3">
<NavLink class="nav-link" href="CustomDescriptions/Index">
<span class="oi oi-spreadsheet" aria-hidden="true"></span>CustomDescriptions
</NavLink>
</div>
<div class="nav-item px-3">
<NavLink class="nav-link" href="LineItems/Index">
<span class="oi oi-task" aria-hidden="true"></span>LineItems
</NavLink>
</div>
<div class="nav-item px-3">
<NavLink class="nav-link" href="Quotes/QuoteIndex">
<span class="oi oi-terminal" aria-hidden="true"></span>Quotes
</NavLink>
</div>
<div class="nav-item px-3">
<NavLink class="nav-link" href="Products">
<span class="oi oi-box" aria-hidden="true"></span>Products
</NavLink>
</div>
<div class="nav-item px-3">
<NavLink class="nav-link" href="ProductLines">
<span class="oi oi-battery-full" aria-hidden="true"></span>ProductLines
</NavLink>
</div>
<div class="nav-item px-3">
<NavLink class="nav-link" href="AccountTypes">
<span class="oi oi-bell" aria-hidden="true"></span>AccountTypes
</NavLink>
</div>
</nav>
<nav class="flex-column">
<div class="nav-item px-3">
<NavLink class="nav-link" href="" Match="NavLinkMatch.All">
<span class="oi oi-home" aria-hidden="true"></span>Home
</NavLink>
</div>
<AuthorizeView>
<div class="nav-item px-3">
<NavLink class="nav-link" href="Contacts/ContactIndex">
<span class="oi oi-target" aria-hidden="true"></span>Contacts
</NavLink>
</div>
<div class="nav-item px-3">
<NavLink class="nav-link" href="Accounts/AccountIndex">
<span class="oi oi-star" aria-hidden="true"></span>Accounts
</NavLink>
</div>
<div class="nav-item px-3">
<NavLink class="nav-link" href="CustomDescriptions/Index">
<span class="oi oi-spreadsheet" aria-hidden="true"></span>CustomDescriptions
</NavLink>
</div>
<div class="nav-item px-3">
<NavLink class="nav-link" href="LineItems/Index">
<span class="oi oi-task" aria-hidden="true"></span>LineItems
</NavLink>
</div>
<div class="nav-item px-3">
<NavLink class="nav-link" href="Quotes/QuoteIndex">
<span class="oi oi-terminal" aria-hidden="true"></span>Quotes
</NavLink>
</div>
<div class="nav-item px-3">
<NavLink class="nav-link" href="Products">
<span class="oi oi-box" aria-hidden="true"></span>Products
</NavLink>
</div>
<div class="nav-item px-3">
<NavLink class="nav-link" href="ProductLines">
<span class="oi oi-battery-full" aria-hidden="true"></span>ProductLines
</NavLink>
</div>
<div class="nav-item px-3">
<NavLink class="nav-link" href="AccountTypes">
<span class="oi oi-bell" aria-hidden="true"></span>AccountTypes
</NavLink>
</div>
</AuthorizeView>
</nav>
</div>
@code {
private bool collapseNavMenu = true;
private bool collapseNavMenu = true;
private string? NavMenuCssClass => collapseNavMenu ? "collapse" : null;
private string? NavMenuCssClass => collapseNavMenu ? "collapse" : null;
private void ToggleNavMenu()
{
collapseNavMenu = !collapseNavMenu;
StateHasChanged();
}
private void ToggleNavMenu()
{
collapseNavMenu = !collapseNavMenu;
StateHasChanged();
}
}