';
echo '
Access Denied
';
print_bracket_link( $p_url, lang_get( 'proceed' ) );
print '
';
print_bottom_page( config_get( 'bottom_page_inc' ) );
print_footer( __FILE__ );
print_body_bottom();
print_html_bottom();
exit;
}
# --------------------
# Check to see that the unique identifier is really unique
function check_cookie_string_duplicate( $p_cookie_string ) {
global $g_phpWN_user_table;
$c_cookie_string = addslashes($p_cookie_string);
$query = "SELECT COUNT(*)
FROM $g_phpWN_user_table
WHERE cookie_string='$c_cookie_string'";
$result = db_query( $query );
$t_count = db_result( $result, 0, 0 );
return ( $t_count > 0 );
}
# --------------------
# This string is used to use as the login identified for the web cookie
# It is not guarranteed to be unique and should be checked
# The string returned should be 64 characters in length
function generate_cookie_string() {
$t_val = mt_rand( 0, mt_getrandmax() ) + mt_rand( 0, mt_getrandmax() );
$t_val = md5( $t_val ) . md5( time() );
return substr( $t_val, 0, 64 );
}
# --------------------
# The string returned should be 64 characters in length
function create_cookie_string() {
$t_cookie_string = generate_cookie_string();
while ( check_cookie_string_duplicate( $t_cookie_string ) ) {
$t_cookie_string = generate_cookie_string();
}
return $t_cookie_string;
}
### --------------------
function access_encrypt_password( $p_password ) {
switch( config_get( 'auth_type' ) ) {
case AUTH_PLAIN:
$t_password = $p_password;
break;
case AUTH_CRYPT:
$salt = substr( $p_password, 0, 2 );
$t_password = crypt( $p_password, $salt );
break;
case AUTH_MD5:
$t_password = md5( $p_password );
break;
default:
# @@@@ Replace with proper error
echo "Invalid authentication type";
exit;
} // switchconfig_get()) {
return substr( $t_password, 0, 32 );
}
### --------------------
function password_match( $p_test_password, $p_password ) {
return ( access_encrypt_password( $p_test_password ) === $p_password );
}
### --------------------
function access_verify_login( $p_username, $p_password ) {
global $g_phpWN_user_table;
$c_username = db_prepare_string( $p_username );
### get user info
$query = "SELECT *
FROM $g_phpWN_user_table
WHERE username='$c_username' AND enabled=1";
$result = db_query( $query );
$row = db_fetch_array( $result );
if ( $row ) {
extract( $row, EXTR_PREFIX_ALL, 'v' );
} else {
### invalid login, retry
return (false);
}
return ( password_match( $p_password, $v_password ) );
}
### --------------------
function create_random_password( $p_email ) {
mt_srand( time() );
$t_val = mt_rand( 0, mt_getrandmax() ) + mt_rand( 0, mt_getrandmax() );
return substr( crypt( md5( $p_email.$t_val ) ), 0, 12 );
}
### --------------------
function is_moderator() {
global $g_string_cookie_val, $g_phpWN_user_table;
$query = "SELECT COUNT(*)
FROM $g_phpWN_user_table
WHERE cookie_string='$g_string_cookie_val'";
$result = db_query( $query );
$count = db_result( $result, 0, 0 );
return $count;
}
### --------------------
function access_is_logged_in() {
global $g_string_cookie_val;
### if logged in
if ( isset( $g_string_cookie_val ) ) {
return ( !empty( $g_string_cookie_val ) );
}
### not logged in
return false;
}
### --------------------
### checks to see that a user is logged in
### if the user is and the account is enabled then let them pass
### otherwise redirect them to the login page
function login_cookie_check( $p_redirect_url = '' ) {
global $g_string_cookie_val, $g_login_page, $g_logout;
### if logged in
if ( isset( $g_string_cookie_val ) ) {
if ( empty( $g_string_cookie_val ) ) {
util_header_redirect( $g_login_page );
}
### go to redirect
if ( !empty( $p_redirect_url ) ) {
util_header_redirect( $p_redirect_url );
}
### continue with current page
else {
return;
}
}
### not logged in
else {
util_header_redirect( $g_login_page );
}
}
### --------------------
# Make sure that the specified action can be done by the logged-in user
# true: allowed
# false: not allowed
# if for this action a threshold is defined, it will be used.
# if the threshold is set to NOBODY, the specified set of user types will be used.
# if action is unknown, then it will return false
function access_check_action( $p_action ) {
global $g_string_cookie_val, $g_access_levels, $g_access_sets;
if ( !isset( $g_access_levels[$p_action] ) ) {
return false;
}
if ( empty( $g_string_cookie_val ) ) {
$t_access_level = ANONYMOUS;
} else {
$t_user = user_get_info( user_where_current() );
if ( false === $t_user ) {
return false;
}
$t_access_level = $t_user['access_level'];
}
if ( NOBODY !== $g_access_levels[$p_action] ) {
return ( $t_access_level >= $g_access_levels[$p_action] );
}
if ( !isset( $g_access_sets[$p_action] ) ) {
return false;
}
return ( in_array( $t_access_level, $g_access_sets[$p_action] ) );
}
### --------------------
function access_ensure_check_action( $p_action, $p_url = null ) {
if ( access_check_action( $p_action ) ) {
return;
}
access_denied( $p_url );
}
?>