thanks piere

best regards,
stifan

On Monday, October 26, 2015 at 3:29:49 PM UTC+7, Pierre wrote:
>
> hi stifan,
>
> add this to db.py :
>
> auth.settings.extra_fields['auth_user']=[Field('geolat','float'),
>                                          Field('geolng','float')]
>
> db.auth_user._manual_entry = False
>
> if not db.auth_user._manual_entry:
>     db.auth_user.geolat.readable = False
>     db.auth_user.geolat.writable = False 
>     db.auth_user.geolng.readable = False
>     db.auth_user.geolng.writable = False 
>
> def check_user_geo(form):
>     if session.lat and session.lng:
>         return form
>     else:
>         mess = 'no geo data registration failed'
>         redirect(URL('show_message',args=mess))
>
> auth.settings.register_next = URL('update_user')
> auth.settings.register_onvalidation.append(check_user_geo)
>
> add this to user.html :
>
> <script language="javascript">
> function getLocation() {
>     if(navigator.geolocation)
>         {
>         navigator.geolocation.getCurrentPosition(postLocation);
>         }
>     }
> function postLocation(position) {
>             jQuery.post( '{{=URL('set_location')}}',{lat: 
> +position.coords.latitude, lng: +position.coords.longitude });
>         }
> {{if request.args(0)=='register' and not db.auth_user._manual_entry:}}
>     getLocation();
> {{pass}}
> </script>
>
> put this in default controller :
>
> def set_location():
>     session.lat = request.post_vars['lat']
>     session.lng = request.post_vars['lng']
>
> def update_user():
>     row = db(db.auth_user.id == auth.user_id).select().first()
>     row.geolat = session.lat
>     row.geolng = session.lng
>     row.update_record()
>     mess = 'registration succeeded'
>     redirect(URL('show_message',args=mess))
>
>
> Le lundi 26 octobre 2015 00:05:34 UTC+1, 黄祥 a écrit :
>>
>> hi, pierre,
>>
>> might i know how do you get the latitude and longitude value for your 
>> form.vars?
>>
>> thanks and best regards,
>> stifan
>>
>> On Monday, October 26, 2015 at 12:45:01 AM UTC+7, Pierre wrote:
>>>
>>> thanks this works : 
>>>
>>> auth.settings.register_onvalidation(check_geo)
>>>
>>> +
>>>
>>> def check_geo(form):
>>>       if not form.vars.lat or not form.vars.lng:
>>>             redirect(url('registration_failed'))
>>>            
>>>
>>> Le dimanche 25 octobre 2015 13:34:36 UTC+1, Anthony a écrit :
>>>>
>>>> First, note that auth.settings.login_after_registration is only 
>>>> relevant when auth.settings.registration_requires_verification = True, as 
>>>> that is the only case where it makes sense to differentiate whether login 
>>>> should be allowed immediately or not (when registration does not require 
>>>> verification, the user can immediately login manually, so no reason not to 
>>>> do it automatically).
>>>>
>>>> Anyway, if "geolocation user acceptance" is something that can be 
>>>> handled automatically at time of registration, then just use an 
>>>> auth.settings.register_onvalidation callback to do the check, and simply 
>>>> reject the registration if the check fails. On the other hand, if some 
>>>> manual approval process is required, then you should set 
>>>> auth.settings.registration_requires_approval 
>>>> = True, and that will disable login until the registration has been 
>>>> approved by an admin.
>>>>
>>>> Anthony
>>>>
>>>> On Sunday, October 25, 2015 at 6:29:12 AM UTC-4, Pierre wrote:
>>>>>
>>>>> Yes ok but this is not what I want :
>>>>>
>>>>>
>>>>> extracted from web2py book:
>>>>>
>>>>> "
>>>>>
>>>>> If you want to allow people to register and automatically log them in 
>>>>> after registration but still want to send an email for verification so 
>>>>> that 
>>>>> they cannot login again after logout, unless they completed the 
>>>>> instructions in the email, you can accomplish it as follows:
>>>>>
>>>>> auth.settings.registration_requires_verification = True
>>>>> auth.settings.login_after_registration = True
>>>>>
>>>>> "
>>>>> here is the problem :
>>>>> I added some extra fields to auth_user to provide geolocation data 
>>>>> howewer I cannot predict "geolocation user acceptance" so my idea was to 
>>>>> simply delete the user account in case geolocation is refused. but this 
>>>>> cannot be done since new user is logged in automatically (he cannot log 
>>>>> out 
>>>>> if his account is deleted). Now I think about a different strategy using 
>>>>> permissions and roles like "cannot login till geolocation data provided". 
>>>>> This seems like a lot of complexity to solve a simple task ?
>>>>>
>>>>> Le dimanche 25 octobre 2015 03:55:34 UTC+1, DenesL a écrit :
>>>>>>
>>>>>>
>>>>>> You also need
>>>>>>
>>>>>> settings.registration_requires_verification = True
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Saturday, October 24, 2015 at 8:30:52 PM UTC-4, Pierre wrote:
>>>>>>>
>>>>>>> Hi everyone,
>>>>>>>
>>>>>>> I tried to do it with no success with this:
>>>>>>>
>>>>>>> auth.settings.login_after_registration = False
>>>>>>>
>>>>>>> thanks for your help
>>>>>>>
>>>>>>>

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