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    }