X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/timetracker.git/blobdiff_plain/7ea057af633d933eb5b39cceb112c3cc98c55a1d..b3ed433e388b83e055958b395ebc0e08172cd079:/WEB-INF/lib/common.lib.php diff --git a/WEB-INF/lib/common.lib.php b/WEB-INF/lib/common.lib.php index ec21d675..210ec41c 100644 --- a/WEB-INF/lib/common.lib.php +++ b/WEB-INF/lib/common.lib.php @@ -325,22 +325,41 @@ function ttValidCondition($val, $emptyValid = true) return true; } -// ttAccessCheck is used to check whether user is allowed to proceed. This function is used -// as an initial check on all publicly available pages. -function ttAccessCheck($required_rights) +// ttAccessAllowed checks whether user is allowed access to a particular page. +// It is used as an initial check on all publicly available pages +// (except login.php, register.php, and others where we don't have to check). +function ttAccessAllowed($required_right) { global $auth; global $user; - + // Redirect to login page if user is not authenticated. if (!$auth->isAuthenticated()) { header('Location: login.php'); exit(); } - - // Check rights. - if (!($required_rights & $user->rights_mask)) - return false; - - return true; + + // Check IP restriction, if set. + if ($user->allow_ip && !$user->can('override_allow_ip')) { + $access_allowed = false; + $user_ip = $_SERVER['REMOTE_ADDR']; + $allowed_ip_array = explode(',', $user->allow_ip); + foreach ($allowed_ip_array as $allowed_ip) { + $len = strlen($allowed_ip); + if (substr($user_ip, 0, $len) === $allowed_ip) { + $access_allowed = true; + break; + } + } + if (!$access_allowed) return false; + } + + // Check if user has the right. + if (in_array($required_right, $user->rights)) { + import('ttUserHelper'); + ttUserHelper::updateLastAccess(); + return true; + } + + return false; }