Never mind. One onActivate was canceling out the other. I should probably stop coding and go to bed. :)

Mark


On Sep 16, 2009, at 10:25 PM, Mark W. Shead wrote:

I have an abstract class that is extended by pages that require a login. This seems to work except for on the page where I actually manage the users. It appears that the session state object is creating itself.

There is a user session state object. If someone tries to go to an authenticated page, userExists is checked. If it is false then the browser is redirected to the login page.

It appears that the user session state object is being created on its own somehow which lets you access the page without logging in. The properties of this phantom user object are all set to "ApplicationStateManager". (For example user.username is set to ApplicationStateManager.) Is this a bug or am I misunderstanding how things work? It seems to work fine on other pages that don't deal with user management.

Am I somehow creating the session state object using some sort of convention I'm unaware of?

Mark

public class AbstractAuthenticatedPage {
        
        @Inject
        private Logger _logger;

        @Property
        @SessionState
        private User user;
        private boolean userExists;     
        @InjectPage
        private Login loginPage;
        
        Object onActivate() {
                if(!userExists) {
                        _logger.debug("User does not exist, sending to login 
page");

                        loginPage.setNext(this.getClass());
                        return loginPage;
                }
                return null;
        }
}



public class ManageUsers extends AbstractAuthenticatedPage{

        @Inject
        private IDataSource ds;
        
        @Property
        private User aUser;
        
        @Persist("flash")
        @Property
        private User newUser;

        
        public Object onActivate() {
                newUser = new User();
                return null;
        }

        public List<User> getAllUsers() {
                return ds.getAllUsers();        
        }
        
        public void onSuccessFromNewUserForm() {
                ds.addUser(newUser);    
                newUser = new User();
        }
        
        public void onActionFromRemoveUser(String userName) {
                ds.deleteUser(userName);
        }
}


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org

Reply via email to