ChangePassword.php 5.1 KB

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