Hola que tal, bueno siguiendo con el tema de los proveedores de asp.net quisiera mostrar como hacer para actualizar roles al determinado usuario.
Vamos a crear en una nuevo pagina, el siguiente aspecto.
Basicamente lo que vamos a hacer es que dependiendo del usuario que seleccione en este formulario me carge algunos datos basicos de dicho usuario y ademas poder asignarle un rol si este no tiene un rol.
Este es el codigo que utilize para manejar esta parte.
1: string userName = "";
2:
3: protected void Page_Load(object sender, EventArgs e)
4: {
5: // retener el username con un querystring
6: userName = this.Request.QueryString["UserName"];
7:
8:
9: if (!this.IsPostBack)
10: {
11: // mostrar los detalles del usuario
12: MembershipUser user = Membership.GetUser(userName);
13: lblUserName.Text = user.UserName;
14: lnkEmail.Text = user.Email;
15: lnkEmail.NavigateUrl = "mailto:" + user.Email;
16: lblRegistered.Text = user.CreationDate.ToString("f");
17: lblLastLogin.Text = user.LastLoginDate.ToString("f");
18: lblLastActivity.Text = user.LastActivityDate.ToString("f");
19: chkOnlineNow.Checked = user.IsOnline;
20: chkApproved.Checked = user.IsApproved;
21: chkLockedOut.Checked = user.IsLockedOut;
22: chkLockedOut.Enabled = user.IsLockedOut;
23:
24: BindRoles();
25: }
26: }
27:
28: private void BindRoles()
29: {
30: // Llenar el CheckBoxList con todas las funciones disponibles y, a continuación, seleccione
31: // A los que pertenece el usuario
32: chklRoles.DataSource = Roles.GetAllRoles();
33: chklRoles.DataBind();
34: foreach (string role in Roles.GetRolesForUser(userName))
35: chklRoles.Items.FindByText(role).Selected = true;
36: }
37:
38: protected void btnCreateRole_Click(object sender, EventArgs e)
39: {
40: if (!Roles.RoleExists(txtNewRole.Text.Trim()))
41: {
42: Roles.CreateRole(txtNewRole.Text.Trim());
43: BindRoles();
44: }
45: }
46:
47: protected void btnUpdateRoles_Click(object sender, EventArgs e)
48: {
49: // actualizar las funciones con el usuario
50: string[] currRoles = Roles.GetRolesForUser(userName);
51: if (currRoles.Length > 0)
52: Roles.RemoveUserFromRoles(userName, currRoles);
53:
54: List<string> newRoles = new List<string>();
55: foreach (ListItem item in chklRoles.Items)
56: {
57: if (item.Selected)
58: newRoles.Add(item.Text);
59: }
60: Roles.AddUserToRoles(userName, newRoles.ToArray());
61:
62: lblRolesFeedbackOK.Visible = true;
63: }
64:
65: protected void chkApproved_CheckedChanged(object sender, EventArgs e)
66: {
67: MembershipUser user = Membership.GetUser(userName);
68: user.IsApproved = chkApproved.Checked;
69: Membership.UpdateUser(user);
70: }
71:
72: protected void chkLockedOut_CheckedChanged(object sender, EventArgs e)
73: {
74: if (!chkLockedOut.Checked)
75: {
76: MembershipUser user = Membership.GetUser(userName);
77: user.UnlockUser();
78: chkLockedOut.Enabled = false;
79: }
80: }
Y una pequena imagen para mostrar el funcionamiento.
Saludos
Romny