protected override async Task ProcessAsync() { AlertError.ComponentRemove(); if (Button.IsClick) { var loginUserSession = Grid.RowSelect; var loginUserRoleAppList = (await Data.Query <LoginUserRoleApp>().Where(item => item.LoginUserName == loginUserSession.Name && item.LoginUserRoleIsActive == true).QueryExecuteAsync()); if (!loginUserRoleAppList.Any()) { // Username does not exist this.AlertError = new Alert(this.ComponentOwner <AppJson>(), "Username or password wrong!", AlertEnum.Error); } else { var pageMain = this.ComponentOwner <PageMain>(); string password = loginUserSession.PasswordHash; // User entered password string passwordHash = loginUserRoleAppList.First().LoginUserPasswordHash; // In db stored hash string passwordSalt = loginUserRoleAppList.First().LoginUserPasswordSalt; // In db stored salt if (passwordHash != null && !UtilFramework.PasswordIsValid(password, passwordHash, passwordSalt)) { // Password wrong this.AlertError = new Alert(this.ComponentOwner <AppJson>(), "Username or password wrong!", AlertEnum.Error); } else { if (!loginUserRoleAppList.First().LoginUserIsActive) { // User not active this.AlertError = new Alert(this.ComponentOwner <AppJson>(), "User not (yet) active.", AlertEnum.Warning); } else { // Login successful pageMain.LoginUserRoleAppList = loginUserRoleAppList; foreach (var item in pageMain.LoginUserRoleAppList) { item.LoginUserPasswordHash = null; // Remoe from session item.LoginUserPasswordSalt = null; // Remove from session } var loginUserId = pageMain.LoginUserRoleAppList.First().LoginUserId; await pageMain.GridNavigate.LoadAsync(); this.ComponentOwner <AppJson>().Navigate("/"); // Navigate to home after login } } } // Render grid ConfigDeveloper (coffee icon) if user is a developer. await Grid.LoadAsync(); } }