207 lines
No EOL
5.5 KiB
JavaScript
207 lines
No EOL
5.5 KiB
JavaScript
var disable_signup = {{ disable_signup and "true" or "false" }};
|
|
var login = {};
|
|
|
|
$(window).on("hashchange", function() {
|
|
var route = window.location.hash.slice(1);
|
|
if(!route) route = "login";
|
|
login[route]();
|
|
})
|
|
|
|
// Login
|
|
login.do_login = function(){
|
|
var args = {};
|
|
if(window.is_sign_up) {
|
|
args.cmd = "webnotes.core.doctype.profile.profile.sign_up";
|
|
args.email = ($("#login_id").val() || "").trim();
|
|
args.full_name = ($("#full_name").val() || "").trim();
|
|
|
|
if(!args.email || !valid_email(args.email) || !args.full_name) {
|
|
login.set_message("Valid email and name required.");
|
|
return false;
|
|
}
|
|
} else if(window.is_forgot) {
|
|
args.cmd = "webnotes.core.doctype.profile.profile.reset_password";
|
|
args.user = ($("#login_id").val() || "").trim();
|
|
|
|
if(!args.user) {
|
|
login.set_message("Valid Login Id required.");
|
|
return false;
|
|
}
|
|
|
|
} else {
|
|
args.cmd = "login"
|
|
args.usr = ($("#login_id").val() || "").trim();
|
|
args.pwd = $("#pass").val();
|
|
|
|
if(!args.usr || !args.pwd) {
|
|
login.set_message("Both login and password required.");
|
|
return false;
|
|
}
|
|
}
|
|
|
|
$('#login_btn').prop("disabled", true);
|
|
$("#login-spinner").toggle(true);
|
|
$('#login_message').toggle(false);
|
|
|
|
$.ajax({
|
|
type: "POST",
|
|
url: "/",
|
|
data: args,
|
|
dataType: "json",
|
|
statusCode: login.login_handlers
|
|
}).always(function(){
|
|
$("#login-spinner").toggle(false);
|
|
$('#login_btn').prop("disabled", false);
|
|
})
|
|
|
|
return false;
|
|
}
|
|
|
|
login.set_heading = function(html) {
|
|
$(".panel-heading").html("<h4>" + html + "</h4>");
|
|
}
|
|
|
|
login.login = function() {
|
|
login.set_heading('<i class="icon-lock"></i> Login');
|
|
$("#login_wrapper h3").html("Login");
|
|
$("#login_id").attr("placeholder", "Login Email Id");
|
|
$("#password-row").toggle(true);
|
|
$("#full-name-row, #login_message").toggle(false);
|
|
$("#login_btn").html("Login").removeClass("btn-success");
|
|
$("#forgot-link").html('<a href="#forgot">Forgot Password?</a>');
|
|
|
|
if(!disable_signup) {
|
|
$("#switch-view").empty().append('<div>\
|
|
No Account? <a class="btn btn-success" style="margin-left: 10px; margin-top: -2px;"\
|
|
href="#sign_up">Sign Up</button></div>');
|
|
}
|
|
|
|
window.is_login = true;
|
|
window.is_sign_up = false;
|
|
window.is_forgot = false;
|
|
}
|
|
|
|
login.sign_up = function() {
|
|
login.set_heading('<i class="icon-thumbs-up"></i> Sign Up');
|
|
$("#login_id").attr("placeholder", "Your Email Id");
|
|
$("#password-row, #login_message").toggle(false);
|
|
$("#full-name-row").toggle(true);
|
|
$("#login_btn").html("Sign Up").addClass("btn-success");
|
|
$("#forgot-link").html("<a href='#login'>Login</a>");
|
|
$("#switch-view").empty();
|
|
window.is_sign_up = true;
|
|
}
|
|
|
|
login.forgot = function() {
|
|
login.set_heading('<i class="icon-question-sign"></i> Forgot');
|
|
$("#login_id").attr("placeholder", "Your Email Id");
|
|
$("#password-row, #login_message, #full-name-row").toggle(false);
|
|
$("#login_btn").html("Send Password").removeClass("btn-success");
|
|
$("#forgot-link").html("<a href='#login'>Login</a>");
|
|
$("#switch-view").empty();
|
|
window.is_forgot = true;
|
|
window.is_sign_up = false;
|
|
}
|
|
|
|
login.set_message = function(message, color) {
|
|
wn.msgprint(message);
|
|
return;
|
|
//$('#login_message').html(message).toggle(true);
|
|
}
|
|
|
|
login.login_handlers = {
|
|
200: function(data) {
|
|
if(data.message=="Logged In") {
|
|
window.location.href = "app";
|
|
} else if(data.message=="No App") {
|
|
if(localStorage) {
|
|
var last_visited = localStorage.getItem("last_visited") || "/index";
|
|
localStorage.removeItem("last_visited");
|
|
window.location.href = last_visited;
|
|
} else {
|
|
window.location.href = "/index";
|
|
}
|
|
} else if(window.is_sign_up) {
|
|
wn.msgprint(data.message);
|
|
}
|
|
},
|
|
401: function(xhr, data) {
|
|
login.set_message("Invalid Login");
|
|
}
|
|
}
|
|
|
|
|
|
{% if fb_app_id is defined -%}
|
|
// facebook login
|
|
$(document).ready(function() {
|
|
var user_id = wn.get_cookie("user_id");
|
|
var sid = wn.get_cookie("sid");
|
|
|
|
// logged in?
|
|
if(!sid || sid==="Guest") {
|
|
// fallback on facebook login -- no login again
|
|
$(".btn-login").html("Login via Facebook").removeAttr("disabled");
|
|
} else {
|
|
// get private stuff (if access)
|
|
// app.setup_user({"user": user_id});
|
|
}
|
|
|
|
});
|
|
|
|
$(function() {
|
|
$login = $(".btn-login").prop("disabled", true);
|
|
$.getScript('//connect.facebook.net/en_UK/all.js', function() {
|
|
$login.prop("disabled", false);
|
|
FB.init({
|
|
appId: '{{ fb_app_id }}',
|
|
});
|
|
$login.click(function() {
|
|
$login.prop("disabled", true).html("Logging In...");
|
|
login.via_facebook();
|
|
});
|
|
});
|
|
});
|
|
|
|
login.via_facebook = function() {
|
|
// not logged in to facebook either
|
|
FB.login(function(response) {
|
|
if (response.authResponse) {
|
|
// yes logged in via facebook
|
|
console.log('Welcome! Fetching your information.... ');
|
|
var fb_access_token = response.authResponse.accessToken;
|
|
|
|
// get user graph
|
|
FB.api('/me', function(response) {
|
|
response.fb_access_token = fb_access_token || "[none]";
|
|
$.ajax({
|
|
url:"/",
|
|
type: "POST",
|
|
data: {
|
|
cmd:"webnotes.core.doctype.profile.profile.facebook_login",
|
|
data: JSON.stringify(response)
|
|
},
|
|
statusCode: login.login_handlers
|
|
})
|
|
});
|
|
} else {
|
|
wn.msgprint("You have denied access to this application via Facebook. \
|
|
Please change your privacy settings in Facebook and try again. \
|
|
If you do not want to use Facebook login, <a href='/login'>sign-up</a> here");
|
|
}
|
|
},{scope:"email"});
|
|
}
|
|
{%- endif %}
|
|
|
|
$(document).ready(function(wrapper) {
|
|
window.location.hash = "#login";
|
|
login.login();
|
|
|
|
$('#login_btn').click(login.do_login);
|
|
|
|
$('#pass').keypress(function(ev){
|
|
if(ev.which==13 && $('#pass').val()) {
|
|
$("#login_btn").click();
|
|
}
|
|
});
|
|
$(document).trigger('login_rendered');
|
|
}) |