Neste artigo veremos como gerenciar users e roles em uma aplicação ASP .NET Core Blazor usando o .NET Core 3.0. |
Continuando o artigo anterior vamos agora implementar as funcionalidades que vão permitir adicionar, editar e deletar usuários.
Recursos usados:
Implementando a inclusão e edição de usuários
Abra o projeto BlazorAutenticacao criado no artigo anterior, e, no arquivo Administrador.razor, logo após o código que exibe a lista de usuários, inclua o código abaixo que vai permitir exibir os botões para Adicionar, Salvar e Deletar usuários onde definimos os eventos @onclick para invocar os respectivos métodos :
...
@if
(MostraPopup) |
Neste código usamos o databinding do Blazor para vincular os dados do objeto que representa o usuário ao formulário permitindo a edição dos dados.
A seguir no método AdicionarNovoUser() inclua o código a seguir:
void AdicionaNovoUser()
{
// cria um novo usuário
objUser = new IdentityUser();
objUser.PasswordHash = "*****";
// Definie o id como vazio
objUser.Id = "";
// abre o popup
MostraPopup = true;
}
|
Aqui estamos criando um novo usuário e atribuindo um Id vazio, uma senha padrão e a seguir abrindo a janela MostraPopup().
Agora no método SalvaUser() inclua o código abaixo :
// obtem o
usuário var user = await _UserManager.FindByIdAsync(objUser.Id); // atualiza Email user.Email = objUser.Email; // atualiza o usuário await _UserManager.UpdateAsync(user); // somente atualiza a senha se o o valor atual // não for o valor padrão if (objUser.PasswordHash != "*****") { var resetToken = await _UserManager.GeneratePasswordResetTokenAsync(user); var passworduser = await _UserManager.ResetPasswordAsync( user, resetToken, objUser.PasswordHash); if (!passworduser.Succeeded) { if (passworduser.Errors.FirstOrDefault() != null) { strError = passworduser.Errors.FirstOrDefault().Description; } else { strError = "Erro na senha..."; } // mantem o popup aberto return; } } // trata os perfis // O usuário esta no perfil admin ? var UserResult = await _UserManager.IsInRoleAsync(user, ADMINISTRATION_ROLE); // O perfil Administrator foi selecionado // mas o usuário não é um Administrator? if ((CurrentUserRole == ADMINISTRATION_ROLE) & (!UserResult)) { // poe o admin no perfil Administrator await _UserManager.AddToRoleAsync(user, ADMINISTRATION_ROLE); } else { // O perfil administrador não foi selecioniado // mas o usuário é um Administrator? if ((CurrentUserRole != ADMINISTRATION_ROLE) & (UserResult)) { // Remove o usuário do perfil Administrator await _UserManager.RemoveFromRoleAsync(user, ADMINISTRATION_ROLE); } } } else { // Inclui um novo usuario var NewUser = new IdentityUser { UserName = objUser.UserName, Email = objUser.Email }; var CreateResult = await _UserManager.CreateAsync(NewUser, objUser.PasswordHash);
if
(!CreateResult.Succeeded) |
Neste método conforme a informação recebido do usuário iremos incluir ou editar os dados. Se houver um usuário selecionado com um ID válido faremos a edição dos dados. Caso não haja um usuário selecionado e o Id for vazio então vamos incluir um novo usuário.
A seguir vamos definir o código do método EditaUser() que vai permitir editar os dados de um usuário selecionado:
async Task EditaUser(IdentityUser _IdentityUser)
{
// Define o usuario selecionado como o atual
objUser = _IdentityUser;
// Obtem o usuario
var user = await _UserManager.FindByIdAsync(objUser.Id);
if (user != null)
{
// O usuario esta no perfiel administrator ?
var UserResult = await _UserManager.IsInRoleAsync(user, ADMINISTRATION_ROLE);
if (UserResult)
{
CurrentUserRole = ADMINISTRATION_ROLE;
}
else
{
CurrentUserRole = "Users";
}
}
// Abre o popup
MostraPopup = true;
}
|
E para concluir vamos incluir o código abaixo no método DeletaUser() que exclui um usuário selecionado :
async Task DeletaUser()
{
// Fecha o Popup
MostraPopup = false;
// Obtem o usuário
var user = await _UserManager.FindByIdAsync(objUser.Id);
if (user != null)
{
// Deleta o usuario
await _UserManager.DeleteAsync(user);
}
// atualiza
GetUsers();
}
|
Agora é só alegria...
Podemos testar executando o projeto e fazendo o login usando um usuário já registrado e a seguir acionando a opção Administração, o que nos dará o seguinte resultado:
Agora podemos incluir, editar e excluir usuário e temos assim todas as funcionalidades para gerenciar usuários implementadas.
Pegue o código do projeto
aqui:
BlazorAutenticacao.zip (sem as referências)
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? |
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
ASP .NET Core - Criando uma aplicação com Angular 2 - Macoratti.net
ASP .NET Core - Criando uma aplicação Web no ... - Macoratti.net
ASP .NET Core - Iniciando com o Blazor - Macoratti
ASP .NET Core - CRUD usando Blazor e Entity ... - Macoratti
Blazor - O novo framework SPA da Microsoft - Macoratti.net
Visual Studio Code - Suporte ao desenvolvimento Blazor