login.blade.php 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. <style>
  2. .login-box {
  3. margin-top: -10rem;
  4. padding: 5px;
  5. }
  6. .login-card-body {
  7. padding: 1.5rem 1.8rem 1.6rem;
  8. }
  9. .card, .card-body {
  10. border-radius: .45rem
  11. }
  12. .login-btn {
  13. padding-left: 2rem!important;;
  14. padding-right: 1.5rem!important;
  15. }
  16. .content {
  17. overflow-x: hidden;
  18. }
  19. </style>
  20. <div class="login-page bg-40">
  21. <div class="login-box">
  22. <div class="login-logo mb-2">
  23. {{ config('admin.name') }}
  24. </div>
  25. <div class="card">
  26. <div class="card-body login-card-body shadow-100">
  27. <p class="login-box-msg mt-1 mb-1">{{ __('admin.welcome_back') }}</p>
  28. <form id="login-form" method="POST" action="{{ admin_url('auth/login') }}">
  29. @csrf
  30. <fieldset class="form-label-group form-group position-relative has-icon-left">
  31. <input
  32. type="text"
  33. class="form-control {{ $errors->has('username') ? 'is-invalid' : '' }}"
  34. name="username"
  35. placeholder="{{ trans('admin.username') }}"
  36. value="{{ old('username') }}"
  37. required
  38. autofocus
  39. >
  40. <div class="form-control-position">
  41. <i class="feather icon-user"></i>
  42. </div>
  43. <label for="email">{{ trans('admin.username') }}</label>
  44. <div class="help-block with-errors"></div>
  45. @if($errors->has('username'))
  46. <span class="invalid-feedback text-danger" role="alert">
  47. @foreach($errors->get('username') as $message)
  48. <span class="control-label" for="inputError"><i class="feather icon-x-circle"></i> {{$message}}</span><br>
  49. @endforeach
  50. </span>
  51. @endif
  52. </fieldset>
  53. <fieldset class="form-label-group form-group position-relative has-icon-left">
  54. <input
  55. minlength="5"
  56. maxlength="20"
  57. id="password"
  58. type="password"
  59. class="form-control {{ $errors->has('password') ? 'is-invalid' : '' }}"
  60. name="password"
  61. placeholder="{{ trans('admin.password') }}"
  62. required
  63. autocomplete="current-password"
  64. >
  65. <div class="form-control-position">
  66. <i class="feather icon-lock"></i>
  67. </div>
  68. <label for="password">{{ trans('admin.password') }}</label>
  69. <div class="help-block with-errors"></div>
  70. @if($errors->has('password'))
  71. <span class="invalid-feedback text-danger" role="alert">
  72. @foreach($errors->get('password') as $message)
  73. <span class="control-label" for="inputError"><i class="feather icon-x-circle"></i> {{$message}}</span><br>
  74. @endforeach
  75. </span>
  76. @endif
  77. </fieldset>
  78. <div class="form-group d-flex justify-content-between align-items-center">
  79. <div class="text-left">
  80. <fieldset class="checkbox">
  81. <div class="vs-checkbox-con vs-checkbox-primary">
  82. <input id="remember" name="remember" value="1" type="checkbox" {{ old('remember') ? 'checked' : '' }}>
  83. <span class="vs-checkbox">
  84. <span class="vs-checkbox--check">
  85. <i class="vs-icon feather icon-check"></i>
  86. </span>
  87. </span>
  88. <span> {{ trans('admin.remember_me') }}</span>
  89. </div>
  90. </fieldset>
  91. </div>
  92. </div>
  93. <button type="submit" class="btn btn-primary float-right login-btn">
  94. {{ __('admin.login') }}
  95. &nbsp;
  96. <i class="feather icon-arrow-right"></i>
  97. </button>
  98. </form>
  99. </div>
  100. </div>
  101. </div>
  102. </div>
  103. <script>
  104. Dcat.ready(function () {
  105. // ajax表单提交
  106. $('#login-form').form({
  107. validate: true,
  108. success: function (data) {
  109. if (! data.status) {
  110. Dcat.error(data.message);
  111. return false;
  112. }
  113. Dcat.success(data.message);
  114. location.href = data.redirect;
  115. return false;
  116. }
  117. });
  118. });
  119. </script>