diff --git a/html/inc/consent.inc b/html/inc/consent.inc
index 4b8553c0b1..fda2b51b2d 100644
--- a/html/inc/consent.inc
+++ b/html/inc/consent.inc
@@ -23,12 +23,14 @@ require_once("../inc/util.inc");
define('CONSENT_TYPE_ENROLL','ENROLL');
-// Utility function to check the terms of use.
function check_termsofuse() {
return defined('TERMSOFUSE_FILE') and file_exists(TERMSOFUSE_FILE);
}
-function consent_to_a_policy($user, $consent_type_id, $consent_flag, $consent_not_required, $source, $ctime = 0) {
+function consent_to_a_policy(
+ $user, $consent_type_id, $consent_flag, $consent_not_required,
+ $source, $ctime = 0
+) {
$mys = BoincDb::escape_string($source);
if ($ctime==0) {
$mytime = $user->create_time;
@@ -54,12 +56,13 @@ function check_user_consent($user, $consent_name) {
return FALSE;
}
-// Checks to see if a particular consent_type name is in
-// available. Returns an array of format: (BOOLEAN, INTEGER). The
-// boolean is T/F depending on whether that consent_type exists, and
-// if checkenabled=TRUE, if the consent_type is enabled/available for
-// use. The integer is the consent_type_id- the id from consent_type
-// table. If the boolean is FALSE, the integer returned is -1.
+// Check if a particular consent_type name is available.
+// Returns an array of format: (BOOLEAN, INTEGER).
+// The boolean is T/F depending on whether that consent_type exists,
+// and if checkenabled=TRUE, if the consent_type is enabled/available for use.
+// The integer is the consent_type_id- the id from consent_type table.
+// If the boolean is FALSE, the integer returned is -1.
+//
function check_consent_type($name, $checkenabled=TRUE) {
$ct = BoincConsentType::lookup("shortname = '{$name}'");
if ($ct and ( !$checkenabled or ($ct->enabled)) ) {
@@ -68,13 +71,18 @@ function check_consent_type($name, $checkenabled=TRUE) {
return array(FALSE, -1);
}
-// When a user uses the Web site to login, this funtion checks the
-// ENROLL consent and intercepts the login, presenting the terms of
-// use page Web form before they can continue.
+// When a user uses the Web site to login, this function checks the
+// ENROLL consent and intercepts the login,
+// presenting the terms of use page Web form before they can continue.
+//
function intercept_login($user, $perm, $in_next_url = "") {
list($checkct, $ctid) = check_consent_type(CONSENT_TYPE_ENROLL);
$config = get_config();
- if ( parse_bool($config, "enable_login_mustagree_termsofuse") and $checkct and check_termsofuse() and (!check_user_consent($user, CONSENT_TYPE_ENROLL))) {
+ if (parse_bool($config, "enable_login_mustagree_termsofuse")
+ and $checkct
+ and check_termsofuse()
+ and (!check_user_consent($user, CONSENT_TYPE_ENROLL))
+ ) {
// sent user to terms-of-use Web form after login
$mytoken = create_token($user->id, TOKEN_TYPE_LOGIN_INTERCEPT, TOKEN_DURATION_TWO_HOURS);
send_cookie('logintoken', $mytoken, false);
diff --git a/html/user/user_agreetermsofuse_action.php b/html/user/user_agreetermsofuse_action.php
index f6644b627f..e478eef5dc 100644
--- a/html/user/user_agreetermsofuse_action.php
+++ b/html/user/user_agreetermsofuse_action.php
@@ -25,7 +25,7 @@
require_once("../inc/consent.inc");
if (empty($_POST)) {
- error_page(tra("Website error when attempting to agree to terms of use. Please contact the site administrators."));
+ error_page("Missing args");
}
// Get the next url from POST
@@ -36,23 +36,25 @@
$next_url = HOME_PAGE;
}
-// validate checkbox
$agree = post_str("agree_to_terms_of_use", true);
if (!$agree) {
- error_page(tra("You have not agreed to our terms of use. You may not continue until you do so."));
+ error_page(tra("Agree to terms of use to continue."));
}
// Obtain data from cookies
if (isset($_COOKIE['logintoken'])) {
$logintoken = $_COOKIE['logintoken'];
} else {
- error_page(tra("Website error when attempting to agree to terms of use."));
+ error_page("Missing arg");
}
if (isset($_COOKIE['tempuserid'])) {
$userid = $_COOKIE['tempuserid'];
+ if (filter_var($userid, FILTER_VALIDATE_INT) === false) {
+ error_page("Bad arg");
+ }
} else {
- error_page(tra("Website error when attempting to agree to terms of use. Please contact the site administrators."));
+ error_page("Missing arg");
}
if (isset($_COOKIE['tempperm'])) {
@@ -66,22 +68,21 @@
// misuse of the token.
if (!is_valid_token($userid, $logintoken, TOKEN_TYPE_LOGIN_INTERCEPT)) {
delete_token($userid, $logintoken, TOKEN_TYPE_LOGIN_INTERCEPT);
- error_page(tra("Authentication error attempting to agree to terms of use."));
+ error_page("Invalid token");
}
delete_token($userid, $logintoken, TOKEN_TYPE_LOGIN_INTERCEPT);
$user = BoincUser::lookup_id_nocache($userid);
$authenticator = $user->authenticator;
-// Set CONSENT_TYPE_ENROLL in database.
list($checkct, $ctid) = check_consent_type(CONSENT_TYPE_ENROLL);
if ($checkct) {
$rc1 = consent_to_a_policy($user, $ctid, 1, 0, 'Webform', time());
if (!$rc1) {
- error_page("Database error when attempting to INSERT into table consent with ID=$user->id. " . BoincDb::error() . " Please contact site administrators.");
+ error_page("Database error");
}
} else {
- error_page("Error: consent type for enrollment not found. Please contact site administrators.");
+ error_page("Consent type not found");
}