You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
363 lines
14 KiB
363 lines
14 KiB
@page "/Admin/AspNetUsers/AspNetUserRolleList"
|
|
@inject Blazored.SessionStorage.ISessionStorageService sessionStorage
|
|
@using Microsoft.AspNetCore.Authorization;
|
|
@using Microsoft.AspNetCore.Identity;
|
|
@inject UserManager<IdentityUser> _UserManager
|
|
@inject RoleManager<IdentityRole> _RoleManager
|
|
@inherits ListBase
|
|
@using Syncfusion.Blazor.Grids;
|
|
@using Syncfusion.Blazor.Buttons;
|
|
@using Syncfusion.Blazor.Spinner;
|
|
@using Syncfusion.Blazor.Popups;
|
|
@using BlazorApp.Helper
|
|
@using BWPMModels;
|
|
|
|
@using BlazorApp.Controller;
|
|
|
|
|
|
<h1>BenutzerListe</h1>
|
|
|
|
<div class="col-lg-12 control-section">
|
|
<div class="content-wrapper">
|
|
<div class="row">
|
|
<SfGrid DataSource="@GridData" @ref="Grid" AllowPaging="true" AllowSelection="true" AllowSorting="true" Toolbar="@(new List<string>() { "Edit", "Update", "Cancel", "Passwort ändern","Benutzer erstellen" })">
|
|
<GridPageSettings PageCount="5" PageSizes="true"></GridPageSettings>
|
|
<GridEditSettings AllowAdding="false" AllowDeleting="false" AllowEditing="true" Mode="EditMode.Normal"></GridEditSettings>
|
|
<GridEvents RowSelected="GetSelectedRecords" OnActionBegin="OnBeginHandler" OnActionComplete="OnCompletedHandler" TValue="BWPMModels.AspNetUserRolle" OnToolbarClick="ToolBarClickHandler" OnDataBound="RowDataBoundHandler"></GridEvents>
|
|
<GridSelectionSettings EnableToggle="true" Type="Syncfusion.Blazor.Grids.SelectionType.Single"></GridSelectionSettings>
|
|
<GridColumns>
|
|
<GridColumn Field=@nameof(BWPMModels.AspNetUserRolle.Id) HeaderText="Id" IsPrimaryKey="true" AllowAdding="false" Width="60"></GridColumn>
|
|
|
|
|
|
<GridColumn Field=@nameof(BWPMModels.AspNetUserRolle.UserName) HeaderText="Username" AllowEditing="false" Width="100" Visible="true"></GridColumn>
|
|
|
|
<GridColumn Field=@nameof(BWPMModels.AspNetUserRolle.NormalizedUserName) HeaderText="Normalizedusername" AllowEditing="false" Width="100" Visible="true"></GridColumn>
|
|
|
|
<GridColumn Field=@nameof(BWPMModels.AspNetUserRolle.Email) HeaderText="Email" Width="100" AllowEditing="false" Visible="true"></GridColumn>
|
|
|
|
<GridColumn Field=@nameof(BWPMModels.AspNetUserRolle.NormalizedEmail) HeaderText="Normalizedemail" Width="100" AllowEditing="false" Visible="false"></GridColumn>
|
|
|
|
<GridColumn Field=@nameof(BWPMModels.AspNetUserRolle.EmailConfirmed) HeaderText="Emailconfirmed" Width="100" AllowEditing="false" Visible="true" DisplayAsCheckBox="true"></GridColumn>
|
|
|
|
<GridColumn Field=@nameof(BWPMModels.AspNetUserRolle.PasswordHash) HeaderText="Passwordhash" Width="100" AllowEditing="false" Visible="true"></GridColumn>
|
|
|
|
<GridColumn Field=@nameof(BWPMModels.AspNetUserRolle.SecurityStamp) HeaderText="Securitystamp" Width="100" AllowEditing="false" Visible="false"></GridColumn>
|
|
|
|
<GridColumn Field=@nameof(BWPMModels.AspNetUserRolle.ConcurrencyStamp) HeaderText="Concurrencystamp" Width="100" AllowEditing="false" Visible="false"></GridColumn>
|
|
|
|
<GridColumn Field=@nameof(BWPMModels.AspNetUserRolle.PhoneNumber) HeaderText="Phonenumber" Width="100" AllowEditing="false" Visible="false"></GridColumn>
|
|
|
|
<GridColumn Field=@nameof(BWPMModels.AspNetUserRolle.PhoneNumberConfirmed) HeaderText="Phonenumberconfirmed" Width="100" Visible="false" DisplayAsCheckBox="true"></GridColumn>
|
|
|
|
<GridColumn Field=@nameof(BWPMModels.AspNetUserRolle.TwoFactorEnabled) HeaderText="Twofactorenabled" Width="100" Visible="true" DisplayAsCheckBox="true"></GridColumn>
|
|
|
|
|
|
<GridColumn Field=@nameof(BWPMModels.AspNetUserRolle.LockoutEnabled) HeaderText="Lockoutenabled" Width="100" Visible="true" DisplayAsCheckBox="true"></GridColumn>
|
|
|
|
<GridColumn Field=@nameof(BWPMModels.AspNetUserRolle.AccessFailedCount) HeaderText="Accessfailedcount" Width="100" Visible="false"></GridColumn>
|
|
|
|
<GridColumn Field=@nameof(BWPMModels.AspNetUserRolle.RoleId) HeaderText="Roleid" Width="100" Visible="false">
|
|
<GridForeignColumn Field=@nameof(BWPMModels.AspNetUserRolle.RoleId) HeaderText="Rolle" ForeignKeyValue=@nameof(BWPMModels.AspNetRoles.Name) ForeignKeyField=@nameof(BWPMModels.AspNetRoles.Id) ForeignDataSource="@AspNetRoles" Width="150"></GridForeignColumn>
|
|
</GridColumn>
|
|
</GridColumns>
|
|
</SfGrid>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<SfDialog Width="400px" IsModal="true" @bind-Visible="@IsVisible">
|
|
<DialogEvents OnOverlayClick="@OnOverlayclick">
|
|
</DialogEvents>
|
|
<DialogTemplates>
|
|
<Header>Passwort-Änderung für @Username</Header>
|
|
<Content>
|
|
<label style="color:red">@ErrorMsg</label>
|
|
<label>
|
|
Neues Passwort:
|
|
<input type="password" @bind-value="newpassword" id="password" name="Required" class="e-input">
|
|
Passwort-Bestätigung
|
|
<input type="password" @bind-value="newpassword1" id="password1" name="Required" class="e-input">
|
|
</label>
|
|
</Content>
|
|
|
|
</DialogTemplates>
|
|
<DialogButtons>
|
|
<DialogButton Content="OK" IsPrimary="true" OnClick="@SavePasswort" />
|
|
<DialogButton Content="Abbruch" OnClick="@CloseDialog" />
|
|
</DialogButtons>
|
|
</SfDialog>
|
|
|
|
<SfDialog Width="400px" IsModal="true" @bind-Visible="@NewUserIsVisible">
|
|
<DialogEvents OnOverlayClick="@OnOverlayclick">
|
|
</DialogEvents>
|
|
<DialogTemplates>
|
|
<Header>Neuer Benutzer erstellen</Header>
|
|
<Content>
|
|
|
|
<label style="color:red">@ErrorMsg</label><br />
|
|
<SfRadioButton Label="Administrator" Name="options" Value="Administrators" @bind-Checked="stringChecked"></SfRadioButton>
|
|
<SfRadioButton Label="Firma" Name="options" Value="Firma" @bind-Checked="stringChecked"></SfRadioButton>
|
|
<SfRadioButton Label="Lehrer" Name="options" Value="Lehrer" @bind-Checked="stringChecked"></SfRadioButton><BR /><BR />
|
|
|
|
<label>
|
|
E-Mail (Benutzername):
|
|
<input type="email" @bind-value="newusername" id="username" name="Required" class="e-input">
|
|
Passwort
|
|
<input type="password" @bind-value="newpassword" id="password" name="Required" class="e-input">
|
|
Passwort-Bestätigung
|
|
<input type="password" @bind-value="newpassword1" id="password1" name="Required" class="e-input">
|
|
</label>
|
|
|
|
</Content>
|
|
</DialogTemplates>
|
|
<DialogButtons>
|
|
<DialogButton Content="OK" IsPrimary="true" OnClick="@SaveNewUser" />
|
|
<DialogButton Content="Abbruch" OnClick="@CloseDialog" />
|
|
</DialogButtons>
|
|
</SfDialog>
|
|
@code{
|
|
|
|
|
|
private bool IsVisible { get; set; } = false;
|
|
private bool NewUserIsVisible { get; set; } = false;
|
|
|
|
private string Gridid = "";
|
|
public List<BWPMModels.AspNetUserRolle> Temp { get; set; }
|
|
public List<BWPMModels.AspNetUsers> TempUser { get; set; }
|
|
public List<BWPMModels.AspNetRoles> TmpRolle { get; set; }
|
|
public List<BWPMModels.AspNetUserRoles> TmpUserRoles { get; set; }
|
|
private string newpassword { get; set; } = "";
|
|
private string newusername { get; set; } = "";
|
|
private string newpassword1 { get; set; } = "";
|
|
private string ErrorMsg { get; set; } = "";
|
|
private string Username { get; set; } = "";
|
|
private string stringChecked { get; set; } = "Administrators";
|
|
|
|
|
|
SfGrid<BWPMModels.AspNetUserRolle> Grid { get; set; }
|
|
|
|
private void OnOverlayclick(MouseEventArgs arg)
|
|
{
|
|
this.IsVisible = false;
|
|
}
|
|
private void ShowDialog(int dialognr)
|
|
{
|
|
|
|
this.ErrorMsg = "";
|
|
switch (dialognr)
|
|
{
|
|
case 1:
|
|
this.IsVisible = true;
|
|
break;
|
|
case 2:
|
|
this.NewUserIsVisible = true;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
}
|
|
|
|
private void CloseDialog()
|
|
{
|
|
this.IsVisible = false;
|
|
this.NewUserIsVisible = false;
|
|
}
|
|
private void SavePasswort()
|
|
{
|
|
if (newpassword != newpassword1)
|
|
{
|
|
this.ErrorMsg = "Passworte stimmen nicht überein.";
|
|
}
|
|
else
|
|
{
|
|
|
|
IdentityUser objUser = new IdentityUser();
|
|
objUser.Id = Gridid;
|
|
var user = _UserManager.FindByIdAsync(Gridid);
|
|
var password = _UserManager.PasswordHasher.HashPassword(objUser,newpassword);
|
|
|
|
BWPMModels.AspNetUsers usr = new BWPMModels.AspNetUsers();
|
|
usr.Id = Gridid;
|
|
usr.PasswordHash = password;
|
|
BlazorApp.Controller.AspNetUserRolleController.PUTPassword(usr);
|
|
|
|
this.IsVisible = false;
|
|
}
|
|
}
|
|
|
|
private void SaveNewUser()
|
|
{
|
|
ErrorMsg = "";
|
|
if (newusername.Trim()=="")
|
|
{
|
|
ErrorMsg = "Benutzername fehlt.";
|
|
return;
|
|
}
|
|
if ((newpassword.Trim()=="") && (newpassword1.Trim()=="" ))
|
|
{
|
|
ErrorMsg = "Passwort fehlt.";
|
|
return;
|
|
}
|
|
if(newpassword != newpassword1)
|
|
{
|
|
ErrorMsg = "Passworte stimmen nicht überein";
|
|
return;
|
|
}
|
|
|
|
BlazorApp.Helper.Utils utl = new BlazorApp.Helper.Utils();
|
|
if (utl.IsValidEmail(newusername) !=true){
|
|
ErrorMsg = "Benutzername ist ungültig (E-Mail Adresse)";
|
|
return;
|
|
}
|
|
|
|
TempUser= BlazorApp.Controller.AspNetUsersController.GetByEMail(newusername);
|
|
if (TempUser.Count !=0)
|
|
{
|
|
ErrorMsg = "Benutzer bereits vorhanden.";
|
|
return;
|
|
}
|
|
|
|
BWPMModels.AspNetUsers usr = new BWPMModels.AspNetUsers();
|
|
usr.UserName=newusername;
|
|
usr.NormalizedUserName=newusername.ToUpper();
|
|
usr.NormalizedEmail = newusername.ToUpper();
|
|
usr.Email=newusername;
|
|
usr.EmailConfirmed=true;
|
|
Guid g = Guid.NewGuid();
|
|
usr.Id = g.ToString();
|
|
|
|
IdentityUser objUser = new IdentityUser();
|
|
objUser.Id = g.ToString();
|
|
var password = _UserManager.PasswordHasher.HashPassword(objUser,newpassword);
|
|
usr.PasswordHash=password;
|
|
usr.SecurityStamp = Guid.NewGuid().ToString();
|
|
usr.ConcurrencyStamp = Guid.NewGuid().ToString();
|
|
usr.PhoneNumber="";
|
|
usr.PhoneNumberConfirmed=false;
|
|
usr.TwoFactorEnabled = false;
|
|
usr.LockoutEnabled=true;
|
|
usr.AccessFailedCount = 0;
|
|
BlazorApp.Controller.AspNetUsersController.POST(usr);
|
|
|
|
TmpRolle = BlazorApp.Controller.AspNetRolesController.GetByName(stringChecked);
|
|
var _tmprolle = new BWPMModels.AspNetRoles();
|
|
_tmprolle = TmpRolle.First<BWPMModels.AspNetRoles>();
|
|
var usrrole = new BWPMModels.AspNetUserRoles();
|
|
usrrole.UserId = g.ToString();
|
|
usrrole.RoleId = _tmprolle.Id;
|
|
BlazorApp.Controller.AspNetUserRolesController.POST(usrrole);
|
|
|
|
this.NewUserIsVisible=false;
|
|
Grid.Refresh();
|
|
|
|
}
|
|
|
|
public async Task ToolBarClickHandler(Syncfusion.Blazor.Navigations.ClickEventArgs args)
|
|
{
|
|
if (args.Item.Text == "Passwort ändern")
|
|
{
|
|
var temp = await this.Grid.GetSelectedRecords(); // return the details of selceted record
|
|
|
|
if (temp != null)
|
|
{
|
|
Username = temp[0].UserName;
|
|
Gridid = temp[0].Id;
|
|
ShowDialog(1);
|
|
}
|
|
}
|
|
if (args.Item.Text == "Benutzer erstellen")
|
|
{
|
|
ShowDialog(2);
|
|
}
|
|
|
|
}
|
|
|
|
public async Task GetSelectedRecords(RowSelectEventArgs<BWPMModels.AspNetUserRolle> args)
|
|
{
|
|
|
|
}
|
|
|
|
|
|
public List<BWPMModels.AspNetUserRolle> GridData { get; set; }
|
|
public List<BWPMModels.AspNetUserRolle> AspNetUserRolles { get; set; }
|
|
public List<BWPMModels.AspNetRoles> AspNetRoles { get; set; }
|
|
string userid = "";
|
|
public static int? pkey { get; set; }
|
|
public bool Initial { get; set; } = true;
|
|
|
|
public bool ContinuePaging = true;
|
|
public bool InitialRender { get; set; }
|
|
public int Value = 0; // consider that value your querystring contains
|
|
public int foundrow = 0;
|
|
|
|
protected override void OnInitialized()
|
|
{
|
|
/// GridData = OrdersDetails.GetAllRecords();
|
|
GridData = BlazorApp.Controller.AspNetUserRolleController.GetAllData();
|
|
AspNetRoles = BlazorApp.Controller.AspNetRolesController.GetAllData();
|
|
}
|
|
|
|
protected override async Task OnAfterRenderAsync(bool firstRender)
|
|
{
|
|
|
|
userid = await sessionStorage.GetItemAsync<string>("UserID");
|
|
|
|
if (userid == null)
|
|
{
|
|
var authState = await authenticationStateTask;
|
|
var userId = authState.User.Claims.FirstOrDefault().Value;
|
|
var user = authState.User;
|
|
|
|
if (user.Identity.IsAuthenticated)
|
|
|
|
{
|
|
await sessionStorage.SetItemAsync("UserID", userId);
|
|
}
|
|
else
|
|
{
|
|
await sessionStorage.SetItemAsync("UserID", userId);
|
|
}
|
|
}
|
|
}
|
|
private async Task OnBeginHandler(ActionEventArgs<BWPMModels.AspNetUserRolle> Args)
|
|
|
|
{
|
|
if (Args.RequestType == Syncfusion.Blazor.Grids.Action.Save)
|
|
{
|
|
if (Args.Action == "Add")
|
|
{
|
|
|
|
|
|
}
|
|
else
|
|
{
|
|
AspNetUserRoles rolle = new AspNetUserRoles();
|
|
rolle.RoleId = Args.Data.RoleId;
|
|
rolle.UserId = Args.Data.Id;
|
|
BlazorApp.Controller.AspNetUserRolesController.PUT(rolle);
|
|
}
|
|
}
|
|
}
|
|
|
|
public async Task OnCompletedHandler(ActionEventArgs<BWPMModels.AspNetUserRolle> Args)
|
|
|
|
{
|
|
if (Args.RequestType == Syncfusion.Blazor.Grids.Action.Save)
|
|
{
|
|
|
|
}
|
|
}
|
|
public async void RowDataBoundHandler(BeforeDataBoundArgs<BWPMModels.AspNetUserRolle> args)
|
|
{
|
|
if (!Initial)
|
|
{
|
|
//await Task.Delay(100);
|
|
//var Idx = await this.Grid.GetRowIndexByPrimaryKey(Convert.ToDouble(Value)); //get index value
|
|
//this.Grid.SelectRow(Convert.ToDouble(Idx));
|
|
}
|
|
Initial = false;
|
|
}
|
|
|
|
}
|