Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions config/config.ini.example
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,9 @@ login.protect.private = ""
; Multi-factor authentication
mfa.state = "false"

; Validate admin session against client IP address. Options "true" and "false"
session.ip.validation = "true"

; Pagination, RSS, and JSON
posts.perpage = "10"
category.perpage = "10"
Expand Down
4 changes: 4 additions & 0 deletions lang/ar_AR.ini
Original file line number Diff line number Diff line change
Expand Up @@ -340,3 +340,7 @@ backtotop = "Back to top"
subpages = "Sub pages"
getstarted = "Get started"
onthispage = "On this page"
keep_me_logged_in = "Keep me logged in"
session_security = "Session security"
ip_session_validation = "IP session validation"
ip_session_validation_explain = "Keep this enabled for better security. Disable only for users whose IP changes frequently (for example, mobile networks)."
4 changes: 4 additions & 0 deletions lang/be_BY.ini
Original file line number Diff line number Diff line change
Expand Up @@ -341,3 +341,7 @@ backtotop = "Back to top"
subpages = "Sub pages"
getstarted = "Get started"
onthispage = "On this page"
keep_me_logged_in = "Keep me logged in"
session_security = "Session security"
ip_session_validation = "IP session validation"
ip_session_validation_explain = "Keep this enabled for better security. Disable only for users whose IP changes frequently (for example, mobile networks)."
4 changes: 4 additions & 0 deletions lang/cs_CZ.ini
Original file line number Diff line number Diff line change
Expand Up @@ -340,3 +340,7 @@ backtotop = "Back to top"
subpages = "Sub pages"
getstarted = "Get started"
onthispage = "On this page"
keep_me_logged_in = "Keep me logged in"
session_security = "Session security"
ip_session_validation = "IP session validation"
ip_session_validation_explain = "Keep this enabled for better security. Disable only for users whose IP changes frequently (for example, mobile networks)."
4 changes: 4 additions & 0 deletions lang/da_DK.ini
Original file line number Diff line number Diff line change
Expand Up @@ -351,3 +351,7 @@ backtotop = "Back to top"
subpages = "Sub pages"
getstarted = "Get started"
onthispage = "On this page"
keep_me_logged_in = "Keep me logged in"
session_security = "Session security"
ip_session_validation = "IP session validation"
ip_session_validation_explain = "Keep this enabled for better security. Disable only for users whose IP changes frequently (for example, mobile networks)."
4 changes: 4 additions & 0 deletions lang/de_DE.ini
Original file line number Diff line number Diff line change
Expand Up @@ -340,3 +340,7 @@ subpages = "Unterseiten"
getstarted = "Los geht's"
onthispage = "Auf dieser Seite"
backtotop = "Nach oben"
keep_me_logged_in = "Keep me logged in"
session_security = "Session security"
ip_session_validation = "IP session validation"
ip_session_validation_explain = "Keep this enabled for better security. Disable only for users whose IP changes frequently (for example, mobile networks)."
4 changes: 4 additions & 0 deletions lang/de_DE_gender_doppelpunkt.ini
Original file line number Diff line number Diff line change
Expand Up @@ -340,3 +340,7 @@ subpages = "Unterseiten"
getstarted = "Los geht's"
onthispage = "Auf dieser Seite"
backtotop = "Nach oben"
keep_me_logged_in = "Keep me logged in"
session_security = "Session security"
ip_session_validation = "IP session validation"
ip_session_validation_explain = "Keep this enabled for better security. Disable only for users whose IP changes frequently (for example, mobile networks)."
4 changes: 4 additions & 0 deletions lang/de_DE_gender_dudenkonform.ini
Original file line number Diff line number Diff line change
Expand Up @@ -340,3 +340,7 @@ subpages = "Unterseiten"
getstarted = "Los geht's"
onthispage = "Auf dieser Seite"
backtotop = "Nach oben"
keep_me_logged_in = "Keep me logged in"
session_security = "Session security"
ip_session_validation = "IP session validation"
ip_session_validation_explain = "Keep this enabled for better security. Disable only for users whose IP changes frequently (for example, mobile networks)."
4 changes: 4 additions & 0 deletions lang/el_GR.ini
Original file line number Diff line number Diff line change
Expand Up @@ -342,3 +342,7 @@ backtotop = "Back to top"
subpages = "Sub pages"
getstarted = "Get started"
onthispage = "On this page"
keep_me_logged_in = "Keep me logged in"
session_security = "Session security"
ip_session_validation = "IP session validation"
ip_session_validation_explain = "Keep this enabled for better security. Disable only for users whose IP changes frequently (for example, mobile networks)."
4 changes: 4 additions & 0 deletions lang/en_US.ini
Original file line number Diff line number Diff line change
Expand Up @@ -407,3 +407,7 @@ backtotop = "Back to top"
subpages = "Sub pages"
getstarted = "Get started"
onthispage = "On this page"
keep_me_logged_in = "Keep me logged in"
session_security = "Session security"
ip_session_validation = "IP session validation"
ip_session_validation_explain = "Keep this enabled for better security. Disable only for users whose IP changes frequently (for example, mobile networks)."
4 changes: 4 additions & 0 deletions lang/eo_EO.ini
Original file line number Diff line number Diff line change
Expand Up @@ -340,3 +340,7 @@ backtotop = "Back to top"
subpages = "Sub pages"
getstarted = "Get started"
onthispage = "On this page"
keep_me_logged_in = "Keep me logged in"
session_security = "Session security"
ip_session_validation = "IP session validation"
ip_session_validation_explain = "Keep this enabled for better security. Disable only for users whose IP changes frequently (for example, mobile networks)."
4 changes: 4 additions & 0 deletions lang/es_ES.ini
Original file line number Diff line number Diff line change
Expand Up @@ -340,3 +340,7 @@ backtotop = "Back to top"
subpages = "Sub pages"
getstarted = "Get started"
onthispage = "On this page"
keep_me_logged_in = "Keep me logged in"
session_security = "Session security"
ip_session_validation = "IP session validation"
ip_session_validation_explain = "Keep this enabled for better security. Disable only for users whose IP changes frequently (for example, mobile networks)."
4 changes: 4 additions & 0 deletions lang/fa_IR.ini
Original file line number Diff line number Diff line change
Expand Up @@ -340,3 +340,7 @@ backtotop = "Back to top"
subpages = "Sub pages"
getstarted = "Get started"
onthispage = "On this page"
keep_me_logged_in = "Keep me logged in"
session_security = "Session security"
ip_session_validation = "IP session validation"
ip_session_validation_explain = "Keep this enabled for better security. Disable only for users whose IP changes frequently (for example, mobile networks)."
4 changes: 4 additions & 0 deletions lang/fr_FR.ini
Original file line number Diff line number Diff line change
Expand Up @@ -340,3 +340,7 @@ backtotop = "Back to top"
subpages = "Sub pages"
getstarted = "Get started"
onthispage = "On this page"
keep_me_logged_in = "Keep me logged in"
session_security = "Session security"
ip_session_validation = "IP session validation"
ip_session_validation_explain = "Keep this enabled for better security. Disable only for users whose IP changes frequently (for example, mobile networks)."
4 changes: 4 additions & 0 deletions lang/gl_ES.ini
Original file line number Diff line number Diff line change
Expand Up @@ -340,3 +340,7 @@ backtotop = "Back to top"
subpages = "Sub pages"
getstarted = "Get started"
onthispage = "On this page"
keep_me_logged_in = "Keep me logged in"
session_security = "Session security"
ip_session_validation = "IP session validation"
ip_session_validation_explain = "Keep this enabled for better security. Disable only for users whose IP changes frequently (for example, mobile networks)."
4 changes: 4 additions & 0 deletions lang/gu_GU.ini
Original file line number Diff line number Diff line change
Expand Up @@ -340,3 +340,7 @@ backtotop = "Back to top"
subpages = "Sub pages"
getstarted = "Get started"
onthispage = "On this page"
keep_me_logged_in = "Keep me logged in"
session_security = "Session security"
ip_session_validation = "IP session validation"
ip_session_validation_explain = "Keep this enabled for better security. Disable only for users whose IP changes frequently (for example, mobile networks)."
4 changes: 4 additions & 0 deletions lang/hi_HI.ini
Original file line number Diff line number Diff line change
Expand Up @@ -340,3 +340,7 @@ backtotop = "Back to top"
subpages = "Sub pages"
getstarted = "Get started"
onthispage = "On this page"
keep_me_logged_in = "Keep me logged in"
session_security = "Session security"
ip_session_validation = "IP session validation"
ip_session_validation_explain = "Keep this enabled for better security. Disable only for users whose IP changes frequently (for example, mobile networks)."
4 changes: 4 additions & 0 deletions lang/hr_HR.ini
Original file line number Diff line number Diff line change
Expand Up @@ -340,3 +340,7 @@ backtotop = "Back to top"
subpages = "Sub pages"
getstarted = "Get started"
onthispage = "On this page"
keep_me_logged_in = "Keep me logged in"
session_security = "Session security"
ip_session_validation = "IP session validation"
ip_session_validation_explain = "Keep this enabled for better security. Disable only for users whose IP changes frequently (for example, mobile networks)."
4 changes: 4 additions & 0 deletions lang/hu_HU.ini
Original file line number Diff line number Diff line change
Expand Up @@ -340,3 +340,7 @@ backtotop = "Back to top"
subpages = "Sub pages"
getstarted = "Get started"
onthispage = "On this page"
keep_me_logged_in = "Keep me logged in"
session_security = "Session security"
ip_session_validation = "IP session validation"
ip_session_validation_explain = "Keep this enabled for better security. Disable only for users whose IP changes frequently (for example, mobile networks)."
4 changes: 4 additions & 0 deletions lang/id_ID.ini
Original file line number Diff line number Diff line change
Expand Up @@ -340,3 +340,7 @@ backtotop = "Back to top"
subpages = "Sub pages"
getstarted = "Get started"
onthispage = "On this page"
keep_me_logged_in = "Keep me logged in"
session_security = "Session security"
ip_session_validation = "IP session validation"
ip_session_validation_explain = "Keep this enabled for better security. Disable only for users whose IP changes frequently (for example, mobile networks)."
4 changes: 4 additions & 0 deletions lang/it_IT.ini
Original file line number Diff line number Diff line change
Expand Up @@ -407,3 +407,7 @@ backtotop = "Torna in cima"
subpages = "Sottopagine"
getstarted = "Per cominciare"
onthispage = "Su questa pagina"
keep_me_logged_in = "Keep me logged in"
session_security = "Session security"
ip_session_validation = "IP session validation"
ip_session_validation_explain = "Keep this enabled for better security. Disable only for users whose IP changes frequently (for example, mobile networks)."
4 changes: 4 additions & 0 deletions lang/ko_KO.ini
Original file line number Diff line number Diff line change
Expand Up @@ -340,3 +340,7 @@ backtotop = "Back to top"
subpages = "Sub pages"
getstarted = "Get started"
onthispage = "On this page"
keep_me_logged_in = "Keep me logged in"
session_security = "Session security"
ip_session_validation = "IP session validation"
ip_session_validation_explain = "Keep this enabled for better security. Disable only for users whose IP changes frequently (for example, mobile networks)."
4 changes: 4 additions & 0 deletions lang/ku_KU.ini
Original file line number Diff line number Diff line change
Expand Up @@ -340,3 +340,7 @@ backtotop = "Back to top"
subpages = "Sub pages"
getstarted = "Get started"
onthispage = "On this page"
keep_me_logged_in = "Keep me logged in"
session_security = "Session security"
ip_session_validation = "IP session validation"
ip_session_validation_explain = "Keep this enabled for better security. Disable only for users whose IP changes frequently (for example, mobile networks)."
4 changes: 4 additions & 0 deletions lang/ms_MY.ini
Original file line number Diff line number Diff line change
Expand Up @@ -340,3 +340,7 @@ backtotop = "Back to top"
subpages = "Sub pages"
getstarted = "Get started"
onthispage = "On this page"
keep_me_logged_in = "Keep me logged in"
session_security = "Session security"
ip_session_validation = "IP session validation"
ip_session_validation_explain = "Keep this enabled for better security. Disable only for users whose IP changes frequently (for example, mobile networks)."
4 changes: 4 additions & 0 deletions lang/nl_NL.ini
Original file line number Diff line number Diff line change
Expand Up @@ -340,3 +340,7 @@ backtotop = "Back to top"
subpages = "Sub pages"
getstarted = "Get started"
onthispage = "On this page"
keep_me_logged_in = "Keep me logged in"
session_security = "Session security"
ip_session_validation = "IP session validation"
ip_session_validation_explain = "Keep this enabled for better security. Disable only for users whose IP changes frequently (for example, mobile networks)."
4 changes: 4 additions & 0 deletions lang/pl_PL.ini
Original file line number Diff line number Diff line change
Expand Up @@ -341,3 +341,7 @@ backtotop = "Back to top"
subpages = "Sub pages"
getstarted = "Get started"
onthispage = "On this page"
keep_me_logged_in = "Keep me logged in"
session_security = "Session security"
ip_session_validation = "IP session validation"
ip_session_validation_explain = "Keep this enabled for better security. Disable only for users whose IP changes frequently (for example, mobile networks)."
4 changes: 4 additions & 0 deletions lang/pt_BR.ini
Original file line number Diff line number Diff line change
Expand Up @@ -340,3 +340,7 @@ backtotop = "Back to top"
subpages = "Sub pages"
getstarted = "Get started"
onthispage = "On this page"
keep_me_logged_in = "Keep me logged in"
session_security = "Session security"
ip_session_validation = "IP session validation"
ip_session_validation_explain = "Keep this enabled for better security. Disable only for users whose IP changes frequently (for example, mobile networks)."
4 changes: 4 additions & 0 deletions lang/ru_RU.ini
Original file line number Diff line number Diff line change
Expand Up @@ -341,3 +341,7 @@ backtotop = "Back to top"
subpages = "Sub pages"
getstarted = "Get started"
onthispage = "On this page"
keep_me_logged_in = "Keep me logged in"
session_security = "Session security"
ip_session_validation = "IP session validation"
ip_session_validation_explain = "Keep this enabled for better security. Disable only for users whose IP changes frequently (for example, mobile networks)."
4 changes: 4 additions & 0 deletions lang/sv_SE.ini
Original file line number Diff line number Diff line change
Expand Up @@ -352,3 +352,7 @@ backtotop = "Back to top"
subpages = "Sub pages"
getstarted = "Get started"
onthispage = "On this page"
keep_me_logged_in = "Keep me logged in"
session_security = "Session security"
ip_session_validation = "IP session validation"
ip_session_validation_explain = "Keep this enabled for better security. Disable only for users whose IP changes frequently (for example, mobile networks)."
4 changes: 4 additions & 0 deletions lang/tr_TR.ini
Original file line number Diff line number Diff line change
Expand Up @@ -340,3 +340,7 @@ backtotop = "Back to top"
subpages = "Sub pages"
getstarted = "Get started"
onthispage = "On this page"
keep_me_logged_in = "Keep me logged in"
session_security = "Session security"
ip_session_validation = "IP session validation"
ip_session_validation_explain = "Keep this enabled for better security. Disable only for users whose IP changes frequently (for example, mobile networks)."
4 changes: 4 additions & 0 deletions lang/uk_UA.ini
Original file line number Diff line number Diff line change
Expand Up @@ -340,3 +340,7 @@ backtotop = "Back to top"
subpages = "Sub pages"
getstarted = "Get started"
onthispage = "On this page"
keep_me_logged_in = "Keep me logged in"
session_security = "Session security"
ip_session_validation = "IP session validation"
ip_session_validation_explain = "Keep this enabled for better security. Disable only for users whose IP changes frequently (for example, mobile networks)."
4 changes: 4 additions & 0 deletions lang/zh_CN.ini
Original file line number Diff line number Diff line change
Expand Up @@ -340,3 +340,7 @@ backtotop = "Back to top"
subpages = "Sub pages"
getstarted = "Get started"
onthispage = "On this page"
keep_me_logged_in = "Keep me logged in"
session_security = "Session security"
ip_session_validation = "IP session validation"
ip_session_validation_explain = "Keep this enabled for better security. Disable only for users whose IP changes frequently (for example, mobile networks)."
4 changes: 4 additions & 0 deletions lang/zh_TW.ini
Original file line number Diff line number Diff line change
Expand Up @@ -340,3 +340,7 @@ backtotop = "Back to top"
subpages = "Sub pages"
getstarted = "Get started"
onthispage = "On this page"
keep_me_logged_in = "Keep me logged in"
session_security = "Session security"
ip_session_validation = "IP session validation"
ip_session_validation_explain = "Keep this enabled for better security. Disable only for users whose IP changes frequently (for example, mobile networks)."
8 changes: 7 additions & 1 deletion system/admin/admin.php
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ function create_user($userName, $password, $role)
}

// Create a session
function session($user, $pass)
function session($user, $pass, $remember = false)
{
$user_file = 'config/users/' . $user . '.ini';
if (!file_exists($user_file)) {
Expand All @@ -65,18 +65,24 @@ function session($user, $pass)
if ($user_enc == "password_hash") {
if (password_verify($pass, $user_pass)) {
if (session_status() == PHP_SESSION_NONE) session_start();
session_regenerate_id(true);
if (password_needs_rehash($user_pass, PASSWORD_DEFAULT)) {
update_user($user, $pass, $user_role, $mfa);
}
$_SESSION[site_url()]['user'] = $user;
$_SESSION[site_url()]['ip'] = current_session_ip();
set_session_cookie_lifetime($remember ? time() + (86400 * 30) : 0);
header('location: admin');
} else {
return $str = '<div class="error-message"><ul><li class="alert alert-danger">' . i18n('Invalid_Error') . '</li></ul></div>';
}
} else if (old_password_verify($pass, $user_enc, $user_pass)) {
if (session_status() == PHP_SESSION_NONE) session_start();
session_regenerate_id(true);
update_user($user, $pass, $user_role, $mfa);
$_SESSION[site_url()]['user'] = $user;
$_SESSION[site_url()]['ip'] = current_session_ip();
set_session_cookie_lifetime($remember ? time() + (86400 * 30) : 0);
header('location: admin');
} else {
return $str = '<div class="error-message"><ul><li class="alert alert-danger">' . i18n('Invalid_Error') . '</li></ul></div>';
Expand Down
23 changes: 23 additions & 0 deletions system/admin/views/config-security.html.php
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,29 @@
<small><em><?php echo i18n('explain_mfa');?></em></small>
</div>
</div>
<br>
<h4><?php echo i18n('session_security');?></h4>
<hr>
<div class="form-group row">
<label class="col-sm-2 col-form-label"><?php echo i18n('ip_session_validation');?></label>
<div class="col-sm-10">
<div class="col-sm-10">
<div class="form-check">
<input class="form-check-input" type="radio" name="-config-session.ip.validation" id="session.ip.validation1" value="true" <?php if (is_null(config('session.ip.validation')) || config('session.ip.validation') === 'true'):?>checked<?php endif;?>>
<label class="form-check-label" for="session.ip.validation1">
<?php echo i18n('Enable');?>
</label>
</div>
<div class="form-check">
<input class="form-check-input" type="radio" name="-config-session.ip.validation" id="session.ip.validation2" value="false" <?php if (config('session.ip.validation') === 'false'):?>checked<?php endif;?>>
<label class="form-check-label" for="session.ip.validation2">
<?php echo i18n('Disable');?>
</label>
</div>
</div>
<small><em><?php echo i18n('ip_session_validation_explain');?></em></small>
</div>
</div>
<div class="form-group row">
<div class="col-sm-10">
<button type="submit" class="btn btn-primary"><?php echo i18n('Save_Config');?></button>
Expand Down
4 changes: 4 additions & 0 deletions system/admin/views/login.html.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,10 @@
}
} ?>" name="password" placeholder="<?php echo i18n('Password'); ?>"/>
<br>
<div class="form-check" style="margin-bottom:1rem;">
<input type="checkbox" class="form-check-input" id="remember" name="remember" value="1" <?php if (!empty($remember)) { echo 'checked'; } ?>>
<label class="form-check-label" for="remember"><?php echo i18n('Keep_me_logged_in'); ?></label>
</div>
<input type="hidden" name="csrf_token" value="<?php echo get_csrf() ?>">
<?php if (config('login.protect.system') === 'google'): ?>
<script src='https://www.google.com/recaptcha/api.js'></script>
Expand Down
4 changes: 4 additions & 0 deletions system/admin/views/logout.html.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@
<?php

unset($_SESSION[site_url()]);
if (session_status() === PHP_SESSION_ACTIVE) {
set_session_cookie_lifetime(time() - 3600);
session_destroy();
}

header('location: login');

Expand Down
1 change: 1 addition & 0 deletions system/configList.json
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
"login.protect.system",
"login.protect.public",
"login.protect.private",
"session.ip.validation",
"posts.perpage",
"category.perpage",
"tag.perpage",
Expand Down
Loading