fix: recover stale IM member credentials

This commit is contained in:
richjohnrambo
2026-10-14 18:18:18 +08:00
parent a6d7c8dda8
commit 06eaf748ed
3 changed files with 53 additions and 1 deletions
+11
View File
@@ -102,6 +102,17 @@ func (s *Service) OpenSession(ctx context.Context, tenantID, memberID, serviceID
return nil, fmt.Errorf("decrypt IM credential: %w", err)
}
imSession, err := s.im.LoginBasic(ctx, identity.IMUsername, password, strings.TrimSpace(in.DeviceID), platform)
if imclient.IsAuthenticationFailed(err) {
identity, err = s.resetAndSaveCredential(ctx, identity)
if err != nil {
return nil, fmt.Errorf("repair IM credential: %w", err)
}
password, err = s.decryptCredential(identity.IMPasswordCipher)
if err != nil {
return nil, fmt.Errorf("decrypt repaired IM credential: %w", err)
}
imSession, err = s.im.LoginBasic(ctx, identity.IMUsername, password, strings.TrimSpace(in.DeviceID), platform)
}
if err != nil {
return nil, fmt.Errorf("login IM session: %w", err)
}