ChangePassword.php 5.0 KB

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