1
0
mirror of https://github.com/phpbb/phpbb.git synced 2025-08-06 08:47:45 +02:00

[ticket/10073] Split email validation from email ban and taken checks

PHPBB3-10073
This commit is contained in:
Joas Schilling
2014-05-05 16:59:55 +02:00
parent f01e0a2eef
commit 911725a581
6 changed files with 75 additions and 55 deletions

View File

@@ -1746,24 +1746,20 @@ function validate_password($password)
}
/**
* Check to see if email address is banned or already present in the DB
* Check to see if email address is a valid address and contains a MX record
*
* @param string $email The email to check
* @param string $allowed_email An allowed email, default being $user->data['user_email']
*
* @return mixed Either false if validation succeeded or a string which will be used as the error message (with the variable name appended)
*/
function validate_email($email, $allowed_email = false)
function phpbb_validate_email($email, $config = null)
{
global $config, $db, $user;
if ($config === null)
{
global $config;
}
$email = strtolower($email);
$allowed_email = ($allowed_email === false) ? strtolower($user->data['user_email']) : strtolower($allowed_email);
if ($allowed_email == $email)
{
return false;
}
if (!preg_match('/^' . get_preg_expression('email') . '$/i', $email))
{
@@ -1782,6 +1778,35 @@ function validate_email($email, $allowed_email = false)
}
}
return false;
}
/**
* Check to see if email address is banned or already present in the DB
*
* @param string $email The email to check
* @param string $allowed_email An allowed email, default being $user->data['user_email']
*
* @return mixed Either false if validation succeeded or a string which will be used as the error message (with the variable name appended)
*/
function validate_user_email($email, $allowed_email = false)
{
global $config, $db, $user;
$email = strtolower($email);
$allowed_email = ($allowed_email === false) ? strtolower($user->data['user_email']) : strtolower($allowed_email);
if ($allowed_email == $email)
{
return false;
}
$validate_email = phpbb_validate_email($email, $config);
if ($validate_email)
{
return $validate_email;
}
if (($ban_reason = $user->check_ban(false, false, $email, true)) !== false)
{
return ($ban_reason === true) ? 'EMAIL_BANNED' : $ban_reason;