001 package net.databinder.auth.components.hib;
002
003 import net.databinder.auth.AuthSession;
004 import net.databinder.auth.components.DataUserStatusPanelBase;
005 import net.databinder.auth.components.UserAdminPageBase;
006 import net.databinder.auth.data.DataUser;
007 import net.databinder.components.hib.DataForm;
008 import net.databinder.hib.Databinder;
009 import net.databinder.models.hib.HibernateListModel;
010
011 import org.apache.wicket.markup.html.form.Button;
012 import org.apache.wicket.markup.html.form.Form;
013 import org.apache.wicket.model.IModel;
014
015 /**
016 * User administration page. Lists all users, allows editing usernames, passwords, and roles.
017 * Must have Role.ADMIN to view. Replaceable String resources: <pre>
018 * data.auth.user_admin
019 * data.auth.user_add
020 * data.auth.username
021 * data.auth.password
022 * data.auth.passwordConfirm
023 * data.auth.roles
024 * data.auth.save
025 * data.auth.delete</pre>
026 * @see AuthSession
027 */
028 public class UserAdminPage extends UserAdminPageBase {
029 private DataForm form;
030
031 @Override
032 protected Form adminForm(String id, Class<? extends DataUser> userClass) {
033 return form = new DataForm(id, userClass);
034 }
035
036 @Override
037 protected Button deleteButton(String id) {
038 return new Button("delete") {
039 @Override
040 public void onSubmit() {
041 Databinder.getHibernateSession().delete(form.getModelObject());
042 Databinder.getHibernateSession().getTransaction().commit();
043 form.clearPersistentObject();
044 }
045 @Override
046 public boolean isEnabled() {
047 return !((AuthSession)getSession()).getUser().equals(form.getModelObject())
048 && getBindingModel().isBound();
049 }
050 }.setDefaultFormProcessing(false);
051 }
052
053
054 @Override
055 protected DataUserStatusPanelBase statusPanel(String id) {
056 return new DataUserStatusPanel(id);
057 }
058
059 @Override
060 protected IModel userList(Class<? extends DataUser> userClass) {
061 return new HibernateListModel(userClass);
062 }
063
064 }