package net.databinder.auth.components.hib; import java.util.List; import net.databinder.auth.AuthSession; import net.databinder.auth.components.DataUserStatusPanelBase; import net.databinder.auth.components.UserAdminPageBase; import net.databinder.auth.data.DataUser; import net.databinder.components.hib.DataForm; import net.databinder.hib.Databinder; import net.databinder.models.hib.HibernateListModel; import org.apache.wicket.markup.html.form.Button; import org.apache.wicket.markup.html.form.Form; import org.apache.wicket.model.IModel; /** * User administration page. Lists all users, allows editing usernames, passwords, and roles. * Must have Role.ADMIN to view. Replaceable String resources: <pre> * data.auth.user_admin * data.auth.user_add * data.auth.username * data.auth.password * data.auth.passwordConfirm * data.auth.roles * data.auth.save * data.auth.delete</pre> * @see AuthSession */ public class UserAdminPage<T extends DataUser> extends UserAdminPageBase<T> { private DataForm<T> form; @Override protected Form<T> adminForm(String id, Class<T> userClass) { return form = new DataForm<T>(id, userClass); } @Override protected Button deleteButton(String id) { return new Button("delete") { @Override public void onSubmit() { Databinder.getHibernateSession().delete(getUserForm().getModelObject()); Databinder.getHibernateSession().getTransaction().commit(); form.clearPersistentObject(); } @Override public boolean isEnabled() { return !((AuthSession)getSession()).getUser().equals(getUserForm().getModelObject()) && getBindingModel().isBound(); } }.setDefaultFormProcessing(false); } @Override protected DataUserStatusPanelBase statusPanel(String id) { return new DataUserStatusPanel(id); } @Override protected IModel<List<T>> userList(Class<T> userClass) { return new HibernateListModel<T>(userClass); } }