:-)

On Thursday, 20 August 2015 10:37:22 UTC-5, Richard wrote:
>
> Also make the redirect a subfunc to be reused...
>
> On Thu, Aug 20, 2015 at 11:36 AM, Richard Vézina <
> [email protected]> wrote:
>
>> Ok, will do it...
>>
>> Richard
>>
>> On Thu, Aug 20, 2015 at 10:53 AM, Anthony <[email protected]> wrote:
>>
>>> Well, you need to know what "next" is, so the redirect has to come after 
>>> that. However, there's no reason you couldn't simply refactor the function 
>>> a bit -- just move the whole block where "next" is defined to the very 
>>> beginning of the function (you could also move the onaccept, onvalidation, 
>>> and log definitions earlier) -- that way no unnecessary code will be 
>>> executed.
>>>
>>> Anthony
>>>
>>>
>>> On Thursday, August 20, 2015 at 9:54:02 AM UTC-4, Richard wrote:
>>>>
>>>> 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]> 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]> 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].
>>>>>>>>>>> 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.
>>>
>>
>>
>

-- 
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