On 19/09/2007, at 8:15 AM, Lachlan Scott wrote:

In our application, we have a log in component which adds a User object
to the Session if the supplied credentials are correct.

For testing purposes, we use a 'component menu' component which displays
a list of available components, and provides action methods to display
them individually.

We can write an action method in the menu to do a login and then display
the component, like this (pseudo code)

Public WOComponent doLoginAndCallNewPage(){
        // do usual login stuff
        // return the actual page we want
}

Which is all well and good, but feels clumsy, and hard codes the login
variables. I wondered if we couldn't somehow call the desired page and
address its user variable from the WOD, something like this:

MyWebObjectName : MyDesiredComponentName {
        user = <some construct to set a User to this variable>;
}

Sure...

-- CurrentPage.java --
public User fechedUser() {
        if ( session().hasUser() ) {
                return session().user();
        }
        else if ( ! hasCredentials() )
                return this;
        // fetch user from credentials
        try {
                NSDictionary creds = new NSMutableDictionary();
                creds.setObjectForKey( userName(), User.UserNameKey );
                creds.setObjectForKey( ..... );
session().setUser( ( User )EOUtilities.objectMatchingValues( ec, User.ENTITY_NAME, creds ) );
                return fetchedUser();
        }
        catch ( EOUtilities.MoreThanOneException e ) {
                logger.error( "Mayday... no unique constraints on database!" );
                throw new NSForwardException( "Woops..." ... );
        }
        catch ( EOObjectNotAvailableException e ) {
                setCredentialsValue( false );
                return this;
        }
}

MyWebObjectName : MyDesiredComponentName {
        user = fetchedUser;
}

-- MyDesiredComponentName.java --
public User loggedInUser() {
        if ( _user == null )
                _user = ( User )valueForBinding( "user" );
        return _user;
}

with regards,
--

Lachlan Deck



_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to [EMAIL PROTECTED]

Reply via email to