package fr.openwide.core.basicapp.web.application.common.typedescriptor.user;
import fr.openwide.core.basicapp.core.business.user.model.User;
import fr.openwide.core.basicapp.web.application.common.typedescriptor.AbstractGenericEntityChildTypeDescriptor;
import fr.openwide.core.basicapp.web.application.common.util.ResourceKeyGenerator;
import fr.openwide.core.basicapp.web.application.security.password.page.SecurityPasswordCreationPage;
import fr.openwide.core.basicapp.web.application.security.password.page.SecurityPasswordExpirationPage;
import fr.openwide.core.basicapp.web.application.security.password.page.SecurityPasswordRecoveryPage;
import fr.openwide.core.basicapp.web.application.security.password.page.SecurityPasswordResetPage;
import fr.openwide.core.wicket.more.application.CoreWicketAuthenticatedApplication;
import fr.openwide.core.wicket.more.link.descriptor.IPageLinkDescriptor;
import fr.openwide.core.wicket.more.link.descriptor.generator.ILinkGenerator;
import fr.openwide.core.wicket.more.link.descriptor.mapper.ITwoParameterLinkDescriptorMapper;
import fr.openwide.core.wicket.more.security.page.LoginSuccessPage;
public abstract class SecurityUserTypeDescriptor<U extends User> extends
AbstractGenericEntityChildTypeDescriptor<UserTypeDescriptor<U>, U> {
private static final long serialVersionUID = -1128901861897146296L;
public static final SecurityUserTypeDescriptor<? extends User> USER = new SecurityUserTypeDescriptor<User>(UserTypeDescriptor.USER) {
private static final long serialVersionUID = 1L;
@Override
protected Object readResolve() {
return USER;
}
@Override
public IPageLinkDescriptor signInPageLinkDescriptor() {
return CoreWicketAuthenticatedApplication.get().getSignInPageLinkDescriptor();
}
@Override
public IPageLinkDescriptor loginSuccessPageLinkDescriptor() {
return LoginSuccessPage.linkDescriptor();
}
@Override
public IPageLinkDescriptor passwordRecoveryPageLinkDescriptor() {
return SecurityPasswordRecoveryPage.linkDescriptor();
}
@Override
public IPageLinkDescriptor passwordExpirationPageLinkDescriptor() {
return SecurityPasswordExpirationPage.linkDescriptor();
}
@Override
public ITwoParameterLinkDescriptorMapper<? extends ILinkGenerator, User, String>
passwordResetPageLinkDescriptorMapper() {
return SecurityPasswordResetPage.MAPPER;
}
@Override
public ITwoParameterLinkDescriptorMapper<? extends ILinkGenerator, User, String>
passwordCreationPageLinkDescriptorMapper() {
return SecurityPasswordCreationPage.MAPPER;
}
};
private SecurityUserTypeDescriptor(UserTypeDescriptor<U> typeDescriptor) {
super(typeDescriptor);
}
public abstract IPageLinkDescriptor signInPageLinkDescriptor();
public abstract IPageLinkDescriptor loginSuccessPageLinkDescriptor();
public abstract IPageLinkDescriptor passwordRecoveryPageLinkDescriptor();
public abstract IPageLinkDescriptor passwordExpirationPageLinkDescriptor();
public abstract ITwoParameterLinkDescriptorMapper<? extends ILinkGenerator, User, String>
passwordResetPageLinkDescriptorMapper();
public abstract ITwoParameterLinkDescriptorMapper<? extends ILinkGenerator, User, String>
passwordCreationPageLinkDescriptorMapper();
public ResourceKeyGenerator resourceKeyGenerator() {
return typeDescriptor.resourceKeyGenerator().withPrefix("security");
}
}