MDL-61767 auth_oauth: Reduce updated fields
authorAndrew Nicols <andrew@nicols.co.uk>
Thu, 13 Dec 2018 03:48:25 +0000 (11:48 +0800)
committerAndrew Nicols <andrew@nicols.co.uk>
Wed, 19 Dec 2018 10:15:39 +0000 (18:15 +0800)
auth/oauth2/classes/auth.php

index e5b8fa4..19cc83c 100644 (file)
@@ -302,20 +302,23 @@ class auth extends \auth_plugin_base {
     }
 
     /**
-     * Update user data according to data sent by authorization server
+     * Update user data according to data sent by authorization server.
+     *
      * @param array $externaldata data from authorization server
-     * @param stdClass $user user to update
-     * @return stdClass $userinfo updated user
+     * @param int $userid ID of the user to update
+     * @return stdClass The updated user record
      */
-    private function update_user(array $externaldata, stdClass $user) {
+    private function update_user(array $externaldata, int $userid) {
+        $user = (object) [
+            'id' => $userid,
+        ];
         foreach ($externaldata as $fieldname => $value) {
-            // Should be safe to assign fieldnames directly because these are obtained from select field.
             $user->$fieldname = $value;
         }
-        user_update_user($user, false, true);
+        user_update_user($user, false);
+
         // Refresh user for $USER variable.
-        $userinfo = get_complete_user_data('id', $user->id);
-        return $userinfo;
+        return get_complete_user_data('id', $user->id);
     }
 
     /**
@@ -436,7 +439,7 @@ class auth extends \auth_plugin_base {
                 redirect(new moodle_url('/login/index.php'));
             } else if ($mappeduser && $mappeduser->confirmed) {
                 // Update user fields.
-                $userinfo = $this->update_user($userinfo, $mappeduser);
+                $userinfo = $this->update_user($userinfo, $mappeduser->id);
                 $userwasmapped = true;
             } else {
                 // Trigger login failed event.
@@ -494,7 +497,7 @@ class auth extends \auth_plugin_base {
                     exit();
                 } else {
                     \auth_oauth2\api::link_login($userinfo, $issuer, $moodleuser->id, true);
-                    $userinfo = $this->update_user($userinfo, $moodleuser);
+                    $userinfo = $this->update_user($userinfo, $moodleuser->id);
                     // No redirect, we will complete this login.
                 }
 
@@ -560,7 +563,7 @@ class auth extends \auth_plugin_base {
                     // Create a new confirmed account.
                     $newuser = \auth_oauth2\api::create_new_confirmed_account($userinfo, $issuer);
                     // Update new user's fields.
-                    $userinfo = $this->update_user($userinfo, $newuser);
+                    $userinfo = $this->update_user($userinfo, $newuser->id);
                     // No redirect, we will complete this login.
                 }
             }