diff --git a/include/class.organization.php b/include/class.organization.php index a12300391b2cd86f8fc7c670bcc3f6313e624ae7..ad9deec88962651e0858e98a47b658d3e46b53ee 100644 --- a/include/class.organization.php +++ b/include/class.organization.php @@ -129,6 +129,15 @@ class Organization extends OrganizationModel { return $base; } + function isMappedToDomain($domain) { + foreach (explode(',', $this->domain) as $d) { + if (strcasecmp($domain, trim($d)) === 0) { + return true; + } + } + return false; + } + function to_json() { $info = array( @@ -164,8 +173,8 @@ class Organization extends OrganizationModel { if ($vars['domain']) { foreach (explode(',', $vars['domain']) as $d) { - if (!Validator::is_email('test' . trim($d))) { - $errors['domain'] = 'Enter a valid email domain, like @domain.com'; + if (!Validator::is_email('t@' . trim($d))) { + $errors['domain'] = 'Enter a valid email domain, like domain.com'; } } } diff --git a/include/class.user.php b/include/class.user.php index 9eb4fd3a6afad9cf2cb5508564e2037dd0ac3c93..0f105be3fa0d2aad75343340c3fed80a52f4ae40 100644 --- a/include/class.user.php +++ b/include/class.user.php @@ -154,6 +154,16 @@ class User extends UserModel { // of the detached emails is fixed. 'default_email' => UserEmail::ensure($vars['email']) )); + // Is there an organization registered for this domain + list($mailbox, $domain) = explode('@', $vars['email'], 2); + foreach (Organization::objects() + ->filter(array('domain__contains'=>$domain)) as $org) { + if ($org->isMappedToDomain($domain)) { + $user->setOrganization($org); + break; + } + } + $user->save(true); $user->emails->add($user->default_email); // Attach initial custom fields