login.tpl 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. <!DOCTYPE html>
  2. <html lang="zh-cn">
  3. <head>
  4. <meta charset="utf-8">
  5. <link rel="shortcut icon" href="{{cdnimg "/favicon.ico"}}">
  6. <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
  7. <meta name="renderer" content="webkit" />
  8. <meta name="viewport" content="width=device-width, initial-scale=1">
  9. <meta name="author" content="MinDoc" />
  10. <title>用户登录 - Powered by MinDoc</title>
  11. <meta name="keywords" content="MinDoc,文档在线管理系统,WIKI,wiki,wiki在线,文档在线管理,接口文档在线管理,接口文档管理">
  12. <meta name="description" content="MinDoc文档在线管理系统 {{.site_description}}">
  13. <!-- Bootstrap -->
  14. <link href="{{cdncss "/static/bootstrap/css/bootstrap.min.css"}}" rel="stylesheet">
  15. <link href="{{cdncss "/static/font-awesome/css/font-awesome.min.css"}}" rel="stylesheet">
  16. <link href="{{cdncss "/static/css/main.css" "version"}}" rel="stylesheet">
  17. <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
  18. <script src="{{cdnjs "/static/jquery/1.12.4/jquery.min.js"}}"></script>
  19. </head>
  20. <body class="manual-container">
  21. <header class="navbar navbar-static-top smart-nav navbar-fixed-top manual-header" role="banner">
  22. <div class="container">
  23. <div class="navbar-header col-sm-12 col-md-6 col-lg-5">
  24. <a href="{{.BaseUrl}}" class="navbar-brand">{{.SITE_NAME}}</a>
  25. </div>
  26. </div>
  27. </header>
  28. <div class="container manual-body">
  29. <div class="row login">
  30. <div class="login-body">
  31. <form role="form" method="post">
  32. {{ .xsrfdata }}
  33. <h3 class="text-center">用户登录</h3>
  34. <div class="form-group">
  35. <div class="input-group">
  36. <div class="input-group-addon">
  37. <i class="fa fa-user"></i>
  38. </div>
  39. <input type="text" class="form-control" placeholder="邮箱 / 用户名" name="account" id="account" autocomplete="off">
  40. </div>
  41. </div>
  42. <div class="form-group">
  43. <div class="input-group">
  44. <div class="input-group-addon">
  45. <i class="fa fa-lock"></i>
  46. </div>
  47. <input type="password" class="form-control" placeholder="密码" name="password" id="password" autocomplete="off">
  48. </div>
  49. </div>
  50. {{if .ENABLED_CAPTCHA }}
  51. {{if ne .ENABLED_CAPTCHA "false"}}
  52. <div class="form-group">
  53. <div class="input-group" style="float: left;width: 195px;">
  54. <div class="input-group-addon">
  55. <i class="fa fa-check-square"></i>
  56. </div>
  57. <input type="text" name="code" id="code" class="form-control" style="width: 150px" maxlength="5" placeholder="验证码" autocomplete="off">&nbsp;
  58. </div>
  59. <img id="captcha-img" style="width: 140px;height: 40px;display: inline-block;float: right" src="{{urlfor "AccountController.Captcha"}}" onclick="this.src='{{urlfor "AccountController.Captcha"}}?key=login&t='+(new Date()).getTime();" title="点击换一张">
  60. <div class="clearfix"></div>
  61. </div>
  62. {{end}}
  63. {{end}}
  64. <div class="checkbox">
  65. <label>
  66. <input type="checkbox" name="is_remember" value="yes"> 保持登录
  67. </label>
  68. <a href="{{urlfor "AccountController.FindPassword" }}" style="display: inline-block;float: right">忘记密码?</a>
  69. </div>
  70. <div class="form-group">
  71. <button type="button" id="btn-login" class="btn btn-success" style="width: 100%" data-loading-text="正在登录..." autocomplete="off">立即登录</button>
  72. </div>
  73. {{if .ENABLED_REGISTER}}
  74. {{if ne .ENABLED_REGISTER "false"}}
  75. <div class="form-group">
  76. 还没有账号?<a href="{{urlfor "AccountController.Register" }}" title="立即注册">立即注册</a>
  77. </div>
  78. {{end}}
  79. {{end}}
  80. </form>
  81. </div>
  82. </div>
  83. <div class="clearfix"></div>
  84. </div>
  85. {{template "widgets/footer.tpl" .}}
  86. <!-- Include all compiled plugins (below), or include individual files as needed -->
  87. <script src="{{cdnjs "/static/bootstrap/js/bootstrap.min.js"}}" type="text/javascript"></script>
  88. <script src="{{cdnjs "/static/layer/layer.js"}}" type="text/javascript"></script>
  89. <script type="text/javascript">
  90. $(function () {
  91. $("#account,#password,#code").on('focus', function () {
  92. $(this).tooltip('destroy').parents('.form-group').removeClass('has-error');
  93. });
  94. $(document).keydown(function (e) {
  95. var event = document.all ? window.event : e;
  96. if (event.keyCode === 13) {
  97. $("#btn-login").click();
  98. }
  99. });
  100. $("#btn-login").on('click', function () {
  101. $(this).tooltip('destroy').parents('.form-group').removeClass('has-error');
  102. var $btn = $(this).button('loading');
  103. var account = $.trim($("#account").val());
  104. var password = $.trim($("#password").val());
  105. var code = $("#code").val();
  106. if (account === "") {
  107. $("#account").tooltip({ placement: "auto", title: "账号不能为空", trigger: 'manual' })
  108. .tooltip('show')
  109. .parents('.form-group').addClass('has-error');
  110. $btn.button('reset');
  111. return false;
  112. } else if (password === "") {
  113. $("#password").tooltip({ title: '密码不能为空', trigger: 'manual' })
  114. .tooltip('show')
  115. .parents('.form-group').addClass('has-error');
  116. $btn.button('reset');
  117. return false;
  118. } else if (code !== undefined && code === "") {
  119. $("#code").tooltip({ title: '验证码不能为空', trigger: 'manual' })
  120. .tooltip('show')
  121. .parents('.form-group').addClass('has-error');
  122. $btn.button('reset');
  123. return false;
  124. } else {
  125. $.ajax({
  126. url: "{{urlfor "AccountController.Login" "url" .url}}",
  127. data: $("form").serializeArray(),
  128. dataType: "json",
  129. type: "POST",
  130. success: function (res) {
  131. if (res.errcode !== 0) {
  132. $("#captcha-img").click();
  133. $("#code").val('');
  134. layer.msg(res.message);
  135. $btn.button('reset');
  136. } else {
  137. turl = res.data;
  138. if (turl === "") {
  139. turl = "/";
  140. }
  141. window.location = turl;
  142. }
  143. },
  144. error: function () {
  145. $("#captcha-img").click();
  146. $("#code").val('');
  147. layer.msg('系统错误');
  148. $btn.button('reset');
  149. }
  150. });
  151. }
  152. return false;
  153. });
  154. });
  155. </script>
  156. </body>
  157. </html>