]> git.mjollnir.org Git - moodle.git/commitdiff
MDL-17767 loginas internals refactoring - code moved to sessionlib.php
authorskodak <skodak>
Fri, 2 Jan 2009 14:53:02 +0000 (14:53 +0000)
committerskodak <skodak>
Fri, 2 Jan 2009 14:53:02 +0000 (14:53 +0000)
course/enrol.php
course/loginas.php
lib/datalib.php
lib/moodlelib.php
lib/sessionlib.php
lib/setup.php
lib/simpletest/testcompletionlib.php
lib/weblib.php
login/change_password.php
user/view.php

index 9f645fe551f0670ed7e339feb1df68e1f60573b9..7c4651b376764bd482b28bc11ec1b737fc2f45e4 100644 (file)
@@ -28,7 +28,7 @@
     }
 
 /// do not use when in course login as
-    if (!empty($USER->realuser) and $USER->loginascontext->contextlevel == CONTEXT_COURSE) {
+    if (is_loggedinas() and $USER->loginascontext->contextlevel == CONTEXT_COURSE) {
         print_error('loginasnoenrol', '', $CFG->wwwroot.'/course/view.php?id='.$USER->loginascontext->instanceid);
     }
 
index 3487c7e1ab7ef908b78f2c7d9ea1fa3676e03962..30e2a9a6559f9782fb23a8e698e11319e673f5fd 100644 (file)
@@ -7,7 +7,7 @@
 /// Reset user back to their real self if needed
     $return = optional_param('return', 0, PARAM_BOOL);   // return to the page we came from
 
-    if (!empty($USER->realuser)) {
+    if (is_loggedinas()) {
         if (!confirm_sesskey()) {
             print_error('confirmsesskeybad');
         }
index f5d60abce296f6a1ed272121746ecfd5ea19d5c0..8b6af272bce1df65e2f7c65a9ef6c85945b51ab9 100644 (file)
@@ -1897,7 +1897,7 @@ function add_to_log($courseid, $module, $action, $url='', $info='', $cm=0, $user
     if ($user) {
         $userid = $user;
     } else {
-        if (!empty($USER->realuser)) {  // Don't log
+        if (is_loggedinas()) {  // Don't log
             return;
         }
         $userid = empty($USER->id) ? '0' : $USER->id;
@@ -1972,7 +1972,7 @@ function add_to_log($courseid, $module, $action, $url='', $info='', $cm=0, $user
 function user_accesstime_log($courseid=0) {
     global $USER, $CFG, $DB;
 
-    if (!isloggedin() or !empty($USER->realuser)) {
+    if (!isloggedin() or is_loggedinas()) {
         // no access tracking
         return;
     }
index f8dea4c536b3ed31f031041fbd1b67610484f515..8c2f2ec5289a903f7e2d9e51c0109b3d3e680ff7 100644 (file)
@@ -1920,7 +1920,7 @@ function require_login($courseorid=0, $autologinguest=true, $cm=null, $setwantsu
     }
 
 /// loginas as redirection if needed
-    if ($COURSE->id != SITEID and !empty($USER->realuser)) {
+    if ($COURSE->id != SITEID and is_loggedinas()) {
         if ($USER->loginascontext->contextlevel == CONTEXT_COURSE) {
             if ($USER->loginascontext->instanceid != $COURSE->id) {
                 print_error('loginasonecourse', '', $CFG->wwwroot.'/course/view.php?id='.$USER->loginascontext->instanceid);
@@ -1929,7 +1929,7 @@ function require_login($courseorid=0, $autologinguest=true, $cm=null, $setwantsu
     }
 
 /// check whether the user should be changing password (but only if it is REALLY them)
-    if (get_user_preferences('auth_forcepasswordchange') && empty($USER->realuser)) {
+    if (get_user_preferences('auth_forcepasswordchange') && !is_loggedinas()) {
         $userauth = get_auth_plugin($USER->auth);
         if ($userauth->can_change_password()) {
             $SESSION->wantsurl = $FULLME;
@@ -2107,7 +2107,7 @@ function require_login($courseorid=0, $autologinguest=true, $cm=null, $setwantsu
     /// For non-guests, check if they have course view access
 
         } else if (has_capability('moodle/course:view', $COURSE->context)) {
-            if (!empty($USER->realuser)) {   // Make sure the REAL person can also access this course
+            if (is_loggedinas()) {   // Make sure the REAL person can also access this course
                 if (!has_capability('moodle/course:view', $COURSE->context, $USER->realuser)) {
                     print_header_simple();
                     notice(get_string('studentnotallowed', '', fullname($USER, true)), $CFG->wwwroot .'/');
index 4ab41c82ffff7d5cb7d7c61c2325e7471f793235..6bb51762392f61cdf9e8100a7a0cf47bf6b01b26 100644 (file)
@@ -1,5 +1,9 @@
 <?php  //$Id$
 
+/**
+ * Factory method returning moodle_session object.
+ * @return moodle_session
+ */
 function get_session() {
     static $session = null;
 
@@ -70,7 +74,7 @@ class moodle_session {
             error_log('Can not terminate session properly - headers were already sent in file: '.$file.' on line '.$line);
         } else {
             // TODO: regenerate session ID here
-            
+
         }
 
         @session_write_close();
@@ -249,10 +253,26 @@ function get_moodle_cookie() {
     }
 }
 
+/**
+ * Is current $USER logged-in-as somebody else?
+ * @return bool
+ */
+function is_loggedinas() {
+    global $USER;
+
+    return !empty($USER->realuser);
+}
+
+/**
+ * Login as another user - no security checks here.
+ * @param int $userid
+ * @param object $context
+ * @return void
+ */
 function session_loginas($userid, $context) {
     global $USER, $SESSION;
 
-    if (!empty($USER->realuser)) {
+    if (is_loggedinas()) {
         return;
     }
 
@@ -280,10 +300,14 @@ function session_loginas($userid, $context) {
     }
 }
 
+/**
+ * Terminate login-as session
+ * @return void
+ */
 function session_unloginas() {
     global $USER, $SESSION;
 
-    if (empty($USER->realuser)) {
+    if (!is_loggedinas()) {
         return;
     }
 
index db3ca6dd5ad3e417e8b15e9dc2a09b7f9874f727..026aa8ebe075dd5a71d1bf37945da3b7a59e164b 100644 (file)
@@ -504,7 +504,7 @@ global $HTTPSPAGEREQUIRED;
             $apachelog_name = clean_filename($USER->firstname . " " .
                                              $USER->lastname);
         }
-        if (isset($USER->realuser)) {
+        if (is_loggedinas()) {
             if ($realuser = $DB->get_record('user', array('id'=>$USER->realuser))) {
                 $apachelog_username = clean_filename($realuser->username." as ".$apachelog_username);
                 $apachelog_name = clean_filename($realuser->firstname." ".$realuser->lastname ." as ".$apachelog_name);
index d3e64e460623d82ff7f2fdb564828f6086885ea1..2bd52894fca51c81ca8ee8007d7e815cdd003be3 100644 (file)
@@ -94,7 +94,7 @@ class completionlib_test extends MoodleUnitTestCase {
         global $DB,$CFG,$SESSION,$USER;
         $this->realdb=$DB;
         $this->realcfg=$CFG;
-        $this->realuser=$USER;
+        $this->prevuser=$USER;
         $DB=new mock_database();
         $CFG=clone($this->realcfg);
         $CFG->prefix='test_';
@@ -108,7 +108,7 @@ class completionlib_test extends MoodleUnitTestCase {
         $DB=$this->realdb;
         $CFG=$this->realcfg;
         $SESSION=$this->realsession;
-        $USER=$this->realuser;
+        $USER=$this->prevuser;
     }
 
     function test_is_enabled() {
index aefb110be1a922b164962310adeb3aae184e841e..7d71fb11aa8de67876f29dcee407c6c0bf483c34 100644 (file)
@@ -3497,7 +3497,7 @@ function user_login_string($course=NULL, $user=NULL) {
         $course = $SITE;
     }
 
-    if (!empty($user->realuser)) {
+    if (is_loggedinas()) {
         if ($realuser = $DB->get_record('user', array('id'=>$user->realuser))) {
             $fullname = fullname($realuser, true);
             $realuserinfo = " [<a $CFG->frametarget
@@ -4755,7 +4755,7 @@ has_capability('moodle/course:viewhiddenuserfields', $context)) {
     if (has_capability('moodle/role:assign', $context) and get_user_roles($context, $user->id, false)) {  // I can unassing and user has some role
         $output .= '<a href="'. $CFG->wwwroot .'/course/unenrol.php?id='. $course->id .'&amp;user='. $user->id .'">'. $string->unenrol .'</a><br />';
     }
-    if ($USER->id != $user->id && empty($USER->realuser) && has_capability('moodle/user:loginas', $context) &&
+    if ($USER->id != $user->id && !is_loggedinas() && has_capability('moodle/user:loginas', $context) &&
                                  ! has_capability('moodle/site:doanything', $context, $user->id, false)) {
         $output .= '<a href="'. $CFG->wwwroot .'/course/loginas.php?id='. $course->id .'&amp;user='. $user->id .'&amp;sesskey='. sesskey() .'">'. $string->loginas .'</a><br />';
     }
index 9bfc3c968a7549b4491141cd504c689dbae143c4..26c44404234305983fdd96fb315bb3190f637b33 100644 (file)
@@ -30,7 +30,7 @@
     }
 
     // do not allow "Logged in as" users to change any passwords
-    if (!empty($USER->realuser)) {
+    if (is_loggedinas()) {
         print_error('cannotcallscript');
     }
 
index 1809e60ff430645daed9d7df93ec3e82b285f449..f367acddd39335bfcedb4776f91c2c4d56110701 100644 (file)
     if ($passwordchangeurl) {
         $params = array('id'=>$course->id);
 
-        if (!empty($USER->realuser)) {
+        if (is_loggedinas()) {
             $passwordchangeurl = ''; // do not use actual change password url - might contain sensitive data
         } else {
             $parts = explode('?', $passwordchangeurl);
         foreach($params as $key=>$value) {
             echo '<input type="hidden" name="'.$key.'" value="'.s($value).'" />';
         }
-        if (!empty($USER->realuser)) {
+        if (is_loggedinas()) {
             // changing of password when "Logged in as" is not allowed
             echo "<input type=\"submit\" value=\"".get_string("changepassword")."\" disabled=\"disabled\" />";
         } else {
         }
     }
 
-    if (!$user->deleted and $USER->id != $user->id  && empty($USER->realuser) && has_capability('moodle/user:loginas', $coursecontext) &&
+    if (!$user->deleted and $USER->id != $user->id  && !is_loggedinas() && has_capability('moodle/user:loginas', $coursecontext) &&
                                  ! has_capability('moodle/site:doanything', $coursecontext, $user->id, false)) {
         echo '<form action="'.$CFG->wwwroot.'/course/loginas.php" method="get">';
         echo '<div>';