RegenerateVAPIDKeys regenerates the VAPID keys and deletes all existing push subscriptions as part of the transaction, as they are no longer valid.
(ctx context.Context, db database.Store)
| 512 | // RegenerateVAPIDKeys regenerates the VAPID keys and deletes all existing |
| 513 | // push subscriptions as part of the transaction, as they are no longer valid. |
| 514 | func RegenerateVAPIDKeys(ctx context.Context, db database.Store) (newPrivateKey string, newPublicKey string, err error) { |
| 515 | newPrivateKey, newPublicKey, err = webpush.GenerateVAPIDKeys() |
| 516 | if err != nil { |
| 517 | return "", "", xerrors.Errorf("generate new vapid keypair: %w", err) |
| 518 | } |
| 519 | |
| 520 | if txErr := db.InTx(func(tx database.Store) error { |
| 521 | if err := tx.DeleteAllWebpushSubscriptions(ctx); err != nil { |
| 522 | return xerrors.Errorf("delete all webpush subscriptions: %w", err) |
| 523 | } |
| 524 | if err := tx.UpsertWebpushVAPIDKeys(ctx, database.UpsertWebpushVAPIDKeysParams{ |
| 525 | VapidPrivateKey: newPrivateKey, |
| 526 | VapidPublicKey: newPublicKey, |
| 527 | }); err != nil { |
| 528 | return xerrors.Errorf("upsert notification vapid key: %w", err) |
| 529 | } |
| 530 | return nil |
| 531 | }, nil); txErr != nil { |
| 532 | return "", "", xerrors.Errorf("regenerate vapid keypair: %w", txErr) |
| 533 | } |
| 534 | |
| 535 | return newPrivateKey, newPublicKey, nil |
| 536 | } |
no test coverage detected