sorry for delay:
<!-- Modal -->
<div id="Modallogin" class="modal hide fade" tabindex="-1" role="dialog"
aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal"
aria-hidden="true">×</button>
<h3 id="myModalLabel">Log in </h3>
</div>
<div class="modal-body">
<p>You could login by your yahoo or gmail account.
</p>
<div id='login_result'></div>
{{=form}}
</div>
</div>
<script>
function login_process(user_type){
$('#Modallogin').modal('show');
$('#auth_user_type').val(user_type);
}
function login(){
var data = $('form').serialize();
$('form input').each(function(){$(this).attr('disabled',true);});
$('#login_result').removeClass('alert alert-error').text('');
$('#login_result').addClass('alert alert-info').text('Connecting...');
$.ajax({
type: "POST",
url: '{{=URL('default','index')}}',
data: data,
success : function(response){
$('form input').each(function(){$(this).attr('disabled',false);});
try{
response = jQuery.parseJSON(response);
}
catch(e){
var response = {'msg':'failed to proceed'};
}
if (!response.logged){
$('#login_result').removeClass('alert alert-info').addClass('alert
alert-error').text(response.msg);
}else{
window.location=response.redirect;
}
}
});
return false;
}
</script>
On Thursday, February 28, 2013 4:15:50 AM UTC+3:30, Massimo Di Pierro wrote:
>
> I still do not understand. Why index() is under returning some times json
> and some times dict with a form? Who makes the ajax callback? If this to be
> embedded in a large page? What is the JS?
>
> On Wednesday, 27 February 2013 14:49:04 UTC-6, yashar wrote:
>>
>> def ajax_login_bare(self, username, password):
>> """
>> check user login and
>> return tuple of (boolean,msg) which first field is successfull login or
>> not
>> and second is failure massage
>> """
>>
>> request = current.request
>> session = current.session
>> table_user = self.settings.table_user
>> if self.settings.login_userfield:
>> userfield = self.settings.login_userfield
>> elif 'username' in table_user.fields:
>> userfield = 'username'
>> else:
>> userfield = 'email'
>> passfield = self.settings.password_field
>> key = {userfield:username,passfield:password}
>> user = self.db(table_user[userfield] == username).select().first()
>> if user:
>> # user in db, check if registration pending or disabled
>> temp_user = user
>> if temp_user.registration_key == 'pending':
>> return (False,self.messages.registration_pending)
>> elif temp_user.registration_key in ('disabled', 'blocked'):
>> return (False,self.messages.login_disabled)
>> elif not temp_user.registration_key is None and
>> temp_user.registration_key.strip():
>> return (False,self.messages.registration_verifying)
>> # try alternate logins 1st as these have the
>> # current version of the password
>> user = None
>> for login_method in self.settings.login_methods:
>> if login_method != self and
>> login_method(username,password):
>> if not self in self.settings.login_methods:
>> # do not store password in db
>> password = None
>> user = self.get_or_create_user(key)
>> break
>> if not user:
>> # alternates have failed, maybe because service inaccessible
>> if self.settings.login_methods[0] == self:
>> # try logging in locally using cached credentials
>> if password == temp_user[passfield]:
>> # success
>> user = temp_user
>> else:
>> # user not in db
>> if not self.settings.alternate_requires_registration:
>> # we're allowed to auto-register users from external systems
>> for login_method in self.settings.login_methods:
>> if login_method != self and
>> login_method(username,password):
>> if not self in self.settings.login_methods:
>> # do not store password in db
>> key[passfield] = None
>> user = self.get_or_create_user(key)
>> break
>> if not user:
>>
>> self.log_event(self.messages.login_failed_log,request.post_vars)
>> return (False,self.messages.invalid_login)
>> else:
>> user = Row(table_user._filter_fields(user, id=True))
>> # process authenticated users
>> # user wants to be logged in for longer
>> self.login_user(user)
>> session.auth.expiration = \
>> request.vars.get('remember', False) and \
>> self.settings.long_expiration or \
>> self.settings.expiration
>> session.auth.remember = 'remember' in request.vars
>> self.log_event(self.messages.login_log, user)
>> return (True,self.messages.logged_in)
>>
>>
>>
>> def index():
>> if request
>> <http://127.0.0.1:8000/examples/global/vars/request>.post_vars:
>> from gluon.serializers import json
>> logged,msg = auth.ajax_login_bare(request
>> <http://127.0.0.1:8000/examples/global/vars/request>.vars.email,request
>> <http://127.0.0.1:8000/examples/global/vars/request>.vars.password)
>> if logged:
>> return json(dict(redirect
>> <http://127.0.0.1:8000/examples/global/vars/redirect>=get_user_info(),logged=logged,msg=msg))
>> else:
>> return json(dict(logged=logged,msg=msg))
>>
>> form = auth.login()
>>
>> return dict(form=form)
>>
>
--
---
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/groups/opt_out.