diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/constants.php | 7 | ||||
-rw-r--r-- | include/functions_user.inc.php | 65 |
2 files changed, 68 insertions, 4 deletions
diff --git a/include/constants.php b/include/constants.php index 24c963d12..089e3b65d 100644 --- a/include/constants.php +++ b/include/constants.php @@ -37,6 +37,13 @@ define('GENERAL_ERROR', 202); define('CRITICAL_MESSAGE', 203); define('CRITICAL_ERROR', 204); +// Access codes +define('ACCESS_NONE', 0); +define('ACCESS_GUEST', 1); +define('ACCESS_CLASSIC', 2); +define('ACCESS_ADMINISTRATOR', 3); +define('ACCESS_WEBMASTER', 4); + // Table names define('CATEGORIES_TABLE', $prefixeTable.'categories'); define('COMMENTS_TABLE', $prefixeTable.'comments'); diff --git a/include/functions_user.inc.php b/include/functions_user.inc.php index 64b12dfab..aa60ab64c 100644 --- a/include/functions_user.inc.php +++ b/include/functions_user.inc.php @@ -537,14 +537,71 @@ function log_user($user_id, $remember_me) } /* - * Return if current is an administrator + * Return if current user have access to access_type definition + * Test does with user status * @return bool */ -function is_admin() +function is_autorize_status($access_type) { global $user; - - return ($user['status'] == 'webmaster' or $user['status'] == 'admin') ? true : false; + + $access_type_status = ACCESS_NONE; + if (isset($user['status'])) + { + switch ($user['status']) + { + case 'guest': + case 'generic': + { + $access_type_status = ACCESS_GUEST; + break; + } + case 'normal': + { + $access_type_status = ACCESS_CLASSIC; + break; + } + case 'admin': + { + $access_type_status = ACCESS_ADMINISTRATOR; + break; + } + case 'webmaster': + { + $access_type_status = ACCESS_WEBMASTER; + break; + } + } + } + + return ($access_type_status >= $access_type); +} + +/* + * Check if current user have access to access_type definition + * Stop action if there are not access + * Test does with user status + * @return none +*/ +function check_status($access_type) +{ + global $lang; + + if (!is_autorize_status($access_type)) + { + echo '<div style="text-align:center;">'.$lang['access_forbiden'].'<br />'; + echo '<a href="'.PHPWG_ROOT_PATH.'identification.php">'.$lang['identification'].'</a></div>'; + exit(); + } +} + +/* + * Return if current user is an administrator + * @return bool +*/ +function is_admin() +{ + return is_autorize_status(ACCESS_ADMINISTRATOR); } ?>
\ No newline at end of file |