25'ten fazla konu seçemezsiniz Konular bir harf veya rakamla başlamalı, kısa çizgiler ('-') içerebilir ve en fazla 35 karakter uzunluğunda olabilir.
 
 
 
 
 
 

208 satır
5.6 KiB

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