Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

fibalous

Atribuir Roles no CreateUserWizard

Mensagens Recomendadas

fibalous

Boas

O caso é o seguinte, gostava de ao criar um user poder atribuir um role, de momento ele atribui um role "default" depois tenho que ir às BD's e alterar o role ID do user. Alguém sabe como posso fazer para atribuir diferentes roles ao criar um login? Já experimentei usar uma droplist com os roles e depois no code behind (c#) fazer if's para comparar o valor da drop com os roles e atribuir o role respectivo mas dá erro não consigo incluir essa comparação no code behind porque diz que a droplist não existe nesse contexto...

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
    <h1 class="pagetitle">Criar Login</h1>
    <asp:CreateUserWizard ID="CreateUserWizard1" runat="server" 
        CompleteSuccessText="Utilizador criado com sucesso" 
        ConfirmPasswordCompareErrorMessage="A Password e a confirmação devem ser iguais" 
        ConfirmPasswordLabelText="Confirmar Password:" 
        ConfirmPasswordRequiredErrorMessage="Confirmação da Password obrigatória" 
        ContinueButtonText="Continuar" CreateUserButtonText="Criar Utilizador" 
        DuplicateEmailErrorMessage="Por favor introduza um endereço de e-mail diferente" 
        DuplicateUserNameErrorMessage="Por favor introduza um nome de utilizador diferente" 
        EmailRegularExpressionErrorMessage="E-mail inválido" 
        EmailRequiredErrorMessage="E-mail obrigatório" 
        InvalidPasswordErrorMessage="Minimo de caracteres para a password: {1}." 
        PasswordRegularExpressionErrorMessage="Por favori introduza uma password diferente" 
        PasswordRequiredErrorMessage="Password obrigatória" 
        UnknownErrorMessage="O utilizador não foi criado. Por favor tente de novo" 
        UserNameLabelText="Nome de utilizador" 
        UserNameRequiredErrorMessage="Nome de utilizador é obrigatório" 
        Height="443px" Width="500px" ContinueDestinationPageUrl="~/Default.aspx" 
        LoginCreatedUser="False" oncreateduser="CreateUserWizard1_CreatedUser">
        <WizardSteps>
            <asp:CreateUserWizardStep ID="CreateUserWizardStep1" runat="server" >
                <ContentTemplate>
                    <table border="0" style="font-size:100%;height:443px;width:431px;">
                        <tr>
                            <td align="right">
                                <asp:Label ID="UserNameLabel" runat="server" AssociatedControlID="UserName">Nome de utilizador</asp:Label>
                            </td>
                            <td>
                                <asp:TextBox ID="UserName" runat="server"></asp:TextBox>
                                <asp:RequiredFieldValidator ID="UserNameRequired" runat="server" 
                                    ControlToValidate="UserName" ErrorMessage="Nome de utilizador é obrigatório" 
                                    ToolTip="Nome de utilizador é obrigatório" ValidationGroup="CreateUserWizard1">*</asp:RequiredFieldValidator>
                            </td>
                        </tr>
                        <tr>
                            <td align="right">
                                <asp:Label ID="PasswordLabel" runat="server" AssociatedControlID="Password">Password:</asp:Label>
                            </td>
                            <td>
                                <asp:TextBox ID="Password" runat="server" TextMode="Password"></asp:TextBox>
                                <asp:RequiredFieldValidator ID="PasswordRequired" runat="server" 
                                    ControlToValidate="Password" ErrorMessage="Password obrigatória" 
                                    ToolTip="Password obrigatória" ValidationGroup="CreateUserWizard1">*</asp:RequiredFieldValidator>
                            </td>
                        </tr>
                        <tr>
                            <td align="right">
                                <asp:Label ID="ConfirmPasswordLabel" runat="server" 
                                    AssociatedControlID="ConfirmPassword">Confirmar Password:</asp:Label>
                            </td>
                            <td>
                                <asp:TextBox ID="ConfirmPassword" runat="server" TextMode="Password"></asp:TextBox>
                                <asp:RequiredFieldValidator ID="ConfirmPasswordRequired" runat="server" 
                                    ControlToValidate="ConfirmPassword" 
                                    ErrorMessage="Confirmação da Password obrigatória" 
                                    ToolTip="Confirmação da Password obrigatória" 
                                    ValidationGroup="CreateUserWizard1">*</asp:RequiredFieldValidator>
                            </td>
                        </tr>
                        <tr>
                            <td align="right">
                                <asp:Label ID="EmailLabel" runat="server" AssociatedControlID="Email">E-mail:</asp:Label>
                            </td>
                            <td>
                                <asp:TextBox ID="Email" runat="server"></asp:TextBox>
                                <asp:RequiredFieldValidator ID="EmailRequired" runat="server" 
                                    ControlToValidate="Email" ErrorMessage="E-mail obrigatório" 
                                    ToolTip="E-mail obrigatório" ValidationGroup="CreateUserWizard1">*</asp:RequiredFieldValidator>
                            </td>
                        </tr>
                       
                        <tr>
                            <td align="center" colspan="2">
                                <asp:CompareValidator ID="PasswordCompare" runat="server" 
                                    ControlToCompare="Password" ControlToValidate="ConfirmPassword" 
                                    Display="Dynamic" ErrorMessage="A Password e a confirmação devem ser iguais" 
                                    ValidationGroup="CreateUserWizard1"></asp:CompareValidator>
                                <asp:Literal ID="ErrorMessage" runat="server" EnableViewState="False"></asp:Literal>
                            </td>
                        </tr>
                    </table>
                </ContentTemplate>
            </asp:CreateUserWizardStep>
            <asp:CompleteWizardStep ID="CompleteWizardStep1" runat="server" >
                <ContentTemplate>
                    <table border="0" style="font-size:100%;height:443px;width:512px;">
                        <tr>
                            <td align="center" colspan="2">
                                Complete</td>
                        </tr>
                        <tr>
                            <td>
                                Utilizador criado com sucesso</td>
                        </tr>
                        <tr>
                            <td align="right" colspan="2">
                                <asp:Button ID="ContinueButton" runat="server" CausesValidation="False" 
                                    CommandName="Continue" Text="Continuar" ValidationGroup="CreateUserWizard1" />
                            </td>
                        </tr>
                    </table>
                </ContentTemplate>
            </asp:CompleteWizardStep>
        </WizardSteps>
    </asp:CreateUserWizard>
</asp:Content>

public partial class rh_CriarLogin : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void CreateUserWizard1_CreatedUser(object sender, EventArgs e)
    {
        Roles.AddUserToRole(CreateUserWizard1.UserName, "operador");
        Server.Transfer("~/success.aspx", true);
    }
}

Agradeço desde já as respostas

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
fibalous

Aqui vai a minha tentativa:

   1. <td align="right">  
   2.               <asp:Label ID="Role" runat="server" AssociatedControlID="Role">Role:</asp:Label>  
   3.           </td>  
   4.           <td>  
   5.               <asp:DropDownList ID="RolesDropDown" runat="server"   
   6.                   DataSourceID="SqlDataSource1" DataTextField="RoleName"   
   7.                   DataValueField="RoleName" Width="130px">  
   8.               </asp:DropDownList>  
   9.               <asp:SqlDataSource ID="SqlDataSource1" runat="server"   
  10.                   ConnectionString="<%$ ConnectionStrings:INTRANETConnectionString %>"   
  11.                   SelectCommand="SELECT [RoleName] FROM [vw_aspnet_Roles]">  
  12.               </asp:SqlDataSource>  
  13.           </td>  

   1. protected void CreateUserWizard1_CreatedUser(object sender, EventArgs e)  
   2. {  
   3.     Roles.AddUserToRole(CreateUserWizard1.UserName, RolesDropDown.SelectedValue);  
   4.     Server.Transfer("~/success.aspx", true);  
   5. }  

dá o seguinte erro:

Error    1    The name 'RolesDropDown' does not exist in the current context

Alguém sabe o que está mal? Obrigado

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
fibalous

já está a funcionar é só indicar a localização da dropdownlist:

protected void CreateUserWizard1_CreatedUser(object sender, EventArgs e)
    {

DropDownList roledddl = ((DropDownList)CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("RolesDropDown"));


        Roles.AddUserToRole(CreateUserWizard1.UserName, roledddl.SelectedValue);
        Server.Transfer("~/success.aspx", true);
    
    }

Espero que seja útil para alguém

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.