@@ -676,35 +676,43 @@ func (c *userComponentImpl) genUniqueName() (string, error) {
676676}
677677
678678func (c * userComponentImpl ) updateCasdoorUser (req * types.UpdateUserRequest ) error {
679+ if req .UUID == nil {
680+ return errors .New ("uuid is required to update casdoor user" )
681+ }
682+ //nothing to update
683+ if req .Email == nil && req .Phone == nil && req .NewUserName == nil && req .Nickname == nil {
684+ return errors .New ("nothing to update, at least one of email/phone/new_username/nickname is required" )
685+ }
686+
679687 c .lazyInit ()
680688
681689 casu , err := c .casc .GetUserByUserId (* req .UUID )
682690 if err != nil {
683- return fmt .Errorf ("failed to get user from casdoor,error:%w" , err )
691+ return fmt .Errorf ("failed to get user from casdoor by uuid: %s ,error:%w" , * req . UUID , err )
684692 }
685693 if casu == nil {
686- return fmt .Errorf ("user not exists in casdoor" )
694+ return fmt .Errorf ("user not found in casdoor by uuid:%s" , * req . UUID )
687695 }
688- var cols []string
689696 if req .Email != nil {
690697 casu .Email = * req .Email
691- cols = append (cols , "email" )
692698 }
693699 if req .Phone != nil {
694700 casu .Phone = * req .Phone
695- cols = append (cols , "phone" )
696701 }
697-
698- if len (cols ) == 0 {
699- return nil
702+ if req .Nickname != nil {
703+ casu .DisplayName = * req .Nickname
700704 }
701-
702- // casdoor update user api don't allow empty display name, so we set it but not update it
705+ // casdoor update user api don't allow empty display name, so we set it
703706 if casu .DisplayName == "" {
704707 casu .DisplayName = casu .Name
705708 }
706709
707- _ , err = c .casc .UpdateUserForColumns (casu , cols )
710+ // get id by user name before changed
711+ id := c .casc .GetId (casu .Name )
712+ if req .NewUserName != nil {
713+ casu .Name = * req .NewUserName
714+ }
715+ _ , err = c .casc .UpdateUserById (id , casu )
708716 return err
709717}
710718
0 commit comments