From: moodler Date: Mon, 6 Sep 2004 04:38:40 +0000 (+0000) Subject: Two new config variables allow certain email addresses to be allowed or not. X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=21f01485662e07daa1c87f0e05a93ac3b06b315a;p=moodle.git Two new config variables allow certain email addresses to be allowed or not. --- diff --git a/config-dist.php b/config-dist.php index e04401e8c7..985025803b 100644 --- a/config-dist.php +++ b/config-dist.php @@ -181,6 +181,13 @@ $CFG->defaultblocks = 'participants,activity_modules,search_forums,admin,course_ // Seconds for files to remain in caches. Decrease this if you are worried // about students being served outdated versions of uploaded files. // $CFG->filelifetime = 86400; +// +// The following two settings allow you to specify allowed domains for +// email addresses. If the first one is set, then Moodle will DISALLOW +// all domains EXCEPT those listed. Otherwise, if the second one is set +// then all addresses are ALLOWED EXCEPT those listed. +// $CFG->allowemailaddresses = "myschool.edu.au hotmail.com"; +// $CFG->denyemailaddresses = "hotmail.com yahoo.com"; //========================================================================= // ALL DONE! To continue installation, visit your main page with a browser diff --git a/lang/en/moodle.php b/lang/en/moodle.php index c8158c176c..ca6481a985 100644 --- a/lang/en/moodle.php +++ b/lang/en/moodle.php @@ -372,6 +372,8 @@ $string['emailenableclick'] = 'Click here to re-enable all email being sent to t $string['emailexists'] = 'This email address is already registered.'; $string['emailformat'] = 'Email format'; $string['emailmustbereal'] = 'Note: your email address must be a real one'; +$string['emailnotallowed'] = 'Email addresses in these domains are not allowed ($a)'; +$string['emailonlyallowed'] = 'This email is not one of those that are allowed ($a)'; $string['emailpasswordconfirmation'] = 'Hi $a->firstname, Someone (probably you) has requested a new password for your @@ -992,9 +994,12 @@ $string['updatingain'] = 'Updating $a->what in $a->in'; $string['upload'] = 'Upload'; $string['uploadafile'] = 'Upload a file'; $string['uploadedfileto'] = 'Uploaded $a->file to $a->directory'; +$string['uploadformlimit'] = 'Uploaded file exceeded the maximum size limit set by the form'; $string['uploadnofilefound'] = 'No file was found - are you sure you selected one to upload?'; $string['uploadnotallowed'] = 'Uploads are not allowed'; +$string['uploadpartialfile'] = 'File was only partially uploaded'; $string['uploadproblem'] = 'An unknown problem occurred while uploading the file \'$a\' (perhaps it was too large?)'; +$string['uploadserverlimit'] = 'Uploaded file exceeded the maximum size limit set by the server'; $string['uploadthisfile'] = 'Upload this file'; $string['uploadusers'] = 'Upload users'; $string['usedinnplaces'] = 'Used in $a places'; diff --git a/login/signup.php b/login/signup.php index 6385bd35af..ba48373a70 100644 --- a/login/signup.php +++ b/login/signup.php @@ -146,6 +146,33 @@ function validate_form($user, &$err) { $err->country = get_string("missingcountry"); } + if (empty($err->email)) { + if (!empty($CFG->allowemailaddresses)) { + $allowed = explode(' ', $CFG->allowemailaddresses); + $err->email = get_string("emailonlyallowed", '', $CFG->allowemailaddresses); // Default + foreach ($allowed as $allowedpattern) { + $allowedpattern = trim($allowedpattern); + if (!$allowedpattern) { + continue; + } + if (strpos($user->email, $allowedpattern) !== false) { + unset($err->email); + } + } + } else if (!empty($CFG->denyemailaddresses)) { + $denied = explode(' ', $CFG->denyemailaddresses); + foreach ($denied as $deniedpattern) { + $deniedpattern = trim($deniedpattern); + if (!$deniedpattern) { + continue; + } + if (strpos($user->email, $deniedpattern) !== false) { + $err->email = get_string("emailnotallowed", '', $CFG->denyemailaddresses); + } + } + } + } + return; } diff --git a/user/edit.php b/user/edit.php index 96e6c76c41..4a1db9b664 100644 --- a/user/edit.php +++ b/user/edit.php @@ -246,14 +246,41 @@ function find_form_errors(&$user, &$usernew, &$err) { if (empty($usernew->country)) $err["country"] = get_string("missingcountry"); - if (! validate_email($usernew->email)) + if (! validate_email($usernew->email)) { $err["email"] = get_string("invalidemail"); - else if ($otheruser = get_record("user", "email", $usernew->email)) { + } else if ($otheruser = get_record("user", "email", $usernew->email)) { if ($otheruser->id <> $user->id) { $err["email"] = get_string("emailexists"); } } + + if (empty($err["email"]) and !isadmin()) { + if (!empty($CFG->allowemailaddresses)) { + $allowed = explode(' ', $CFG->allowemailaddresses); + $err["email"] = get_string("emailonlyallowed", '', $CFG->allowemailaddresses); // Default + foreach ($allowed as $allowedpattern) { + $allowedpattern = trim($allowedpattern); + if (!$allowedpattern) { + continue; + } + if (strpos($usernew->email, $allowedpattern) !== false) { + unset($err["email"]); + } + } + } else if (!empty($CFG->denyemailaddresses)) { + $denied = explode(' ', $CFG->denyemailaddresses); + foreach ($denied as $deniedpattern) { + $deniedpattern = trim($deniedpattern); + if (!$deniedpattern) { + continue; + } + if (strpos($usernew->email, $deniedpattern) !== false) { + $err->email = get_string("emailnotallowed", '', $CFG->denyemailaddresses); + } + } + } + } $user->email = $usernew->email;