@@ -477,7 +477,7 @@ export class AuthenticationApi extends Api {
477477 user . providers = user . providers || { } ;
478478 user . providers [ provider ] = {
479479 id : String ( profile . id ) ,
480- name : this . getNameFromProfile ( profile ) ,
480+ name : UserUtil . getNameFromProfile ( profile ) ,
481481 emails,
482482 created_at : new Date ( ) ,
483483 modified_at : new Date ( ) ,
@@ -492,7 +492,7 @@ export class AuthenticationApi extends Api {
492492 } else {
493493 user . providers [ provider ] . id = String ( profile . id ) ;
494494 user . providers [ provider ] . emails = emails ;
495- user . providers [ provider ] . name = this . getNameFromProfile ( profile ) ;
495+ user . providers [ provider ] . name = UserUtil . getNameFromProfile ( profile ) ;
496496 user . providers [ provider ] . modified_at = new Date ( ) ;
497497 user . providers [ provider ] . profile = profile . _json ;
498498 await LogUserUtil . success ( ctx , user , 'authenticate' , { provider } ) ;
@@ -523,30 +523,16 @@ export class AuthenticationApi extends Api {
523523 */
524524 private async createOAuthUser ( ctx : Context , provider : string , profile : OAuthProfile , emails : string [ ] ) : Promise < UserDocument > {
525525 // compute username
526- let name : string ;
527- if ( ! profile . displayName && ! profile . username ) {
528- logger . warn ( ctx . state , '[AuthenticationApi.createOAuthUser] Profile data does contain neither display name nor username: %s' , JSON . stringify ( profile ) ) ;
529- name = profile . emails [ 0 ] . value . substr ( 0 , profile . emails [ 0 ] . value . indexOf ( '@' ) ) ;
530- } else {
531- name = profile . displayName || profile . username ;
532- }
533- name = UserUtil . removeDiacritics ( name ) . replace ( / [ ^ 0 - 9 a - z ] + / gi, '' ) ;
534-
535- // check if username doesn't conflict
536- let newUser : UserDocument ;
537- const dupeNameUser = await state . models . User . findOne ( { name } ) . exec ( ) ;
538- if ( dupeNameUser ) {
539- name += Math . floor ( Math . random ( ) * 1000 ) ;
540- }
526+ const name = await UserUtil . makeValidName ( UserUtil . getNameFromProfile ( profile ) ) ;
541527 const now = new Date ( ) ;
542- newUser = {
528+ let newUser = {
543529 is_local : false ,
544530 name,
545531 email : emails [ 0 ] ,
546532 providers : {
547533 [ provider ] : {
548534 id : String ( profile . id ) ,
549- name : this . getNameFromProfile ( profile ) ,
535+ name : UserUtil . getNameFromProfile ( profile ) ,
550536 emails,
551537 created_at : now ,
552538 modified_at : now ,
@@ -580,19 +566,6 @@ export class AuthenticationApi extends Api {
580566
581567 return newUser ;
582568 }
583-
584- /**
585- * Retrieves the username from the received OAuth profile. Falls back to
586- * email prefix if none found.
587- * @param profile
588- * @return {string }
589- */
590- private getNameFromProfile ( profile : any ) {
591- return profile . displayName
592- || profile . username
593- || ( profile . name ? profile . name . givenName || profile . name . familyName : '' )
594- || profile . emails [ 0 ] . value . substr ( 0 , profile . emails [ 0 ] . value . indexOf ( '@' ) ) ;
595- }
596569}
597570
598571/**
0 commit comments