Incorporate review changes
This commit is contained in:
parent
283476a2f7
commit
f92f3a1a6e
|
@ -1,6 +1,6 @@
|
||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
* Copyright (c) 2014 Lukas Reschke <lukas@owncloud.com>
|
* Copyright (c) 2014-2015 Lukas Reschke <lukas@owncloud.com>
|
||||||
* This file is licensed under the Affero General Public License version 3 or
|
* This file is licensed under the Affero General Public License version 3 or
|
||||||
* later.
|
* later.
|
||||||
* See the COPYING-README file.
|
* See the COPYING-README file.
|
||||||
|
@ -77,6 +77,34 @@ class Mailer implements IMailer {
|
||||||
return $failedRecipients;
|
return $failedRecipients;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if an e-mail address is valid
|
||||||
|
*
|
||||||
|
* @param string $email Email address to be validated
|
||||||
|
* @return bool True if the mail address is valid, false otherwise
|
||||||
|
*/
|
||||||
|
public function validateMailAddress($email) {
|
||||||
|
return \Swift_Validate::email($this->convertEmail($email));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* SwiftMailer does currently not work with IDN domains, this function therefore converts the domains
|
||||||
|
*
|
||||||
|
* FIXME: Remove this once SwiftMailer supports IDN
|
||||||
|
*
|
||||||
|
* @param string $email
|
||||||
|
* @return string Converted mail address if `idn_to_ascii` exists
|
||||||
|
*/
|
||||||
|
protected function convertEmail($email) {
|
||||||
|
if (!function_exists('idn_to_ascii') || strpos($email, '@') === false) {
|
||||||
|
return $email;
|
||||||
|
}
|
||||||
|
|
||||||
|
list($name, $domain) = explode('@', $email, 2);
|
||||||
|
$domain = idn_to_ascii($domain);
|
||||||
|
return $name.'@'.$domain;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns whatever transport is configured within the config
|
* Returns whatever transport is configured within the config
|
||||||
*
|
*
|
||||||
|
|
|
@ -1,45 +0,0 @@
|
||||||
<?php
|
|
||||||
/**
|
|
||||||
* Copyright (c) 2014-2015 Lukas Reschke <lukas@owncloud.com>
|
|
||||||
* This file is licensed under the Affero General Public License version 3 or
|
|
||||||
* later.
|
|
||||||
* See the COPYING-README file.
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace OC\Mail;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Class Util
|
|
||||||
*
|
|
||||||
* @package OC\Mail
|
|
||||||
*/
|
|
||||||
class Util {
|
|
||||||
/**
|
|
||||||
* Checks if an e-mail address is valid
|
|
||||||
*
|
|
||||||
* @param string $email Email address to be validated
|
|
||||||
* @return bool True if the mail address is valid, false otherwise
|
|
||||||
*/
|
|
||||||
public static function validateMailAddress($email) {
|
|
||||||
return \Swift_Validate::email(self::convertEmail($email));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* SwiftMailer does currently not work with IDN domains, this function therefore converts the domains
|
|
||||||
*
|
|
||||||
* FIXME: Remove this once SwiftMailer supports IDN
|
|
||||||
*
|
|
||||||
* @param string $email
|
|
||||||
* @return string Converted mail address if `idn_to_ascii` exists
|
|
||||||
*/
|
|
||||||
protected static function convertEmail($email) {
|
|
||||||
if (!function_exists('idn_to_ascii') || strpos($email, '@') === false) {
|
|
||||||
return $email;
|
|
||||||
}
|
|
||||||
|
|
||||||
list($name, $domain) = explode('@', $email, 2);
|
|
||||||
$domain = idn_to_ascii($domain);
|
|
||||||
return $name.'@'.$domain;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -46,4 +46,12 @@ interface IMailer {
|
||||||
* has been supplied.)
|
* has been supplied.)
|
||||||
*/
|
*/
|
||||||
public function send(Message $message);
|
public function send(Message $message);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if an e-mail address is valid
|
||||||
|
*
|
||||||
|
* @param string $email Email address to be validated
|
||||||
|
* @return bool True if the mail address is valid, false otherwise
|
||||||
|
*/
|
||||||
|
public function validateMailAddress($email);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,26 +0,0 @@
|
||||||
<?php
|
|
||||||
/**
|
|
||||||
* Copyright (c) 2014 Lukas Reschke <lukas@owncloud.com>
|
|
||||||
* This file is licensed under the Affero General Public License version 3 or
|
|
||||||
* later.
|
|
||||||
* See the COPYING-README file.
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace OCP\Mail;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Class Util provides some helpers for mail addresses
|
|
||||||
*
|
|
||||||
* @package OCP\Mail
|
|
||||||
*/
|
|
||||||
class Util {
|
|
||||||
/**
|
|
||||||
* Checks if an e-mail address is valid
|
|
||||||
*
|
|
||||||
* @param string $email Email address to be validated
|
|
||||||
* @return bool True if the mail address is valid, false otherwise
|
|
||||||
*/
|
|
||||||
public static function validateMailAddress($email) {
|
|
||||||
return \OC\Mail\Util::validateMailAddress($email);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -294,7 +294,8 @@ class Util {
|
||||||
$host_name = \OC_Config::getValue('mail_domain', $host_name);
|
$host_name = \OC_Config::getValue('mail_domain', $host_name);
|
||||||
$defaultEmailAddress = $user_part.'@'.$host_name;
|
$defaultEmailAddress = $user_part.'@'.$host_name;
|
||||||
|
|
||||||
if (\OCP\Mail\Util::validateMailAddress($defaultEmailAddress)) {
|
$mailer = \OC::$server->getMailer();
|
||||||
|
if ($mailer->validateMailAddress($defaultEmailAddress)) {
|
||||||
return $defaultEmailAddress;
|
return $defaultEmailAddress;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -263,8 +263,7 @@ class UsersController extends Controller {
|
||||||
* @return DataResponse
|
* @return DataResponse
|
||||||
*/
|
*/
|
||||||
public function create($username, $password, array $groups=array(), $email='') {
|
public function create($username, $password, array $groups=array(), $email='') {
|
||||||
|
if($email !== '' && !$this->mailer->validateMailAddress($email)) {
|
||||||
if($email !== '' && !\OCP\Mail\Util::validateMailAddress($email)) {
|
|
||||||
return new DataResponse(
|
return new DataResponse(
|
||||||
array(
|
array(
|
||||||
'message' => (string)$this->l10n->t('Invalid mail address')
|
'message' => (string)$this->l10n->t('Invalid mail address')
|
||||||
|
@ -443,7 +442,7 @@ class UsersController extends Controller {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if($mailAddress !== '' && ! \OCP\Mail\Util::validateMailAddress($mailAddress)) {
|
if($mailAddress !== '' && !$this->mailer->validateMailAddress($mailAddress)) {
|
||||||
return new DataResponse(
|
return new DataResponse(
|
||||||
array(
|
array(
|
||||||
'status' => 'error',
|
'status' => 'error',
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
* Copyright (c) 2014 Lukas Reschke <lukas@owncloud.com>
|
* Copyright (c) 2014-2015 Lukas Reschke <lukas@owncloud.com>
|
||||||
* This file is licensed under the Affero General Public License version 3 or
|
* This file is licensed under the Affero General Public License version 3 or
|
||||||
* later.
|
* later.
|
||||||
* See the COPYING-README file.
|
* See the COPYING-README file.
|
||||||
|
@ -115,4 +115,25 @@ class MailerTest extends TestCase {
|
||||||
$this->mailer->send($message);
|
$this->mailer->send($message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function mailAddressProvider() {
|
||||||
|
return [
|
||||||
|
['lukas@owncloud.com', true],
|
||||||
|
['lukas@localhost', true],
|
||||||
|
['lukas@192.168.1.1', true],
|
||||||
|
['lukas@éxämplè.com', true],
|
||||||
|
['asdf', false],
|
||||||
|
['lukas@owncloud.org@owncloud.com', false],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider mailAddressProvider
|
||||||
|
*/
|
||||||
|
public function testValidateMailAddress($email, $expected) {
|
||||||
|
$this->assertSame($expected, $this->mailer->validateMailAddress($email));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,39 +0,0 @@
|
||||||
<?php
|
|
||||||
/**
|
|
||||||
* Copyright (c) 2014 Lukas Reschke <lukas@owncloud.com>
|
|
||||||
* This file is licensed under the Affero General Public License version 3 or
|
|
||||||
* later.
|
|
||||||
* See the COPYING-README file.
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace Test;
|
|
||||||
use OCP\Mail\Util;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Class Util
|
|
||||||
*
|
|
||||||
* @package OC\Mail
|
|
||||||
*/
|
|
||||||
class UtilTest extends TestCase {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return array
|
|
||||||
*/
|
|
||||||
public function mailAddressProvider() {
|
|
||||||
return array(
|
|
||||||
array('lukas@owncloud.com', true),
|
|
||||||
array('lukas@localhost', true),
|
|
||||||
array('lukas@192.168.1.1', true),
|
|
||||||
array('lukas@éxämplè.com', true),
|
|
||||||
array('asdf', false),
|
|
||||||
array('lukas@owncloud.org@owncloud.com', false)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @dataProvider mailAddressProvider
|
|
||||||
*/
|
|
||||||
public function testValidateMailAddress($email, $expected) {
|
|
||||||
$this->assertSame($expected, Util::validateMailAddress($email));
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in New Issue