您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 
 
 
 

207 行
5.5 KiB

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