@@ -131,19 +131,35 @@ private function login_user($authuser) {
131131 $ user = $ this ->Users ->newEmptyEntity ();
132132 }
133133
134- // We save the user data no matter what, just in case it has changed
135- // since the last update.
136- $ user = $ this ->Users ->patchEntity ($ user , [
137- 'name ' => ucwords (strtolower ($ authuser ['name ' ])),
134+ $ patchData = [
135+ // 'name' => ucwords(strtolower($authuser['name'])),
138136 'username ' => $ authuser ['username ' ],
139137 'number ' => $ authuser ['number ' ],
140- 'surname ' => $ authuser ['surname ' ],
141- 'givenname ' => $ authuser ['givenname ' ],
138+ // 'surname' => $authuser['surname'],
139+ // 'givenname' => $authuser['givenname'],
142140 'email ' => $ authuser ['email ' ],
143141 'admin ' => $ user ? $ user ['admin ' ] : $ authuser ['admin ' ] // We only use the database admin flag
144142 // if the user is not found; otherwise a user might have been granted admin privileges
145143 // locally and we respect that.
146- ]);
144+ ];
145+
146+ // If we get new data for givenname, surname, name, overwrite what we have in the database.
147+ if (isset ($ authuser ['surname ' ]) || isset ($ authuser ['givenname ' ]) || $ user ->isNew ()) {
148+ $ patchData ['name ' ] = ucwords (strtolower ($ authuser ['givenname ' ] . ' ' . $ authuser ['surname ' ]));
149+ }
150+ if (isset ($ authuser ['surname ' ]) || $ user ->isNew ()) {
151+ $ patchData ['surname ' ] = $ authuser ['surname ' ];
152+ }
153+ if (isset ($ authuser ['givenname ' ]) || $ user ->isNew ()) {
154+ $ patchData ['givenname ' ] = $ authuser ['givenname ' ];
155+ }
156+ if (isset ($ authuser ['number ' ]) || $ user ->isNew ()) {
157+ $ patchData ['number ' ] = $ authuser ['number ' ];
158+ }
159+
160+ // We save the user data no matter what, just in case it has changed
161+ // since the last update.
162+ $ user = $ this ->Users ->patchEntity ($ user , $ patchData );
147163
148164 if ($ this ->Users ->save ($ user )) {
149165 $ this ->Authentication ->setIdentity ($ user );
@@ -330,7 +346,10 @@ public function oauth2Callback() {
330346
331347 // Make sure that if we have no information on the user id
332348 // in the system, we fall back to using the user id.
333- $ number = $ number == "" ? $ uid : $ number ;
349+ $ number = $ number == "" ? null : $ number ;
350+
351+
352+ $ given_name = $ data ['given_name ' ] ?? '' ;
334353
335354 $ authuser = [
336355 'username ' => $ uid ,
0 commit comments