You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

login.js 5.6 KiB

12 jaren geleden
11 jaren geleden
11 jaren geleden
12 jaren geleden
12 jaren geleden
12 jaren geleden
12 jaren geleden
12 jaren geleden
12 jaren geleden
12 jaren geleden
11 jaren geleden
11 jaren geleden
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. var disable_signup = {{ disable_signup and "true" or "false" }};
  2. var login = {};
  3. $(document).ready(function(wrapper) {
  4. window.location.hash = "#login";
  5. login.login();
  6. $('#login_btn').click(login.do_login);
  7. $('#pass').keypress(function(ev){
  8. if(ev.which==13 && $('#pass').val()) {
  9. $("#login_btn").click();
  10. }
  11. });
  12. $(document).trigger('login_rendered');
  13. })
  14. $(window).on("hashchange", function() {
  15. var route = window.location.hash.slice(1);
  16. if(!route) route = "login";
  17. login[route]();
  18. })
  19. // Login
  20. login.do_login = function(){
  21. var args = {};
  22. if(window.is_sign_up) {
  23. args.cmd = "webnotes.core.doctype.profile.profile.sign_up";
  24. args.email = ($("#login_id").val() || "").trim();
  25. args.full_name = ($("#full_name").val() || "").trim();
  26. if(!args.email || !valid_email(args.email) || !args.full_name) {
  27. login.set_message("Valid email and name required.");
  28. return false;
  29. }
  30. } else if(window.is_forgot) {
  31. args.cmd = "webnotes.core.doctype.profile.profile.reset_password";
  32. args.user = ($("#login_id").val() || "").trim();
  33. if(!args.user) {
  34. login.set_message("Valid Login Id required.");
  35. return false;
  36. }
  37. } else {
  38. args.cmd = "login"
  39. args.usr = ($("#login_id").val() || "").trim();
  40. args.pwd = $("#pass").val();
  41. if(!args.usr || !args.pwd) {
  42. login.set_message("Both login and password required.");
  43. return false;
  44. }
  45. }
  46. $('#login_btn').prop("disabled", true);
  47. $("#login-spinner").toggle(true);
  48. $('#login_message').toggle(false);
  49. $.ajax({
  50. type: "POST",
  51. url: "/",
  52. data: args,
  53. dataType: "json",
  54. statusCode: login.login_handlers
  55. }).always(function(){
  56. $("#login-spinner").toggle(false);
  57. $('#login_btn').prop("disabled", false);
  58. })
  59. return false;
  60. }
  61. login.set_heading = function(html) {
  62. $(".panel-heading").html("<h4>" + html + "</h4>");
  63. }
  64. login.login = function() {
  65. login.set_heading('<i class="icon-lock"></i> Login');
  66. $("#login_wrapper h3").html("Login");
  67. $("#login_id").attr("placeholder", "Login Email Id");
  68. $("#password-row").toggle(true);
  69. $("#full-name-row, #login_message").toggle(false);
  70. $("#login_btn").html("Login").removeClass("btn-success");
  71. $("#forgot-link").html('<a href="#forgot">Forgot Password?</a>');
  72. if(!disable_signup) {
  73. $("#switch-view").empty().append('<div>\
  74. No Account? <a class="btn btn-success" style="margin-left: 10px; margin-top: -2px;"\
  75. href="#sign_up">Sign Up</button></div>');
  76. }
  77. window.is_login = true;
  78. window.is_sign_up = false;
  79. window.is_forgot = false;
  80. }
  81. login.sign_up = function() {
  82. login.set_heading('<i class="icon-thumbs-up"></i> Sign Up');
  83. $("#login_id").attr("placeholder", "Your Email Id");
  84. $("#password-row, #login_message").toggle(false);
  85. $("#full-name-row").toggle(true);
  86. $("#login_btn").html("Sign Up").addClass("btn-success");
  87. $("#forgot-link").html("<a href='#login'>Login</a>");
  88. $("#switch-view").empty();
  89. window.is_sign_up = true;
  90. }
  91. login.forgot = function() {
  92. login.set_heading('<i class="icon-question-sign"></i> Forgot');
  93. $("#login_id").attr("placeholder", "Your Email Id");
  94. $("#password-row, #login_message, #full-name-row").toggle(false);
  95. $("#login_btn").html("Send Password").removeClass("btn-success");
  96. $("#forgot-link").html("<a href='#login'>Login</a>");
  97. $("#switch-view").empty();
  98. window.is_forgot = true;
  99. window.is_sign_up = false;
  100. }
  101. login.set_message = function(message, color) {
  102. wn.msgprint(message);
  103. return;
  104. //$('#login_message').html(message).toggle(true);
  105. }
  106. login.login_handlers = {
  107. 200: function(data) {
  108. if(data.message=="Logged In") {
  109. window.location.href = "app";
  110. } else if(data.message=="No App") {
  111. if(localStorage) {
  112. var last_visited = localStorage.getItem("last_visited") || "/index";
  113. localStorage.removeItem("last_visited");
  114. window.location.href = last_visited;
  115. } else {
  116. window.location.href = "/index";
  117. }
  118. } else if(window.is_sign_up) {
  119. wn.msgprint(data.message);
  120. }
  121. },
  122. 401: function(xhr, data) {
  123. login.set_message("Invalid Login");
  124. }
  125. }
  126. {% if fb_app_id is defined -%}
  127. // facebook login
  128. $(document).ready(function() {
  129. $.ajaxSetup({ cache: true });
  130. var user_id = wn.get_cookie("user_id");
  131. var sid = wn.get_cookie("sid");
  132. // logged in?
  133. if(!sid || sid==="Guest") {
  134. // fallback on facebook login -- no login again
  135. $(".btn-login").html("Login via Facebook").removeAttr("disabled");
  136. } else {
  137. // get private stuff (if access)
  138. // app.setup_user({"user": user_id});
  139. }
  140. });
  141. $(function() {
  142. $login = $(".btn-login").prop("disabled", true);
  143. $.getScript('//connect.facebook.net/en_UK/all.js', function() {
  144. $login.prop("disabled", false);
  145. FB.init({
  146. appId: '{{ fb_app_id }}',
  147. });
  148. $login.click(function() {
  149. $login.prop("disabled", true).html("Logging In...");
  150. login.via_facebook();
  151. });
  152. });
  153. });
  154. login.via_facebook = function() {
  155. // not logged in to facebook either
  156. FB.login(function(response) {
  157. if (response.authResponse) {
  158. // yes logged in via facebook
  159. console.log('Welcome! Fetching your information.... ');
  160. var fb_access_token = response.authResponse.accessToken;
  161. // get user graph
  162. FB.api('/me', function(response) {
  163. response.fb_access_token = fb_access_token || "[none]";
  164. $.ajax({
  165. url:"/",
  166. type: "POST",
  167. data: {
  168. cmd:"webnotes.core.doctype.profile.profile.facebook_login",
  169. data: JSON.stringify(response)
  170. },
  171. statusCode: login.login_handlers
  172. })
  173. });
  174. } else {
  175. wn.msgprint("You have denied access to this application via Facebook. \
  176. Please change your privacy settings in Facebook and try again. \
  177. If you do not want to use Facebook login, <a href='/login'>sign-up</a> here");
  178. }
  179. },{scope:"email"});
  180. }
  181. {%- endif %}