]> git.mjollnir.org Git - moodle.git/commitdiff
MDL-15785 new options for enforcing of enrolment key commplexity and requirements
authorskodak <skodak>
Sat, 6 Dec 2008 21:20:42 +0000 (21:20 +0000)
committerskodak <skodak>
Sat, 6 Dec 2008 21:20:42 +0000 (21:20 +0000)
course/edit_form.php
enrol/manual/config.html
enrol/manual/enrol.php
group/group_form.php
lang/en_utf8/enrol_manual.php

index 66cda9f7b26f54b962ad264867fd47e3952688a0..f79a878795ed70e25cbea0868b98860194c9135d 100644 (file)
@@ -322,6 +322,13 @@ class course_edit_form extends moodleform {
         $mform->setDefault('enrolpassword', $courseconfig->enrolpassword);
         $mform->setType('enrolpassword', PARAM_RAW);
 
+        if (empty($course) or ($course->password !== '' and $course->id != SITEID)) {
+            // do not require password in existing courses that do not have password yet - backwards compatibility ;-)
+            if (!empty($CFG->enrol_manual_requirekey)) {
+                $mform->addRule('enrolpassword', get_string('required'), 'required', null, 'client');
+            }
+        }
+
         $choices = array();
         $choices['0'] = get_string('guestsno');
         $choices['1'] = get_string('guestsyes');
@@ -451,7 +458,7 @@ class course_edit_form extends moodleform {
 
 /// perform some extra moodle validation
     function validation($data, $files) {
-        global $DB;
+        global $DB, $CFG;
 
         $errors = parent::validation($data, $files);
         if ($foundcourses = $DB->get_records('course', array('shortname'=>$data['shortname']))) {
@@ -473,6 +480,17 @@ class course_edit_form extends moodleform {
             }
         }
 
+        if (!empty($CFG->enrol_manual_usepasswordpolicy) and isset($data['enrolpassword']) and $data['enrolpassword'] != '') {
+            $course = $this->_customdata['course'];
+            if ($course->password !== $data['enrolpassword']) {
+                // enforce password policy only if changing password - backwards compatibility
+                $errmsg = '';
+                if (!check_password_policy($data['enrolpassword'], $errmsg)) {
+                    $errors['enrolpassword'] = $errmsg;
+                }
+            }
+        }
+
         return $errors;
     }
 }
index 64788b4140358d3962a84e42f0a7033b5865a934..c9b2a1898dc0dbbb091eaa10d041a28cefe6abab 100644 (file)
     </td>
 </tr>
 
+<tr>
+    <td align="right">enrol_manual_usepasswordpolicy:</td>
+    <td>
+<?php
+    $choices = array();
+    $choices['0'] = get_string('no');
+    $choices['1'] = get_string('yes');
+    choose_from_menu ($choices, 'enrol_manual_usepasswordpolicy', $frm->enrol_manual_usepasswordpolicy, '');
+?>
+    </td><td>
+    <?php  print_string('enrol_manual_usepasswordpolicy', 'enrol_manual') ?>
+    </td>
+</tr>
+
+<tr>
+    <td align="right">enrol_manual_requirekey:</td>
+    <td>
+<?php
+    $choices = array();
+    $choices['0'] = get_string('no');
+    $choices['1'] = get_string('yes');
+    choose_from_menu ($choices, 'enrol_manual_requirekey', $frm->enrol_manual_requirekey, '');
+?>
+    </td><td>
+    <?php  print_string('enrol_manual_requirekey', 'enrol_manual') ?>
+    </td>
+</tr>
+
 
 </table>
index 33729f4cb1d5656bc4bb237fc933b165f547386d..1e785823b3c8f34552c7b07135914ca9ba695572 100644 (file)
@@ -224,6 +224,14 @@ function config_form($frm) {
         $frm->enrol_manual_showhint = 1;
     }
 
+    if (!isset($frm->enrol_manual_usepasswordpolicy)) {
+        $frm->enrol_manual_usepasswordpolicy = 0;
+    }
+
+    if (!isset($frm->enrol_manual_requirekey)) {
+        $frm->enrol_manual_requirekey = 0;
+    }
+
     include ("$CFG->dirroot/enrol/manual/config.html");
 }
 
index 14c568507f5583dceb011252c22482e6022c4657..cded5d9f54c36aa00f106e1c6b94de3baf66d565 100644 (file)
@@ -42,7 +42,7 @@ class group_form extends moodleform {
     }
 
     function validation($data, $files) {
-        global $COURSE, $DB;
+        global $COURSE, $DB, $CFG;
 
         $errors = parent::validation($data, $files);
 
@@ -54,6 +54,14 @@ class group_form extends moodleform {
                 }
             }
 
+            if (!empty($CFG->enrol_manual_usepasswordpolicy) and $data['enrolmentkey'] != '' and $group->enrolmentkey !== $data['enrolmentkey']) {
+                // enforce password policy only if changing password
+                $errmsg = '';
+                if (!check_password_policy($data['enrolmentkey'], $errmsg)) {
+                    $errors['enrolmentkey'] = $errmsg;
+                }
+            }
+
         } else if (groups_get_group_by_name($COURSE->id, $name)) {
             $errors['name'] = get_string('groupnameexists', 'group', $name);
         }
index d67c1ffb4032cf525d598118e7121537e08c5425..ce80a3f4110fca692e5b3ff737d39a0492f5d7fe 100644 (file)
@@ -11,6 +11,8 @@ $string['description'] = 'This is the default form of enrolment. There are two m
 </ul>';
 $string['enrolmentkeyerror'] = 'That enrolment key was incorrect, please try again.';
 $string['enrolname'] = 'Internal Enrolment';
+$string['enrol_manual_requirekey'] = 'Require course enrolment keys in new courses and prevent removing of existing keys.';
 $string['enrol_manual_showhint'] = 'Enable this setting to reveal the first character of the enrolment key as a hint if one enters an incorrect key.';
+$string['enrol_manual_usepasswordpolicy'] = 'Use current user password policy for course enrolment keys.';
 $string['keyholderrole' ] = 'The role of the user that holds the enrolment key for a course. Displayed to students attempting to enrol on the course.';
 ?>