tab-config-password-settings.twig 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. <div class="tab-pane fade" id="tab-config-password-settings" role="tabpanel" aria-labelledby="tab-config-password-settings">
  2. <div class="card mb-4">
  3. <div class="card-header d-flex fs-5">
  4. <button class="btn d-md-none flex-grow-1 text-start" data-bs-target="#collapse-tab-config-password-settings" data-bs-toggle="collapse" aria-controls="collapse-tab-config-password-settings">
  5. {{ lang.admin.password_settings }}
  6. </button>
  7. <span class="d-none d-md-block">{{ lang.admin.password_settings }}</span>
  8. </div>
  9. <div id="collapse-tab-config-password-settings" class="card-body collapse" data-bs-parent="#admin-content">
  10. <form class="form-horizontal" data-id="passwordpolicy" role="form" method="post">
  11. <div class="row">
  12. <div class="col-sm-12">
  13. <legend>
  14. {{ lang.admin.password_policy }}
  15. </legend>
  16. <hr />
  17. </div>
  18. </div>
  19. {% for name, value in password_complexity %}
  20. {% if name == 'length' %}
  21. <div class="row mb-4">
  22. <label class="control-label col-sm-3 text-sm-end" for="length">{{ lang.admin.password_length }}:</label>
  23. <div class="col-sm-2">
  24. <input type="number" class="form-control" min="3" max="64" name="length" id="length" value="{{ value }}" required>
  25. </div>
  26. </div>
  27. {% else %}
  28. <input type="hidden" name="{{ name }}" value="0">
  29. <div class="row mb-2">
  30. <div class="offset-sm-3 col-sm-9">
  31. <label>
  32. <input type="checkbox" class="form-check-input" name="{{ name }}" id="{{ name }}" value="1" {% if value == 1 %}checked{% endif %}> {{ lang.admin['password_policy_'~name] }}
  33. </label>
  34. </div>
  35. </div>
  36. {% endif %}
  37. {% endfor %}
  38. <div class="row mt-4 mb-2">
  39. <div class="offset-sm-3 col-sm-9">
  40. <div class="btn-group">
  41. <button class="btn btn-sm d-block d-sm-inline btn-success" data-item="passwordpolicy" data-action="edit_selected" data-id="passwordpolicy" data-api-url='edit/passwordpolicy' data-api-attr='{}' href="#"><i class="bi bi-check-lg"></i> {{ lang.admin.save }}</button>
  42. </div>
  43. </div>
  44. </div>
  45. </form>
  46. <form class="form" role="form" data-id="pw_reset_notification" method="post" style="margin-top: 50px;">
  47. <div class="row">
  48. <div class="col-sm-12">
  49. <legend>
  50. {{ lang.admin.password_reset_settings }}
  51. </legend>
  52. <hr />
  53. <small>{{ lang.admin.reset_password_vars|raw }}</small><br><br>
  54. </div>
  55. </div>
  56. <div class="row mb-4">
  57. <div class="col-sm-6">
  58. <div>
  59. <label for="pw_reset_from">{{ lang.admin.quota_notification_sender }}:</label>
  60. <input type="email" class="form-control" id="pw_reset_from" name="from" value="{{ pw_reset_data.from }}">
  61. </div>
  62. </div>
  63. <div class="col-sm-6">
  64. <div>
  65. <label for="pw_reset_subject">{{ lang.admin.quota_notification_subject }}:</label>
  66. <input type="text" class="form-control" id="pw_reset_subject" name="subject" value="{{ pw_reset_data.subject }}">
  67. </div>
  68. </div>
  69. </div>
  70. <div class="row">
  71. <div class="col-12" data-bs-target="#text_template" style="cursor:pointer" unselectable="on" data-bs-toggle="collapse">
  72. <span class="d-block"><i style="font-size:10pt;" class="bi bi-plus-square"></i> {{ lang.admin.password_reset_tmpl_text }}</span>
  73. <small>{{ lang.admin.restore_template }}</small>
  74. </div>
  75. <div id="text_template" class="col-12 collapse">
  76. <textarea autocorrect="off" spellcheck="false" autocapitalize="none" class="form-control textarea-code mb-2" rows="20" name="text_tmpl">{{ pw_reset_data.text_tmpl|raw }}</textarea>
  77. </div>
  78. <div class="col-12 mt-3" data-bs-target="#html_template" style="cursor:pointer" unselectable="on" data-bs-toggle="collapse">
  79. <span class="d-block"><i style="font-size:10pt;" class="bi bi-plus-square"></i> {{ lang.admin.password_reset_tmpl_html }}</span>
  80. <small>{{ lang.admin.restore_template }}</small>
  81. </div>
  82. <div id="html_template" class="col-12 collapse">
  83. <textarea autocorrect="off" spellcheck="false" autocapitalize="none" class="form-control textarea-code" rows="20" name="html_tmpl">{{ pw_reset_data.html_tmpl|raw }}</textarea>
  84. </div>
  85. </div>
  86. <div class="row">
  87. <div class="col-sm-10">
  88. <div>
  89. <br>
  90. <a type="button" class="btn btn-sm d-block d-sm-inline btn-success" data-action="edit_selected"
  91. data-item="pw_reset_notification"
  92. data-id="pw_reset_notification"
  93. data-api-url='edit/reset-password-notification'
  94. data-api-attr='{}'><i class="bi bi-check-lg"></i> {{ lang.user.save_changes }}</a>
  95. </div>
  96. </div>
  97. </div>
  98. </form>
  99. </div>
  100. </div>
  101. </div>