There is way what I did works at least imperfectly ?

I want to make a quick gain for a couples of weeks...

After then I will have more time to look into comet_messaging..

Richard

On Wed, Nov 16, 2011 at 1:51 PM, Massimo Di Pierro <
[email protected]> wrote:

> Now I understand what you want to do.
>
> What you propose would not work because there is no logout event.
> Unless the user clicks the logout button, the logout happens when the
> user tries to access the site and the session time exceeds expiration.
> If the user logins and turns the browser off, the
> user_logger_on_update function would never be called.
>
> The only way to do what you need is by using gluon/contrib/
> comet_messaging.
>
> When the user visits a page, it opens an html5 websocket. When the
> user goes away the socket is closed, Over the socket each user would
> send their current session_id info and from the pool of open socket
> you would be able to reconstruct information about the state of each
> user.
>
> Massimo
>
> On Nov 16, 11:09 am, Richard Vézina <[email protected]>
> wrote:
> > Ok so I just need look into : auth.is_logged_in()=False
> >
> > So what about this :
> >
> > def user_logged_on_update(flag, user_id):
> >     """
> >     Update of "logged_on" auth_user field. True = logged on.
> >     """
> >     if user_id != None and flag != None:
> >         db.auth_user[user_id] = dict(logged_on = flag)
> >     return
> >
> > # When user login and log off properly
> > auth.settings.login_onaccept = lambda form: user_logged_on_update('True',
> > auth.user and auth.user.id)
> > auth.settings.logout_onlogout = lambda user:
> user_logged_on_update('False',
> > user.id)
> >
> > # When user let hang for ever his connection for what ever reason
> > if auth.user:
> >     db.auth_user(auth.user and auth.user.id).update(logged_on =
> > auth.is_logged_in())
> >
> > In model file??
> >
> > It's maybe heavy to commit user status on the system every time model is
> > reload, in that case putting those command in CRON hourly could do it??
> >
> > Richard
> >
> > On Wed, Nov 16, 2011 at 10:20 AM, Massimo Di Pierro <
> >
> >
> >
> >
> >
> >
> >
> > [email protected]> wrote:
> > > Inside Auth(...) there is this logic
> >
> > > if auth and auth.last_visit and auth.last_visit + \
> > >                datetime.timedelta(days=0, seconds=auth.expiration) >
> > > request.now:
> > >            self.user = auth.user
> > >            # this is a trick to speed up
> > > sessions
> > >            if (request.now - auth.last_visit).seconds >
> > > (auth.expiration/10):
> > >                auth.last_visit = request.now
> > >        else:
> > >            self.user = None
> > >            session.auth = None
> >
> > > If the user has logged or of the auth session has expires, then
> > > session.auth = None, auth.user = None and auth.is_logged_in()=False.
> >
> > > On Nov 16, 9:12 am, Richard Vézina <[email protected]>
> > > wrote:
> > > > Ok, so what I want is to know how to verify if it authentification
> has
> > > > expired...
> >
> > > > I hope I am clear I don't know the exact wording for what I want...
> >
> > > > But I would trigger a update on my flag ("logged_on" : TRUE/FALSE) in
> > > case
> > > > user don't clic disconnect before close browser or if he leave his
> > > browser
> > > > open until the end of the day without disconnecting.
> >
> > > > My flag is only a way to avoid opening a bunch of sessions files in
> > > > app/sessions/ to look in which user is still logged on. I would be
> sure
> > > > before making update to my app that no body is online and working...
> >
> > > > Thanks
> >
> > > > Richard
> >
> > > > On Tue, Nov 15, 2011 at 10:54 PM, Massimo Di Pierro <
> >
> > > > [email protected]> wrote:
> > > > > There different issues here.
> >
> > > > > One issue is the session storage. It is associated to the cookie
> uuid.
> > > > > This never expires unless the server side file is deleted (the
> script
> > > > > you mention does that).
> >
> > > > > Another issue is the content of the session. For example
> > > > > authentication information. That expires automatically. Even if the
> > > > > session cookie is stolen it is useless.
> >
> > > > > Think of amazon. It always recognizes you but that does not mean it
> > > > > always thinks you are logged in. Web2py does the same. The session
> > > > > always remembers you since there is no reason to forget who you
> are.
> > > > > That does not it always thinks you are authenticated.
> >
> > > > > The only reason to delete session server side is storage space.
> >
> > > > > On Nov 15, 12:56 pm, Richard Vézina <[email protected]>
> > > > > wrote:
> > > > > > Hello,
> >
> > > > > > I just find this :
> >
> > > > > > Mailing-list
> > > > > > [x] expire_sessions.py respects expiration time, thanks iceberg
> >
> > > > > > From the book :
> > > > > > The file "applications/admin/cron/expire_sessions.py" actually
> > > exists and
> > > > > > ships with the *admin* app. It checks for expired sessions and
> > > deletes
> > > > > > them. "applications/admin/cron/crontab" runs this task hourly.
> >
> > > > > > I don't understand why Massimo wrote session never end up here
> in the
> > > > > > thread?
> >
> > > > > > How safe it is if I adapt the expire_sessions.py to my app?
> >
> > > > > > What do I lost if I use to clear sessions files... Until now I
> was
> > > using
> > > > > > them as kind of log to know what a user as do during it session.
> >
> > > > > > Thanks
> >
> > > > > > Richard
> >
> > > > > > On Tue, Nov 15, 2011 at 1:35 PM, Richard Vézina <
> > > > > [email protected]
> >
> > > > > > > wrote:
> > > > > > > I see 2 issues with this method :
> >
> > > > > > > 1) If user close his navigator instead of disconnecting
> properly
> > > > > before...
> >
> > > > > > > 2) User use long expiration option (I will disabling the
> option)
> >
> > > > > > > So to resolve the remaining issue 1, I would like to trigger a
> > > action
> > > > > when
> > > > > > > user session is expired that will reset my flag in case user
> don't
> > > > > > > disconnect (close navigator instead of clic disconnecting)
> before
> > > his
> > > > > > > session has end.
> >
> > > > > > > How can I get know since how long a user is logged on or when
> user
> > > has
> > > > > > > login so I can delta time?
> >
> > > > > > > Richard
> >
> > > > > > > On Mon, Nov 14, 2011 at 4:05 PM, Richard Vézina <
> > > > > > > [email protected]> wrote:
> >
> > > > > > >> Here it is :
> >
> > > > > > >> Redefine auth table like this :
> > > > > > >> auth_table = db.define_table(
> > > > > > >>     auth.settings.table_user_name,
> >
> > > > > > >> Append to default auth user field this field :
> >
> > > > > > >>     Field('logged_on','boolean', writable=False,
> readable=False,
> > > > > > >> default=None),
> >
> > > > > > >> Then I put those lines into db.py that contain my auth
> redefined
> > > table
> > > > > > >> that's it (other models files contain the rest of my tables
> > > models)
> >
> > > > > > >> auth.settings.login_onaccept = lambda form:
> > > > > user_logged_on_update('True',
> > > > > > >> auth.user and auth.user.id)
> > > > > > >> auth.settings.logout_onlogout = lambda user:
> > > > > > >> user_logged_on_update('False', user.id)
> >
> > > > > > >> def user_logged_on_update(flag, user_id):
> > > > > > >>     """
> > > > > > >>     Update of "logged_on" auth_user field. True = logged on.
> > > > > > >>     """
> > > > > > >>     if user_id != None and flag != None:
> > > > > > >>         db.auth_user[user_id] = dict(logged_on = flag)
> > > > > > >>     return
> >
> > > > > > >> I know that function don't go into model so it properly best
> > > fitting
> > > > > into
> > > > > > >> module... But to allow lambda functions to call it I will
> have to
> > > > > import
> > > > > > >> them so... Don't know what best pratice...
> >
> > > > > > >> Also I get user id at login accept by calling : auth.user and
> > > > > > >> auth.user.id
> >
> > > > > > >> But is the form containing user id?
> >
> > > > > > >> What do you think about that?
> >
> > > > > > >> Richard
> >
> > > > > > >> On Mon, Nov 14, 2011 at 2:37 PM, Richard Vézina <
> > > > > > >> [email protected]> wrote:
> >
> > > > > > >>> Hello Sathvik,
> >
> > > > > > >>> Do you use the RBAC web2py feature?
> >
> > > > > > >>> How you "last_in" get update as user logon?
> >
> > > > > > >>> Ok, just re-read your email you don't use the auth...
> >
> > > > > > >>> I think personnalise the auth_user table (or any other name
> you
> > > give
> > > > > it)
> > > > > > >>> and append a boolean "loged_on" (TRUE/FALSE) field could do
> it in
> > > > > > >>> conjunction with :
> >
> > > > > > >>> auth.settings.login_onaccept = lambda form:
> > > > > user_logged_on_update('True')
> >
> > > > > > >>> auth.settings.logout_onlogout - lambda user:
> > > > > > >>> user_logged_on_update('False')
> >
> > > > > > >>> Since we can't assign in lambda using a sub-function that
> update
> > > the
> > > > > > >>> auth_user.logged_on=True or auth_user.logged_on=False will
> do it.
> >
> > > > > > >>> Note : It's just pseudo code... I can report here when I get
> a
> > > > > working
> > > > > > >>> implementation...
> >
> > > > > > >>> :)
> >
> > > > > > >>> Richard
> >
> > > > > > >>> On Fri, Nov 11, 2011 at 1:06 AM, Sathvik Ponangi <
> > > [email protected]
> > > > > >wrote:
> >
> > > > > > >>>> I'm using a Users table & sessions to handle users.
> >
> > > > > > >>>> db.define_table('users',
> > > > > > >>>>>                     db.Field('name', 'string'),
> > > > > > >>>>>                     db.Field('password', 'password'),#If
> local
> > > user
> > > > > > >>>>>                     db.Field('active', 'boolean',
> > > default=False),
> > > > > > >>>>>                     db.Field('uid', 'string'),
> > > > > > >>>>>                     db.Field('slinked', 'string',
> > > > > > >>>>> default=""),#Redirect to a linked account
> > > > > > >>>>>                     db.Field('last_in', 'datetime',
> > > > > > >>>>> default=request.now),
> > > > > > >>>>>                     db.Field('date', 'datetime',
> > > > > default=request.now,
> > > > > > >>>>> writable=False)
> > > > > > >>>>>                 )
> >
> > > > > > >>>> Is it a good idea to switch-over to auth? If so, how do I
> do it?
> >
> > > > > > >>>> On Thu, Nov 10, 2011 at 3:44 AM, Richard Vézina <
> > > > > > >>>> [email protected]> wrote:
> >
> > > > > > >>>>> Thank you!
> >
> > > > > > >>>>> Richard
> >
> > > > > > >>>>> On Wed, Nov 9, 2011 at 4:23 PM, Massimo Di Pierro <
> > > > > > >>>>> [email protected]> wrote:
> >
> > > > > > >>>>>> They are usually called
> >
> > > > > > >>>>>> auth.settings.login_onaccept = lambda form: ..
> > > > > > >>>>>> auth.settings.profile_onaccept = lambda form: ..
> > > > > > >>>>>> auth.settings.<method>_onaccept = lambda form: ..
> >
> > > > > > >>>>>> and they all take the form.
> >
> > > > > > >>>>>> the name exception is
> >
> > > > > > >>>>>> auth.settings.logout_onlogout - lambda user: ...
> >
> > > > > > >>>>>> because there is no form to fill on logout but there is a
> > > user.
> >
> > > > > > >>>>>> On Nov 9, 1:37 pm, Richard Vézina <
> > > [email protected]>
> > > > > > >>>>>> wrote:
> > > > > > >>>>>> > Nice approach so I could update a custom field in
> auth_user
> > > and
> > > > > put
> > > > > > >>>>>> it true
> > > > > > >>>>>> > or false at login and logout?
> >
> > > > > > >>>>>> > How I may set my flag to true?
> >
> > > > > > >>>>>> > Is there a auth.settings.login_onlogin ??
> >
> > > > > > >>>>>> > Thanks
> >
> > > > > > >>>>>> > Richard
> >
> > > > > > >>>>>> > On Wed, Nov 9, 2011 at 2:14 PM, Massimo Di Pierro <
> >
> > > > > > >>>>>> > [email protected]> wrote:
> > > > > > >>>>>> > > Sessions never end. Do you want to detect logout?
> >
> > > > > > >>>>>> > > auth.settings.logout_onlogout = lambda user:
> > > > > > >>>>>> do_something_with(user)
> >
> > ...
> >
> > read more »

Reply via email to