| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179 |
- <?php
- Lib::loadClass('RouteBase');
- Lib::loadClass('UI');
- class Route_ChangePassword extends RouteBase {
- public function handleAuth() {
- if (!User::logged()) {
- User::authByRequest();
- }
- }
- public function defaultAction() {
- $action = V::get('action', 'showForm', $_POST);
- switch ($action) {
- case "showForm": return UI::layout([ $this, 'showFormView' ], [ 'showMenu' => false ]);
- case "changePassword": return UI::layout([ $this, 'changePasswordPostAction' ], [ 'showMenu' => false ]);
- default: return UI::layout([ $this, 'nonExistsActionView' ], [ 'showMenu' => false ]);
- }
- }
- function nonExistsActionView() {
- UI::startTag('div', [ 'class' => "col-sm-6 col-sm-offset-3" ]);
- UI::alert('danger', "Błąd formularza");
- UI::endTag('div');
- }
- function showFormView() {
- ?>
- <div class="row">
- <div class="col-sm-12 text-center">
- <h2>Zmiana hasła</h2>
- </div>
- </div>
- <form method="post" id="passwordForm">
- <div class="row">
- <div class="col-sm-6 col-sm-offset-3">
- <div style="height:0px; overflow:hidden;">
- <input type="text" name="fake_safari_username">
- <input type="password" name="fake_safari_password">
- </div>
- <input type="password" class="input-lg form-control" name="oldPass" id="oldPass" placeholder="Stare hasło">
- </div>
- </div>
- <div class="row">
- <div class="col-sm-6 col-sm-offset-3">
- <br/>
- <input type="password" class="input-lg form-control" name="newPass" id="newPass" placeholder="Nowe hasło">
- <div class="row">
- <div class="col-sm-6">
- <span id="8char" class="glyphicon glyphicon-remove" style="color:#FF0004;"></span> 8 znaków długości<br>
- <span id="ucase" class="glyphicon glyphicon-remove" style="color:#FF0004;"></span> Jedna duża litera
- </div>
- <div class="col-sm-6">
- <span id="lcase" class="glyphicon glyphicon-remove" style="color:#FF0004;"></span> Jedna mała litera<br>
- <span id="num" class="glyphicon glyphicon-remove" style="color:#FF0004;"></span> Jedna cyfra
- </div>
- </div>
- <input type="password" class="input-lg form-control" name="newPassConfirm" id="newPassConfirm" placeholder="Powtórz nowe hasło">
- <div class="row">
- <div class="col-sm-12">
- <span id="pwmatch" class="glyphicon glyphicon-remove" style="color:#FF0004;"></span> Zgodność nowego hasła
- </div>
- </div>
- <br/>
- <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>
- </div>
- </div>
- </form>
- <script>
- $("input[type=password]").keyup(function(){
- var ucase = new RegExp("[A-Z]+");
- var lcase = new RegExp("[a-z]+");
- var num = new RegExp("[0-9]+");
- var ok = 0;
- if($("#oldPass").val().length > 0){
- ok++;
- }
- if($("#newPass").val().length >= 8){
- $("#8char").removeClass("glyphicon-remove");
- $("#8char").addClass("glyphicon-ok");
- $("#8char").css("color","#00A41E");
- ok++;
- }else{
- $("#8char").removeClass("glyphicon-ok");
- $("#8char").addClass("glyphicon-remove");
- $("#8char").css("color","#FF0004");
- }
- if(ucase.test($("#newPass").val())){
- $("#ucase").removeClass("glyphicon-remove");
- $("#ucase").addClass("glyphicon-ok");
- $("#ucase").css("color","#00A41E");
- ok++;
- }else{
- $("#ucase").removeClass("glyphicon-ok");
- $("#ucase").addClass("glyphicon-remove");
- $("#ucase").css("color","#FF0004");
- }
- if(lcase.test($("#newPass").val())){
- $("#lcase").removeClass("glyphicon-remove");
- $("#lcase").addClass("glyphicon-ok");
- $("#lcase").css("color","#00A41E");
- ok++;
- }else{
- $("#lcase").removeClass("glyphicon-ok");
- $("#lcase").addClass("glyphicon-remove");
- $("#lcase").css("color","#FF0004");
- }
- if(num.test($("#newPass").val())){
- $("#num").removeClass("glyphicon-remove");
- $("#num").addClass("glyphicon-ok");
- $("#num").css("color","#00A41E");
- ok++;
- }else{
- $("#num").removeClass("glyphicon-ok");
- $("#num").addClass("glyphicon-remove");
- $("#num").css("color","#FF0004");
- }
- if(($("#newPass").val() == $("#newPassConfirm").val()) && ($("#newPass").val().length > 0)){
- $("#pwmatch").removeClass("glyphicon-remove");
- $("#pwmatch").addClass("glyphicon-ok");
- $("#pwmatch").css("color","#00A41E");
- ok++;
- }else{
- $("#pwmatch").removeClass("glyphicon-ok");
- $("#pwmatch").addClass("glyphicon-remove");
- $("#pwmatch").css("color","#FF0004");
- }
- if(ok == 6) {
- document.getElementById('submit').disabled = false;
- }else{
- document.getElementById('submit').disabled = true;
- }
- });
- </script>
- <?php
- echo UI::h('div', [ 'class' => "col-sm-6 col-sm-offset-3", 'style' => "margin-top:32px" ], [
- "Wróć do ",
- UI::h('a', [ 'href' => Router::getRoute('Menu')->getLink() ], "menu"),
- ]);
- }
- function changePasswordPostAction() {
- try {
- $oldPass = V::get('oldPass', '', $_POST);
- $newPass = V::get('newPass', '', $_POST);
- $newPassConfirm = V::get('newPassConfirm', '', $_POST);
- if (!($oldPass && $newPass && ($newPass == $newPassConfirm))) throw new Exception("Błąd formularza");
- if ($oldPass == $newPass) throw new Exception("Wprowadź inne hasło niż poprzednio");
- $result = User::changePassword(User::getLogin(), $oldPass, $newPass);
- echo UI::h('div', [ 'class' => "col-sm-6 col-sm-offset-3" ], [
- ($result)
- ? UI::h('div', [ 'class' => 'alert alert-success' ], "Pomyślnie zmieniono hasło")
- : UI::h('div', [ 'class' => 'alert alert-warning' ], "Nie zmieniono hasła"),
- '<br>',
- "Wróć do ",
- UI::h('a', [ 'href' => Router::getRoute('ChangePassword')->getLink() ], "zmiany hasła"),
- " lub do ",
- UI::h('a', [ 'href' => Router::getRoute('Menu')->getLink() ], "menu"),
- ]);
- } catch (Exception $e) {
- UI::startTag('div', [ 'class' => "col-sm-6 col-sm-offset-3" ]);
- UI::alert('danger', $e->getMessage());
- UI::endTag('div');
- $this->showFormView();
- }
- }
- }
|