fix: update user sessions after avatar or primary domain change (#3768)

This commit is contained in:
Livio Amstutz
2022-06-03 14:37:24 +02:00
committed by GitHub
parent 0baaaf8a05
commit da1f74fde0
6 changed files with 118 additions and 10 deletions

View File

@@ -171,6 +171,14 @@ func (v *UserSessionView) AppendEvent(event *models.Event) error {
case user.UserIDPLinkRemovedType, user.UserIDPLinkCascadeRemovedType:
v.ExternalLoginVerification = time.Time{}
v.SelectedIDPConfigID = ""
case user.HumanAvatarAddedType:
key, err := avatarKeyFromEvent(event)
if err != nil {
return err
}
v.AvatarKey = key
case user.HumanAvatarRemovedType:
v.AvatarKey = ""
}
return nil
}
@@ -180,3 +188,12 @@ func (v *UserSessionView) setSecondFactorVerification(verificationTime time.Time
v.SecondFactorVerificationType = int32(mfaType)
v.State = int32(domain.UserSessionStateActive)
}
func avatarKeyFromEvent(event *models.Event) (string, error) {
data := make(map[string]string)
if err := json.Unmarshal(event.Data, &data); err != nil {
logging.Log("EVEN-Sfew2").WithError(err).Error("could not unmarshal event data")
return "", caos_errs.ThrowInternal(err, "MODEL-SFw2q", "could not unmarshal event")
}
return data["storeKey"], nil
}