Desenvolvimento - ASP. NET
Administração de Usuários (parte 1): CreateUserWizard customizado com Roles
Na primeira parte desse artigo, iremos aprender a customizar o controle CreateUserWizard para permitir definir as Roles para usuário no momento da sua criação.
por Fabiano Vitucci Santiago
Artigo recomendado para Visual Studio 2005 SP1 |
Introdução
Na primeira parte desse artigo, iremos aprender a customizar o controle CreateUserWizard para permitir definir as Roles para usuário no momento da sua criação.
Interface
Para iniciar nosso artigo, abra o Visual Studio.NET 2005 SP1 e crie um Novo Projeto > C# > ASP.NET Web Application com o nome de CreateUserWizardCustom. Depois abra o Web Form padrão (Default.aspx) e arraste um controle do tipo CreateUserWizard da categoria Login. Agora clique na Smart Tag do controle e depois em Add/Remove WizardSteps... > Add > TemplatedWizardStep [figura 1], adicionando uma nova etapa no Wizard do controle com o título “Add User to Roles”.
Figura 1 – Adicionando uma nova etapa no Wizard
Agora clique novamente na Smart Tag > Step: Add User To Roles > Edit Step [figura 2] para editar a nova etapa do Wizard. Em modo de edição do Wizard, clique na Smart Tag > Display: Content Template (da etapa Add User to Roles), depois adicione um controle CheckBoxList ao Content Template [figura 3].
Figura 2 – Editando a nova etapa do Wizard
Figura 3 – Escolhendo o template e adicionando o CheckBoxList ao Content Template
Depois adicione um controle HiddenField e nomeio-o com hdfNewUser1 [figura 4].
Figura 4 – Web Form completo
Agora clique no controle CreateUserWizard e em propriedades, adicione dois eventos ao código. Para isso, dê um duplo clique nos eventos: CreatedUser e NextButtonClick [figura 5] para que possamos codificá-los.
Figura 5 – Adicionando os eventos
Codificando
Vá até o código do Web Form e coloque o código da listagem 1:
using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls;
namespace CreateUserWizardCustom { public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { //Preenchendo o CheckBoxList (CBL) com as Roles existentes loadRoles(); } }
private void loadRoles() { //Limpando o CBL CheckBoxList cbl1 = (CheckBoxList)this.TemplatedWizardStep1.ContentTemplateContainer.FindControl("CheckBoxList1"); //CheckBoxList cbl1 = (CheckBoxList)this.CreateUserWizard1.WizardSteps[1].FindControl("CheckBoxList1"); cbl1.Items.Clear(); //Executando um Loop nas Roles da aplicação e adicionando ao CBL foreach (string role in Roles.GetAllRoles()) { cbl1.Items.Add(role); } }
protected void CreateUserWizard1_CreatedUser(object sender, EventArgs e) { //Localizando o TextBox com o nome do usuário inserido TextBox tbUser = (TextBox)this.CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("UserName"); //Gravando o username inserido do novo usuário para podermos usar na próxima etapa this.hdfNewUser1.Value = tbUser.Text; }
protected void CreateUserWizard1_NextButtonClick(object sender, WizardNavigationEventArgs e) { //Verificando se a etapa atual é a de nº 2 (index 1) if (e.CurrentStepIndex == 1) { //Localizando o Controle CheckBoxList CheckBoxList cbl1 = (CheckBoxList)this.TemplatedWizardStep1.ContentTemplateContainer.FindControl("CheckBoxList1"); //Adicionando as Roles selecionadas ao usuário recém criado addUserToRoles(cbl1, this.hdfNewUser1.Value.ToString()); } }
private void addUserToRoles(CheckBoxList ctl, string usr) { ArrayList rTemp = new ArrayList(); string[] roles = null; for (int i = 0; i <= ctl.Items.Count - 1; i++) { if (ctl.Items[i].Selected) { rTemp.Add(ctl.Items[i].Text); } roles = (string[])rTemp.ToArray(typeof(string)); } Roles.AddUserToRoles(usr, roles); } } }
|
Listagem 1 – Código do Web Form
Agora vamos configurar de forma rápida a utilização do Membership do ASP.NET 2.0 lembrando que o foco desse artigo não é ensinar como usar o Membership no ASP.NET e sim customizar o controle CreateUserWizard para lhe adicionar uma nova funcionalidade.
Configurando o aplicativo para usar o recurso de Membership
Caso já use esse recurso em sua aplicação, ignore essa etapa do artigo. Caso não saiba, siga os passos abaixo:
- Abra o Web.Config e altere a linha abaixo para:
<authentication mode="Forms" /> |
Dessa forma habilitará a autenticação Forms e permitirá a criação do banco de dados padrão ao iniciar o ASP.NET Web Site Administration Tool. Se tudo correr bem você verá a imagem abaixo e na linha Security verá que não existe nenhum usuário criado no momento [figura 6]:
Figura 6 – Web Site Administration Tool
Para que o exemplo do artigo funcione, precisamos criar algumas roles. Não se preocupe com usuários agora, você os criará quando estiver testando o exemplo do artigo.
Para criar as Roles clique em Security > Enable Roles. Irá habilitar a opção: “Create or Manage roles”. Clique nele e crie algumas Roles. No exemplo criamos: “Administrador, Editor, Usuário” [figura 7].
Figura 7 – Roles criadas
Pronto, agora rode o exemplo com F5 e bom trabalho!
Conclusão
Nesse artigo vimos como é simples implementar uma nova funcionalidade no controle CreateUserWizard que nos permite adicionar o usuário criado às Roles existentes.
No próximo artigo, ensinarei como listar os usuários em um GridView ; Editar, Excluir e Gerenciar as Roles do usuário. Espero que gostem e aproveitem o artigo, até o próximo.
Referências:
Código fonte:
[CreateUserWizardCustom_source.zip]
Requisitos:
Atualização SP1 para o Visual Studio 2005:
[http://msdn2.microsoft.com/pt-br/vstudio/bb265237.aspx]