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]>
----------------------------------------------------------------