SoftDeleteUserIdentities performs a soft deletion on all identities associated to a user
(tx *storage.Connection)
| 972 | |
| 973 | // SoftDeleteUserIdentities performs a soft deletion on all identities associated to a user |
| 974 | func (u *User) SoftDeleteUserIdentities(tx *storage.Connection) error { |
| 975 | identities, err := FindIdentitiesByUserID(tx, u.ID) |
| 976 | if err != nil { |
| 977 | return err |
| 978 | } |
| 979 | |
| 980 | // set identity_data to {} |
| 981 | for _, identity := range identities { |
| 982 | identityDataUpdates := map[string]interface{}{} |
| 983 | for k := range identity.IdentityData { |
| 984 | identityDataUpdates[k] = nil |
| 985 | } |
| 986 | if err := identity.UpdateIdentityData(tx, identityDataUpdates); err != nil { |
| 987 | return err |
| 988 | } |
| 989 | // updating the identity.ID has to happen last since the primary key is on (provider, id) |
| 990 | // we use RawQuery here instead of UpdateOnly because UpdateOnly relies on the primary key of Identity |
| 991 | if err := tx.RawQuery( |
| 992 | "update "+ |
| 993 | (&pop.Model{Value: Identity{}}).TableName()+ |
| 994 | " set provider_id = ? where id = ?", |
| 995 | obfuscateIdentityProviderId(identity), |
| 996 | identity.ID, |
| 997 | ).Exec(); err != nil { |
| 998 | return err |
| 999 | } |
| 1000 | } |
| 1001 | return nil |
| 1002 | } |
| 1003 | |
| 1004 | func (u *User) FindOwnedFactorByID(tx *storage.Connection, factorID uuid.UUID) (*Factor, error) { |
| 1005 | var factor Factor |
no test coverage detected