I've found a solution:

public class RegistrationFormModel extends 
RenderingModelImpl<RenderableDefinition> {
    private static final org.slf4j.Logger log = 
org.slf4j.LoggerFactory.getLogger(RegistrationFormModel.class);

    private HttpSession session;
    private Node content;

    private String username;
    private String fullName;
    private String email;
    private String password;
    private String passwordConfirmation;


    public RegistrationFormModel(Node content, RenderableDefinition definition, 
RenderingModel<?> parent) {
        super(content, definition, parent);
        session = MgnlContext.getWebContext().getRequest().getSession();
        this.content = content;
    }


    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getFullName() {
        return fullName;
    }

    public void setFullName(String fullName) {
        this.fullName = fullName;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getPasswordConfirmation() {
        return passwordConfirmation;
    }

    public void setPasswordConfirmation(String passwordConfirmation) {
        this.passwordConfirmation = passwordConfirmation;
    }

    public static Provider<AggregationState> initAggregationStateProvider() {
        Provider<AggregationState> aggregationProvider = new 
Provider<AggregationState>() {

            @Override
            public AggregationState get() {
                return MgnlContext.getAggregationState();
            }
        };
        return aggregationProvider;
    }

    public static TemplatingFunctions initTemplatingFunctions() {
        TemplatingFunctions templatingFunctions = new 
TemplatingFunctions(initAggregationStateProvider());
        return templatingFunctions;
    }

    protected String getRedirectPathToInternalContent(String path) throws 
RepositoryException {
        TemplatingFunctions templatingFunctions = initTemplatingFunctions();

        Session hm = content.getSession();
        if (hm.nodeExists(path)) {
            Node targetNode = hm.getNode(path);
            return templatingFunctions.link(targetNode);
        }
        return StringUtils.EMPTY;
    }

    @Override
    public String execute() {
        String redirectTo = null;


        if (getUsername() == null) return super.execute();

        MgnlUserManager userManager = (MgnlUserManager) 
SecuritySupport.Factory.getInstance().getUserManager("public");
        WebContext webContext = MgnlContext.getWebContext();

        UserProfile userProfile = new UserProfile();
        userProfile.setEmail(getEmail());
        userProfile.setFullName(getFullName());
        userProfile.setPassword(getPassword());
        userProfile.setUsername(getUsername());


        PublicUserRegistrationConfig registrationConfig = new 
PublicUserRegistrationConfig();
        registrationConfig.setRealmName("public");
        registrationConfig.setUserProfileClass(UserProfile.class);
        registrationConfig.addDefaultGroup("employees");
        registrationConfig.addDefaultRole("anonymous");


        DefaultUserRegistrar defaultUserRegistrar = new DefaultUserRegistrar();
        User user = defaultUserRegistrar.registerUser(userProfile, 
registrationConfig);


        userManager.setProperty(user, "enabled", new BooleanValue(false));

        try {
            redirectTo = getRedirectPathToInternalContent("/demo-project");
            if (!StringUtils.isEmpty(redirectTo)) {
                webContext.getResponse().sendRedirect(redirectTo);
            }

        } catch (RepositoryException e) {
            throw new RuntimeException(e);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }

        return super.execute();
    }


}

Area Example Template:


<form id="form0" method="post" action="" enctype="multipart/form-data">
Login: <input required="required" type="text" name="username" id="username" 
value="" maxlength="50">
Name: <input required="required" type="text" name="fullName" id="fullName" 
value="" maxlength="50"/>
EMail: <input required="required" type="text" name="email" id="email" value="" 
maxlength="50">
Passwort: <input required="required" type="password" name="password" 
id="password" value="" maxlength="50"/>
Wiederholung: <input required="required" type="password" 
name="passwordConfirmation" id="passwordConfirmation" value=""/>

<button class="button validate" type="submit">Absenden</button>

</form>

This Example creates a user in magnolia … Hope i'm doing it in the right way … 

Delete Server -> filters -> gzip for java.lang.IllegalStateException: PWC3990: 
getWriter() has already been called for this response under Glassfish …

Karl

-- 
Context is everything: 
http://forum.magnolia-cms.com/forum/thread.html?threadId=55b142b9-539a-4c27-aa7c-ae70b5dbea4b


----------------------------------------------------------------
For list details, see http://www.magnolia-cms.com/community/mailing-lists.html
Alternatively, use our forums: http://forum.magnolia-cms.com/
To unsubscribe, E-mail to: <[email protected]>
----------------------------------------------------------------

Reply via email to