Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

fibalous

Atribuir Roles no CreateUserWizard

Recommended Posts

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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.