UpdateUser updates a user's profile, roles, MFA, or verification state and returns the updated user. Requires super-admin auth. Logic migrated from internal/graphql/update_user.go.
(ctx context.Context, meta RequestMetadata, params *model.UpdateUserRequest)
| 78 | // returns the updated user. Requires super-admin auth. Logic migrated from |
| 79 | // internal/graphql/update_user.go. |
| 80 | func (p *provider) UpdateUser(ctx context.Context, meta RequestMetadata, params *model.UpdateUserRequest) (*model.User, *ResponseSideEffects, error) { |
| 81 | log := p.Log.With().Str("func", "UpdateUser").Logger() |
| 82 | if err := p.requireSuperAdmin(ctx, meta); err != nil { |
| 83 | return nil, nil, err |
| 84 | } |
| 85 | |
| 86 | if params.ID == "" { |
| 87 | log.Debug().Msg("user id is missing") |
| 88 | return nil, nil, fmt.Errorf("user_id is missing") |
| 89 | } |
| 90 | |
| 91 | log = log.With().Str("user_id", params.ID).Logger() |
| 92 | |
| 93 | if params.GivenName == nil && |
| 94 | params.FamilyName == nil && |
| 95 | params.Picture == nil && |
| 96 | params.MiddleName == nil && |
| 97 | params.Nickname == nil && |
| 98 | params.Email == nil && |
| 99 | params.Birthdate == nil && |
| 100 | params.Gender == nil && |
| 101 | params.PhoneNumber == nil && |
| 102 | params.Roles == nil && |
| 103 | params.IsMultiFactorAuthEnabled == nil && |
| 104 | params.AppData == nil { |
| 105 | log.Debug().Msg("please enter atleast one param to update") |
| 106 | return nil, nil, fmt.Errorf("please enter atleast one param to update") |
| 107 | } |
| 108 | |
| 109 | user, err := p.StorageProvider.GetUserByID(ctx, params.ID) |
| 110 | if err != nil { |
| 111 | log.Debug().Err(err).Msg("failed GetUserByID") |
| 112 | return nil, nil, fmt.Errorf(`User not found`) |
| 113 | } |
| 114 | |
| 115 | if params.GivenName != nil && refs.StringValue(user.GivenName) != refs.StringValue(params.GivenName) { |
| 116 | user.GivenName = params.GivenName |
| 117 | } |
| 118 | |
| 119 | if params.FamilyName != nil && refs.StringValue(user.FamilyName) != refs.StringValue(params.FamilyName) { |
| 120 | user.FamilyName = params.FamilyName |
| 121 | } |
| 122 | |
| 123 | if params.MiddleName != nil && refs.StringValue(user.MiddleName) != refs.StringValue(params.MiddleName) { |
| 124 | user.MiddleName = params.MiddleName |
| 125 | } |
| 126 | |
| 127 | if params.Nickname != nil && refs.StringValue(user.Nickname) != refs.StringValue(params.Nickname) { |
| 128 | user.Nickname = params.Nickname |
| 129 | } |
| 130 | |
| 131 | if params.Birthdate != nil && refs.StringValue(user.Birthdate) != refs.StringValue(params.Birthdate) { |
| 132 | user.Birthdate = params.Birthdate |
| 133 | } |
| 134 | |
| 135 | if params.Gender != nil && refs.StringValue(user.Gender) != refs.StringValue(params.Gender) { |
| 136 | user.Gender = params.Gender |
| 137 | } |
nothing calls this directly
no test coverage detected