Hmm, not sure what I just did, but now things work. I think the simple "remember me" filter described here was playing havoc with my site:
http://www.symfony-project.org/book/1_2/06-Inside-the-Controller-Layer I implemented it just as it is described on that page. Seem like the most likely culprit for all of the trouble I had. I removed the filter. On Sep 19, 3:55 am, Jake Barnes <[email protected]> wrote: > Curiously, this line will thrown an error even when I'm authenticated: > > $sf_user->getGuardUser()->getId() > > The method getGuardUser() seems to return nothing. Oddly, if I wish to > go to a secure page that has been defined with this security: > > all: > is_secure: off > > memberList: > is_secure: on > > I can go to memberList and see all the members, as if I'm logged in, > yet this still returns nothing: > > $sf_user->getGuardUser() > > $sf_user is an instance of myUser, which descend from > sfGuardSecurityUser and which has this method: > > public function getGuardUser() > { > if (!$this->user && $id = $this->getAttribute('user_id', null, > 'sfGuardSecurityUser')) > { > $this->user = sfGuardUserPeer::retrieveByPk($id); > > if (!$this->user) > { > // the user does not exist anymore in the database > $this->signOut(); > > throw new sfException('The user does not exist anymore in the > database.'); > } > } > return $this->user; > } > > On Sep 19, 12:14 am, Jake Barnes <[email protected]> wrote: > > > > > The following code always works for me. I can go to the front page of > > the site, and I can log in and I never get an error. > > > For one of my clients, the site works great in FireFox, but throws an > > error in Google Chrome. For another of my clients, the following code > > dies with a fatal error all the time. The error is that the method > > "getId()" is being called on either a non-existent object, or an > > object without that method. In other words, this line throws a fatal > > error: > > > $sf_user->getGuardUser()->getId() > > > This code appears in layout.php. > > > Here is the code: > > > <?php if(isset($sf_user)): ?> > > > <?php if($sf_user->isAuthenticated()): ?> > > > <?php $criteriaToFindProfile = new Criteria(); > > $criteriaToFindProfile->add(sfGuardUserProfilePeer::USER_ID, > > $sf_user->getGuardUser()->getId()); $thisUsersProfile = > > > sfGuardUserProfilePeer::doSelectOne($criteriaToFindProfile); ?> > > > <?php if (@ is_object($thisUsersProfile)): $username = > > $thisUsersProfile->getFirstName()." "; $username .= $thisUsersProfile- > > > >getLastName(); if (!$username) $username = $thisUsersProfile- > > >getsfGuardUser()->getUsername(); endif; ?> > > > <?php if (@ is_object($thisUsersProfile)): ?><p>Hello, <a > > id="userid" href="<?php echo url_for('content/profile?id='. > > $thisUsersProfile->getId()) ?>"><?php echo $username ?>!</a></p><?php > > endif ?> > > <a href="<?php echo url_for("sfGuardAuth/signout") ?>"><img src="<? > > php echo image_path('logout.png') ?>" alt="LOGOUT" /></a> > > > <?php endif; ?> > > > <?php endif; ?> > > > Can anyone think why this would behave differently on different > > people's browsers? > > > I'm having trouble fixing this bug, because I can not recreate it on > > my own machine. > > > What is really bizarre is that my clients browser somehow got past > > this line: > > > <?php if($sf_user->isAuthenticated()): ?> > > > Since the page always died for them with a fatal error, they had no > > way to log in. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "symfony users" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/symfony-users?hl=en -~----------~----~----~----~------~----~------~--~---
