#434 login, reset password, change password, account, updated system reference

This commit is contained in:
Ulf Gebhardt 2017-11-16 09:39:01 +01:00
parent 31f48cd28d
commit 9f254231a2
23 changed files with 330 additions and 6 deletions

View File

@ -0,0 +1,22 @@
<?php
class account_account implements \SYSTEM\PAGE\Page {
public static function title(){
return \SYSTEM\PAGE\text::get('title_account');}
public static function meta(){
return \SYSTEM\PAGE\text::tag('meta_account');}
public function html(){
if(!\SYSTEM\SECURITY\security::isLoggedIn()){
return '<script>system.load("login")</script>';}
$vars = array();
$user = \SYSTEM\SECURITY\security::getUser();
$vars['username'] = $user->username;
$vars['email'] = $user->email;
$vars['confirmed'] = $user->email_confirmed ? 'Ja' : 'Nein';
return SYSTEM\PAGE\replace::replaceFile((new PPAGE('account_account/tpl/account_account.tpl'))->SERVERPATH(), $vars);
}
public static function js(){
return array( new PPAGE('account_account/js/account_account.js'));
}
public static function css(){return array();}
}

View File

@ -0,0 +1,72 @@
function init_account(){
$('#logout').click(function(){
system.account_logout(function (data) {
if(data.status){
$('.help-block').html("Logout successfull.</br>");
system.load('start');
} else {
$('.help-block').html("Logout not successfull.</br>")
}
});
});
$('#confirm_email').click(function(){
system.account_confirm_email(function(data){
if(data.status){
$('.help-block').html("EMail gesendet.");
} else {
$('.help-block').html("Ein Problem ist aufgetreten: "+data.result.message);
}
})
});
$('#save').click(function(){
var data = JSON.stringify({
name: $('#input_name').val(),
lastname: $('#input_lastname').val()
});
$.ajax({type :'POST',
url : './api.php?',
data : { call: 'account',
action: 'detail',
data: data},
success : function(data) {
if(data.status){
system.reload();
} else {
$('.help-block').html('Ein Problem ist aufgetreten: '+data.result.message);
}
}
});
});
$('#grade').css('background-color',getColorForPercentage($('#grade').attr('grade')));
$('[data-toggle="tooltip"]').tooltip();
}
var percentColors = [
{ pct: 0.0, color: { r: 0xff, g: 0x00, b: 0 } },
{ pct: 0.5, color: { r: 0xff, g: 0xff, b: 0 } },
{ pct: 1.0, color: { r: 0x00, g: 0xff, b: 0 } } ];
var getColorForPercentage = function(pct) {
for (var i = 1; i < percentColors.length - 1; i++) {
if (pct < percentColors[i].pct) {
break;
}
}
var lower = percentColors[i - 1];
var upper = percentColors[i];
var range = upper.pct - lower.pct;
var rangePct = (pct - lower.pct) / range;
var pctLower = 1 - rangePct;
var pctUpper = rangePct;
var color = {
r: Math.floor(lower.color.r * pctLower + upper.color.r * pctUpper),
g: Math.floor(lower.color.g * pctLower + upper.color.g * pctUpper),
b: Math.floor(lower.color.b * pctLower + upper.color.b * pctUpper)
};
return 'rgb(' + [color.r, color.g, color.b].join(',') + ')';
// or output as hex if preferred
}

View File

@ -0,0 +1,24 @@
<div class="panel panel-default panel-default" style="margin-right: 5px; margin-left: 5px;">
<div class="panel-heading">
<h4 class="panel-title">
<i class="glyphicon glyphicon-user"></i>&nbsp;&nbsp;Account
</h4>
</div>
<div class="panel-body">
<span><b>Username: </b>${username}</span>
<br>
<span><b>EMail: </b>${email}</span>
<br>
<span><b>EMail bestätigt: </b>${confirmed}</span>
<br>
<br>
<a href="#!changepassword">Passwort ändern</a>
<br><br>
<button class="btn-sm btn btn-primary" style="clear: left; height: 32px; font-size: 13px;" type="submit" id="logout"><span class="glyphicon glyphicon-log-in" aria-hidden="true"></span> Logout</button>
<br>
<br>
<button class="btn-sm btn btn-success" style="clear: left; height: 32px; font-size: 13px;" type="submit" id="confirm_email"><span class="glyphicon glyphicon-check" aria-hidden="true"></span> EMail-Bestätigung anfordern</button>
<br>
<div class="help-block" style="float: left; padding-left: 15px;"></div>
</div>
</div>

View File

@ -0,0 +1,16 @@
<?php
class account_changepassword implements SYSTEM\PAGE\Page {
public static function title(){
return \SYSTEM\PAGE\text::get('title_changepassword');}
public static function meta(){
return \SYSTEM\PAGE\text::tag('meta_changepassword');}
public static function js(){
return array( \LIB\lib_jqbootstrapvalidation::js(),
new PPAGE('account_changepassword/js/account_changepassword.js'));}
public static function css(){
return array( new PPAGE('account_changepassword/css/account_changepassword.css'));}
public function html(){
$vars = \SYSTEM\PAGE\text::tag('changepassword');
return SYSTEM\PAGE\replace::replaceFile((new PPAGE('account_changepassword/tpl/account_changepassword.tpl'))->SERVERPATH(), $vars);
}
}

View File

@ -0,0 +1,16 @@
function init_changepassword(){
$('#btn_changepassword').click(function(){
//TODO: use jqbootstrap validation here
if($('#input_new_password1').val() !== $('#input_new_password2').val()){
$('.help-block').html('Passwort stimmt nicht überein.');
} else {
system.account_change_password($('#input_old_password').val(),$('#input_new_password1').val(),function(data){
if(data.status){
$('.help-block').html('Passwort wurde geändert.');
} else {
$('.help-block').html(data.result.message);
}
});
}
});
}

View File

@ -0,0 +1,31 @@
<div class="row">
<div class="col-md-12">
<div class="panel panel-default panel-danger margin-bottom0" style="margin-right: 5px; margin-left: 5px;">
<div class="panel-heading">
<h4 class="panel-title">
<i class="glyphicon glyphicon-user"></i>&nbsp;&nbsp;Passwort ändern
</h4>
</div>
<div class="panel-body">
<input type="password"
size="35"
style="margin-bottom: 15px; width: 100%;"
id="input_old_password"
placeholder="Altes Passwort"/>
<input type="password"
size="35"
style="margin-bottom: 15px; width: 100%;"
id="input_new_password1"
placeholder="Neues Passwort"/>
<input type="password"
size="35"
style="margin-bottom: 15px; width: 100%;"
id="input_new_password2"
placeholder="Passwort wiederholen"/>
<br>
<button class="btn-sm btn btn-warning" style="float: left; height: 32px; font-size: 13px;" id="btn_changepassword"><span class="glyphicon glyphicon-pencil" aria-hidden="true"></span>&nbsp;&nbsp;Passwort ändern</button>
<p class="help-block" style="float: left; padding-left: 15px;"></p>
</div>
</div>
</div>
</div>

View File

@ -7,4 +7,8 @@ SYSTEM\autoload::registerFolder(dirname(__FILE__).'/default_faq');
SYSTEM\autoload::registerFolder(dirname(__FILE__).'/default_kandidat');
SYSTEM\autoload::registerFolder(dirname(__FILE__).'/default_kontakt');
SYSTEM\autoload::registerFolder(dirname(__FILE__).'/default_unterstuetzen');
SYSTEM\autoload::registerFolder(dirname(__FILE__).'/default_komitee');
SYSTEM\autoload::registerFolder(dirname(__FILE__).'/default_komitee');
SYSTEM\autoload::registerFolder(dirname(__FILE__).'/default_login');
SYSTEM\autoload::registerFolder(dirname(__FILE__).'/default_resetpassword');
SYSTEM\autoload::registerFolder(dirname(__FILE__).'/account_account');
SYSTEM\autoload::registerFolder(dirname(__FILE__).'/account_changepassword');

View File

@ -0,0 +1,16 @@
<?php
class default_login implements SYSTEM\PAGE\Page {
public static function title(){
return \SYSTEM\PAGE\text::get('title_login');}
public static function meta(){
return \SYSTEM\PAGE\text::tag('meta_login');}
public static function js(){
return array( \LIB\lib_jqbootstrapvalidation::js(),
new PPAGE('default_login/js/default_login.js'));}
public static function css(){
return array( new PPAGE('default_login/css/default_login.css'));}
public function html(){
$vars = \SYSTEM\PAGE\text::tag('login');
return SYSTEM\PAGE\replace::replaceFile((new PPAGE('default_login/tpl/default_login.tpl'))->SERVERPATH(), $vars);
}
}

View File

@ -0,0 +1,17 @@
function init_login(){
$("#login_form input").not("[type=submit]").jqBootstrapValidation({
preventSubmit: true,
submitError: function($form, event, errors) {},
submitSuccess: function($form, event){
system.account_login($('#bt_login_email').val(),$('#bt_login_password').val(),function(data){
if(data.status){
$('.help-block').html("Login successfull.</br>");
system.load('account');
} else {
$('.help-block').html("Login not successfull.</br> User & Password combination wrong.");
}
});
event.preventDefault();
}
});
}

View File

@ -0,0 +1,34 @@
<div class="panel panel-default panel-default" style="margin-right: 5px; margin-left: 5px;">
<div class="panel-heading">
<h4 class="panel-title">
<i class="glyphicon glyphicon-user"></i>&nbsp;&nbsp;Login
</h4>
</div>
<div class="panel-body">
<form class="textbox" id="login_form">
<div class="control-group">
<div class="controls">
<input type="text"
size="30"
style="margin-bottom: 15px; width: 100%;"
id="bt_login_email"
placeholder="peter@world.org"
required data-validation-required-message="Nutzername fehlt"/>
</div>
<div class="controls">
<input type="password"
size="30"
style="margin-bottom: 5px; width: 100%;"
id="bt_login_password"
placeholder="geheim23"
minlength="5" data-validation-minlength-message="Passwort zu kurz"
required data-validation-required-message="passwort fehlt"/>
</div>
<br>
<button class="btn-sm btn btn-primary" style="float:left; height: 32px; font-size: 13px;" type="submit" id="login_submit"><span class="glyphicon glyphicon-log-in" aria-hidden="true"></span> Login</button>
<a style="float: right;" href="#!resetpassword">Passwort vergessen?</a>
<div class="help-block" style="float: left; padding-left: 15px;"></div>
</div>
</form>
</div>
</div>

View File

@ -23,7 +23,10 @@ class default_page implements \SYSTEM\PAGE\DefaultPage {
if(!$_escaped_fragment_){
$vars['js'] = self::js();}
$vars['css'] = self::css();
$vars['menu_account'] = \SYSTEM\SECURITY\security::isLoggedIn() ?
\SYSTEM\PAGE\replace::replaceFile((new PPAGE('default_page/tpl/menu_account.tpl'))->SERVERPATH(), array('username' => \SYSTEM\SECURITY\security::getUser()->username)) :
'';
$vars = array_merge($vars, \SYSTEM\PAGE\text::tag('buergerkandidat'));
return SYSTEM\PAGE\replace::replaceFile((new PPAGE('default_page/tpl/default_page.tpl'))->SERVERPATH(), $vars);
return \SYSTEM\PAGE\replace::replaceFile((new PPAGE('default_page/tpl/default_page.tpl'))->SERVERPATH(), $vars);
}
}

View File

@ -69,6 +69,7 @@
<li><a href="#!unterstuetzen" id="menu_unterstuetzen"><span class="glyphicon glyphicon-thumbs-up"></span>&nbsp;&nbsp;<b>Unterst&uuml;tzen</b></a></li>
<li><a href="#!kontakt" id="menu_kontakt"><span class="glyphicon glyphicon-pencil"></span>&nbsp;&nbsp;<b>Kontakt</b></a></li>
</ul>
${menu_account}
</div>
</nav>
</div>

View File

@ -0,0 +1,3 @@
<ul class="nav navbar-nav pull-right">
<li><a href="#!account" id="menu_account"><span class="glyphicon glyphicon-user"></span>&nbsp;&nbsp;<b>${username}</b></a></li>
</ul>

View File

@ -0,0 +1,16 @@
<?php
class default_resetpassword implements SYSTEM\PAGE\Page {
public static function title(){
return \SYSTEM\PAGE\text::get('title_resetpassword');}
public static function meta(){
return \SYSTEM\PAGE\text::tag('meta_resetpassword');}
public static function js(){
return array( \LIB\lib_jqbootstrapvalidation::js(),
new PPAGE('default_resetpassword/js/default_resetpassword.js'));}
public static function css(){
return array( new PPAGE('default_resetpassword/css/default_resetpassword.css'));}
public function html(){
$vars = \SYSTEM\PAGE\text::tag('resetpassword');
return SYSTEM\PAGE\replace::replaceFile((new PPAGE('default_resetpassword/tpl/default_resetpassword.tpl'))->SERVERPATH(), $vars);
}
}

View File

@ -0,0 +1,11 @@
function init_resetpassword(){
$('#btn_resetpassword').click(function(){
system.account_reset_password($('#input_resetpassword').val(),function(data){
if(data.status){
$('.help-block').html('EMail sent.');
} else {
$('.help-block').html(data.result.message);
}
});
});
}

View File

@ -0,0 +1,21 @@
<div class="row">
<div class="col-md-12">
<div class="panel panel-default panel-danger margin-bottom0" style="margin-right: 5px; margin-left: 5px;">
<div class="panel-heading">
<h4 class="panel-title">
<i class="glyphicon glyphicon-user"></i>&nbsp;&nbsp;Passwort zurücksetzen
</h4>
</div>
<div class="panel-body">
<input type="text"
size="35"
style="margin-bottom: 15px; width: 100%;"
id="input_resetpassword"
placeholder="peter@world.org"/>
<br>
<button class="btn-sm btn btn-primary" style="float: left; height: 32px; font-size: 13px;" id="btn_resetpassword"><span class="glyphicon glyphicon-envelope" aria-hidden="true"></span>&nbsp;&nbsp;EMail anfordern</button>
<p class="help-block" style="float: left; padding-left: 15px;"></p>
</div>
</div>
</div>
</div>

View File

@ -30,4 +30,17 @@ class page_buergerkandidaten extends \SYSTEM\API\api_default {
public static function page_impressum(){
return (new default_impressum())->html();}
public static function page_login(){
return (new default_login())->html();}
public static function page_resetpassword(){
return (new default_resetpassword())->html();}
public static function page_account(){
return (new account_account())->html();
}
public static function page_changepassword(){
return (new account_changepassword())->html();}
}

View File

@ -4,4 +4,8 @@ REPLACE INTO `system_page` (`id`, `group`, `name`, `state`, `parent_id`, `login`
REPLACE INTO `system_page` (`id`, `group`, `name`, `state`, `parent_id`, `login`, `type`, `div`, `url`, `func`, `php_class`) VALUES (25, 1, 'kandidat', 'kandidat', -1, 0, 0, '#content', './?page=kandidat', 'init_kandidat', 'default_kandidat');
REPLACE INTO `system_page` (`id`, `group`, `name`, `state`, `parent_id`, `login`, `type`, `div`, `url`, `func`, `php_class`) VALUES (30, 1, 'kontakt', 'kontakt', -1, 0, 0, '#content', './?page=kontakt&zu=${zu}', 'init_kontakt', 'default_kontakt');
REPLACE INTO `system_page` (`id`, `group`, `name`, `state`, `parent_id`, `login`, `type`, `div`, `url`, `func`, `php_class`) VALUES (35, 1, 'unterstuetzen', 'unterstuetzen', -1, 0, 0, '#content', './?page=unterstuetzen', 'init_unterstuetzen', 'default_unterstuetzen');
REPLACE INTO `system_page` (`id`, `group`, `name`, `state`, `parent_id`, `login`, `type`, `div`, `url`, `func`, `php_class`) VALUES (40, 1, 'komitee', 'komitee', -1, 0, 0, '#content', './?page=komitee', 'init_komitee', 'default_komitee');
REPLACE INTO `system_page` (`id`, `group`, `name`, `state`, `parent_id`, `login`, `type`, `div`, `url`, `func`, `php_class`) VALUES (40, 1, 'komitee', 'komitee', -1, 0, 0, '#content', './?page=komitee', 'init_komitee', 'default_komitee');
REPLACE INTO `system_page` (`id`, `group`, `name`, `state`, `parent_id`, `login`, `type`, `div`, `url`, `func`, `php_class`) VALUES (50, 1, 'login', 'login', -1, 0, 0, '#content', './?page=login', 'init_login', 'default_login');
REPLACE INTO `system_page` (`id`, `group`, `name`, `state`, `parent_id`, `login`, `type`, `div`, `url`, `func`, `php_class`) VALUES (51, 1, 'resetpassword', 'resetpassword', -1, 0, 0, '#content', './?page=resetpassword', 'init_resetpassword', 'default_resetpassword');
REPLACE INTO `system_page` (`id`, `group`, `name`, `state`, `parent_id`, `login`, `type`, `div`, `url`, `func`, `php_class`) VALUES (52, 1, 'account', 'account', -1, 0, 0, '#content', './?page=account', 'init_account', 'account_account');
REPLACE INTO `system_page` (`id`, `group`, `name`, `state`, `parent_id`, `login`, `type`, `div`, `url`, `func`, `php_class`) VALUES (53, 1, 'changepassword', 'changepassword', -1, 0, 0, '#content', './?page=changepassword', 'init_changepassword', 'account_changepassword');

File diff suppressed because one or more lines are too long

@ -1 +1 @@
Subproject commit e12fc04ea2b9dee75109535866fbc55bd37087a1
Subproject commit 58ac0153010dd66d6b2da0482a4663490486e513