Is doing this that far in the login function a waste of time? I mean, why 
doing all the form preparation (the validators at the top of the 
function)... Your code is cleaner since you flush session._auth_next and 
for this reason you need ot wait next var is defined...

But why this :

        table_user = self.table_user()
        settings = self.settings
        if 'username' in table_user.fields or \
                not settings.login_email_validate:
            tmpvalidator = 
IS_NOT_EMPTY(error_message=self.messages.is_empty)
            if not settings.username_case_sensitive:
                tmpvalidator = [IS_LOWER(), tmpvalidator]
        else:
            tmpvalidator = 
IS_EMAIL(error_message=self.messages.invalid_email)
            if not settings.email_case_sensitive:
                tmpvalidator = [IS_LOWER(), tmpvalidator]

        request = current.request
        response = current.response
        session = current.session

        passfield = settings.password_field
        try:
            table_user[passfield].requires[-1].min_length = 0
        except:
            pass

Comes before exiting the function with the redirect in case user is already 
connected...

The part where request, response, and session get defined is correct to be 
above, but I would put the rest below  the bloc " ### use session for 
federated login"

What do you think?

Richard





Le mercredi 19 août 2015 17:48:16 UTC-4, Anthony a écrit :
>
> Maybe right after the "next" variable is set here 
> <https://github.com/web2py/web2py/blob/master/gluon/tools.py#L2545>, 
> something like:
>
>     if self.is_logged_in():    
>         if next == session._auth_next:
>             del session._auth_next
>         redirect(next, client_side=settings.client_side)
>
> Maybe abstract those last three lines into a function, as nearly the same 
> code is executed in two other places.
>
> Anthony
>
> On Wednesday, August 19, 2015 at 2:23:57 PM UTC-4, Richard wrote:
>>
>> Not sure it required to check if next var is empty or not... If there is 
>> no next in the url it should log in...:
>>
>>         if self.is_logged_in():
>>             if self.get_vars_next() is not None and self.get_vars_next() 
>> != '':
>>                 redirect(self.get_vars_next())
>>             else:
>>                 redirect('default', 'index')
>>
>> So, maybe this could be rewrite like so :
>>
>>
>>     if self.get_vars_next() is not None and self.get_vars_next() != ''
>>  and self.is_logged_in():
>>             redirect(self.get_vars_next())
>>
>> Richard
>>
>> Le mercredi 19 août 2015 14:17:41 UTC-4, Richard a écrit :
>>>
>>> I had this here and it works... Though, it needs to check if _next var 
>>> is populated, if not redirect on default/index maybe...
>>>
>>> What do you think... I am not well versed in security could this create 
>>> a security hole?
>>>
>>>     def login(
>>>         self,
>>>         next=DEFAULT,
>>>         onvalidation=DEFAULT,
>>>         onaccept=DEFAULT,
>>>         log=DEFAULT,
>>>     ):
>>>         """
>>>         returns a login form
>>>
>>>         method: Auth.login([next=DEFAULT [, onvalidation=DEFAULT
>>>             [, onaccept=DEFAULT [, log=DEFAULT]]]])
>>>
>>>         """
>>>         *if self.is_logged_in():*
>>> *            redirect(self.get_vars_next())*
>>>
>>>         table_user = self.table_user()
>>>         settings = self.settings
>>>
>>>
>>>
>>>
>>>
>>>
>>> Le mercredi 19 août 2015 14:01:40 UTC-4, Richard a écrit :
>>>>
>>>> Nop it only cas_login related...
>>>>
>>>> On Wed, Aug 19, 2015 at 2:00 PM, Richard Vézina <[email protected] 
>>>> <javascript:>> wrote:
>>>>
>>>>> Is the function that perform the check is : allow_access()??
>>>>>
>>>>> On Wed, Aug 19, 2015 at 1:59 PM, Richard Vézina <[email protected] 
>>>>> <javascript:>> wrote:
>>>>>
>>>>>> Exactly, I was reading the code figure where the credentials check is 
>>>>>> perform...
>>>>>>
>>>>>> I will try to make a PR, if I can find the right place... I will send 
>>>>>> here before what I come up with if you want to review...
>>>>>>
>>>>>> Richard
>>>>>>
>>>>>> On Wed, Aug 19, 2015 at 1:54 PM, Anthony wrote:
>>>>>>
>>>>>>> On Wednesday, August 19, 2015 at 1:20:49 PM UTC-4, Richard wrote:
>>>>>>>>
>>>>>>>> Hello,
>>>>>>>>
>>>>>>>> I often, fall on this annoying issue... I alway leaves multiple 
>>>>>>>> tabs all accessing my app open... When the browser get restart, all 
>>>>>>>> this 
>>>>>>>> tabs get redirected to "user/login?_next=..." URL when I have been 
>>>>>>>> logged 
>>>>>>>> out from the system... I found it unpleasant that, if I log in in one 
>>>>>>>> of 
>>>>>>>> the tab, I can't just refresh the other tabs... Reload the page still 
>>>>>>>> require me to input my credentials again or that I remove the 
>>>>>>>> "user/login?_next=" from the URL to avoid log in even if I am logged 
>>>>>>>> in...
>>>>>>>>
>>>>>>>> I don't know if we could implement something that would make some 
>>>>>>>> redirection to the next URL component on page reload and how this 
>>>>>>>> could 
>>>>>>>> cause overhead of doing so... But it could make this repetitive task a 
>>>>>>>> memory if it could be implement easilly...
>>>>>>>>
>>>>>>>
>>>>>>> Maybe early in the Auth.login method, there could be a check to see 
>>>>>>> if the user is already logged in (i.e., check for the existence of 
>>>>>>> self.user) and if there is a _next URL -- in that case, there could 
>>>>>>> just be 
>>>>>>> an immediate redirect to the _next URL without bothering with the 
>>>>>>> login. 
>>>>>>> That way, if you re-login in one tab and then hit refresh in another 
>>>>>>> tab, 
>>>>>>> the other tab will return to its original page.
>>>>>>>
>>>>>>> Anthony
>>>>>>>  
>>>>>>>
>>>>>>>>
>>>>>>>> Richard
>>>>>>>>
>>>>>>> -- 
>>>>>>> Resources:
>>>>>>> - http://web2py.com
>>>>>>> - http://web2py.com/book (Documentation)
>>>>>>> - http://github.com/web2py/web2py (Source code)
>>>>>>> - https://code.google.com/p/web2py/issues/list (Report Issues)
>>>>>>> --- 
>>>>>>> You received this message because you are subscribed to the Google 
>>>>>>> Groups "web2py-users" group.
>>>>>>> To unsubscribe from this group and stop receiving emails from it, 
>>>>>>> send an email to [email protected] <javascript:>.
>>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to