ChangePassword.php 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. <?php
  2. Lib::loadClass('RouteBase');
  3. Lib::loadClass('UI');
  4. class Route_ChangePassword extends RouteBase {
  5. public function handleAuth() {
  6. if (!User::logged()) {
  7. User::authByRequest();
  8. }
  9. }
  10. public function defaultAction() {
  11. $action = V::get('action', 'showForm', $_POST);
  12. switch ($action) {
  13. case "showForm": return UI::layout([ $this, 'showFormView' ], [ 'showMenu' => false ]);
  14. case "changePassword": return UI::layout([ $this, 'changePasswordPostAction' ], [ 'showMenu' => false ]);
  15. default: return UI::layout([ $this, 'nonExistsActionView' ], [ 'showMenu' => false ]);
  16. }
  17. }
  18. function nonExistsActionView() {
  19. UI::startTag('div', [ 'class' => "col-sm-6 col-sm-offset-3" ]);
  20. UI::alert('danger', "Błąd formularza");
  21. UI::endTag('div');
  22. }
  23. function showFormView() {
  24. ?>
  25. <div class="row">
  26. <div class="col-sm-12 text-center">
  27. <h2>Zmiana hasła</h2>
  28. </div>
  29. </div>
  30. <form method="post" id="passwordForm">
  31. <div class="row">
  32. <div class="col-sm-6 col-sm-offset-3">
  33. <div style="height:0px; overflow:hidden;">
  34. <input type="text" name="fake_safari_username">
  35. <input type="password" name="fake_safari_password">
  36. </div>
  37. <input type="password" class="input-lg form-control" name="oldPass" id="oldPass" placeholder="Stare hasło">
  38. </div>
  39. </div>
  40. <div class="row">
  41. <div class="col-sm-6 col-sm-offset-3">
  42. <br/>
  43. <input type="password" class="input-lg form-control" name="newPass" id="newPass" placeholder="Nowe hasło">
  44. <div class="row">
  45. <div class="col-sm-6">
  46. <span id="8char" class="glyphicon glyphicon-remove" style="color:#FF0004;"></span> 8 znaków długości<br>
  47. <span id="ucase" class="glyphicon glyphicon-remove" style="color:#FF0004;"></span> Jedna duża litera
  48. </div>
  49. <div class="col-sm-6">
  50. <span id="lcase" class="glyphicon glyphicon-remove" style="color:#FF0004;"></span> Jedna mała litera<br>
  51. <span id="num" class="glyphicon glyphicon-remove" style="color:#FF0004;"></span> Jedna cyfra
  52. </div>
  53. </div>
  54. <input type="password" class="input-lg form-control" name="newPassConfirm" id="newPassConfirm" placeholder="Powtórz nowe hasło">
  55. <div class="row">
  56. <div class="col-sm-12">
  57. <span id="pwmatch" class="glyphicon glyphicon-remove" style="color:#FF0004;"></span> Zgodność nowego hasła
  58. </div>
  59. </div>
  60. <br/>
  61. <button type="submit" id="submit" name="action" value="changePassword" class="col-xs-12 btn btn-primary btn-load btn-lg" disabled>Zmień hasło</button>
  62. </div>
  63. </div>
  64. </form>
  65. <script>
  66. $("input[type=password]").keyup(function(){
  67. var ucase = new RegExp("[A-Z]+");
  68. var lcase = new RegExp("[a-z]+");
  69. var num = new RegExp("[0-9]+");
  70. var ok = 0;
  71. if($("#oldPass").val().length > 0){
  72. ok++;
  73. }
  74. if($("#newPass").val().length >= 8){
  75. $("#8char").removeClass("glyphicon-remove");
  76. $("#8char").addClass("glyphicon-ok");
  77. $("#8char").css("color","#00A41E");
  78. ok++;
  79. }else{
  80. $("#8char").removeClass("glyphicon-ok");
  81. $("#8char").addClass("glyphicon-remove");
  82. $("#8char").css("color","#FF0004");
  83. }
  84. if(ucase.test($("#newPass").val())){
  85. $("#ucase").removeClass("glyphicon-remove");
  86. $("#ucase").addClass("glyphicon-ok");
  87. $("#ucase").css("color","#00A41E");
  88. ok++;
  89. }else{
  90. $("#ucase").removeClass("glyphicon-ok");
  91. $("#ucase").addClass("glyphicon-remove");
  92. $("#ucase").css("color","#FF0004");
  93. }
  94. if(lcase.test($("#newPass").val())){
  95. $("#lcase").removeClass("glyphicon-remove");
  96. $("#lcase").addClass("glyphicon-ok");
  97. $("#lcase").css("color","#00A41E");
  98. ok++;
  99. }else{
  100. $("#lcase").removeClass("glyphicon-ok");
  101. $("#lcase").addClass("glyphicon-remove");
  102. $("#lcase").css("color","#FF0004");
  103. }
  104. if(num.test($("#newPass").val())){
  105. $("#num").removeClass("glyphicon-remove");
  106. $("#num").addClass("glyphicon-ok");
  107. $("#num").css("color","#00A41E");
  108. ok++;
  109. }else{
  110. $("#num").removeClass("glyphicon-ok");
  111. $("#num").addClass("glyphicon-remove");
  112. $("#num").css("color","#FF0004");
  113. }
  114. if(($("#newPass").val() == $("#newPassConfirm").val()) && ($("#newPass").val().length > 0)){
  115. $("#pwmatch").removeClass("glyphicon-remove");
  116. $("#pwmatch").addClass("glyphicon-ok");
  117. $("#pwmatch").css("color","#00A41E");
  118. ok++;
  119. }else{
  120. $("#pwmatch").removeClass("glyphicon-ok");
  121. $("#pwmatch").addClass("glyphicon-remove");
  122. $("#pwmatch").css("color","#FF0004");
  123. }
  124. if(ok == 6) {
  125. document.getElementById('submit').disabled = false;
  126. }else{
  127. document.getElementById('submit').disabled = true;
  128. }
  129. });
  130. </script>
  131. <?php
  132. echo UI::h('div', [ 'class' => "col-sm-6 col-sm-offset-3", 'style' => "margin-top:32px" ], [
  133. "Wróć do ",
  134. UI::h('a', [ 'href' => Router::getRoute('Menu')->getLink() ], "menu"),
  135. ]);
  136. }
  137. function changePasswordPostAction() {
  138. try {
  139. $oldPass = V::get('oldPass', '', $_POST);
  140. $newPass = V::get('newPass', '', $_POST);
  141. $newPassConfirm = V::get('newPassConfirm', '', $_POST);
  142. if (!($oldPass && $newPass && ($newPass == $newPassConfirm))) throw new Exception("Błąd formularza");
  143. if ($oldPass == $newPass) throw new Exception("Wprowadź inne hasło niż poprzednio");
  144. $result = User::changePassword(User::getLogin(), $oldPass, $newPass);
  145. echo UI::h('div', [ 'class' => "col-sm-6 col-sm-offset-3" ], [
  146. ($result)
  147. ? UI::h('div', [ 'class' => 'alert alert-success' ], "Pomyślnie zmieniono hasło")
  148. : UI::h('div', [ 'class' => 'alert alert-warning' ], "Nie zmieniono hasła"),
  149. '<br>',
  150. "Wróć do ",
  151. UI::h('a', [ 'href' => Router::getRoute('ChangePassword')->getLink() ], "zmiany hasła"),
  152. " lub do ",
  153. UI::h('a', [ 'href' => Router::getRoute('Menu')->getLink() ], "menu"),
  154. ]);
  155. } catch (Exception $e) {
  156. UI::startTag('div', [ 'class' => "col-sm-6 col-sm-offset-3" ]);
  157. UI::alert('danger', $e->getMessage());
  158. UI::endTag('div');
  159. $this->showFormView();
  160. }
  161. }
  162. }