RE: TorqueUser synchronization problem

Sheldon Ross <[email protected]> Thu, 12 Jan 2012 16:05:47 +0000
Newsgroups gmane.comp.jakarta.turbine.user
Message-ID <[email protected]>
Lol not sure what that if statement is doing now that I look at the code. I think that was put it in before the 2 statements before it. 

That's what you get for exposing your hacky code to the world.

> From: [email protected]
> To: [email protected]
> Subject: RE: TorqueUser synchronization problem
> Date: Thu, 12 Jan 2012 15:11:07 +0000
> 
> 
> You'll have issues updating other user's records using TurbineSecurity.saveUser(user) or any other method for that matter. This is because if the other user happens to be logged in when you update his user, it will be overwritten when that user logs out. 
> 
> When someone logs out, the session invalidation automatically saves the user in order to update last logged in time. This will overwrite changes made via a different user.
> 
> In order to get around this, we actually update TurbineSecurity (Turbine 2.3) and made the save on session unbind look like this.
> 
>  public static void saveOnSessionUnbind(User user)
>             throws UnknownEntityException, DataBackendException
>     {
>         //Get a fresh copy in case user was updated during session
>         User fresh = getUser(user.getName());
>         fresh.setHasLoggedIn(user.hasLoggedIn());
>         fresh.setLastLogin(user.getLastLogin());
>         if(fresh != null) getService().saveOnSessionUnbind(fresh);
>     }
> 
> Makes sure a fresh copy of user data is pulled in before saving, so it doesn't overwrite a password/email update on logout.
> 
> 
> > From: [email protected]
> > Date: Thu, 12 Jan 2012 03:42:43 +0800
> > Subject: Re: TorqueUser synchronization problem
> > To: [email protected]
> > 
> > Hello,
> > 
> > I think the problem could not be solved yet because userB's TorqueUser
> > instance is session record, which is cached and should not
> > synchronized automatically even if userA modifys his record in
> > database.
> > 
> > Am I right?
> > 
> > Regards
> > 
> > Weffen
> > 
> > 在 2012-1-12,3:37,Thomas Vandahl <[email protected]> 写道:
> > 
> > > On 11.01.12 20:04, Weffen Cheung wrote:
> > >> Sometimes I update a user record not only after the user login. For example, I want to update userB's record when userA login. For this case, we cannot use data.getUser().save(), is it right?
> > >
> > > Well, there is TurbineSecurity.getUser(userName) which gives you any
> > > user from your backend. The clean solution would be to use
> > > TurbineSecurity.saveUser(user) then to make your modifications persistent.
> > >
> > > The only remaining question would be what userB is going to say if userA
> > > modifies his email address, IOW a permission issue.
> > >
> > > Bye, Thomas.
> > >
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: [email protected]
> > > For additional commands, e-mail: [email protected]
> > >
> > 
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [email protected]
> > For additional commands, e-mail: [email protected]
> > 
>