diff --git a/user/manager.go b/user/manager.go index 1c20367c..e98adee0 100644 --- a/user/manager.go +++ b/user/manager.go @@ -1523,7 +1523,7 @@ func (a *Manager) UserIDByPrimaryEmail(email string) (string, error) { // PendingEmails returns the user's unverified (pending) email addresses, i.e. addresses with // an outstanding email-verification magic link. func (a *Manager) PendingEmails(userID string) ([]string, error) { - rows, err := a.db.ReadOnly().Query(a.queries.selectPendingEmails, userID) + rows, err := a.db.ReadOnly().Query(a.queries.selectPendingEmails, string(MagicLinkKindEmailVerify), userID) if err != nil { return nil, err } @@ -1608,11 +1608,11 @@ func (a *Manager) AddMagicLink(m *MagicLink) error { return db.ExecTx(a.db, func(tx *sql.Tx) error { switch m.Kind { case MagicLinkKindEmailVerify: - if _, err := tx.Exec(a.queries.deleteVerifyScope, m.UserID, m.Email); err != nil { + if _, err := tx.Exec(a.queries.deleteVerifyScope, string(MagicLinkKindEmailVerify), m.UserID, m.Email); err != nil { return err } case MagicLinkKindPasswordReset: - if _, err := tx.Exec(a.queries.deleteResetScope, m.UserID); err != nil { + if _, err := tx.Exec(a.queries.deleteResetScope, string(MagicLinkKindPasswordReset), m.UserID); err != nil { return err } default: @@ -1653,7 +1653,7 @@ func (a *Manager) DeleteMagicLink(tokenHash string) error { // DeleteEmailVerification removes any pending email verification for (userID, email). Used when // an unverified (pending) address is cancelled/deleted from the account. func (a *Manager) DeleteEmailVerification(userID, email string) error { - _, err := a.db.Exec(a.queries.deleteVerifyScope, userID, email) + _, err := a.db.Exec(a.queries.deleteVerifyScope, string(MagicLinkKindEmailVerify), userID, email) return err } diff --git a/user/manager_postgres.go b/user/manager_postgres.go index 9cedf5fd..57fcf312 100644 --- a/user/manager_postgres.go +++ b/user/manager_postgres.go @@ -230,9 +230,9 @@ const ( postgresInsertMagicLinkQuery = `INSERT INTO user_magic_link (token_hash, kind, user_id, email, expires, created) VALUES ($1, $2, $3, $4, $5, $6)` postgresSelectMagicLinkByHashQuery = `SELECT token_hash, kind, user_id, email, expires, created FROM user_magic_link WHERE token_hash = $1` postgresDeleteMagicLinkByHashQuery = `DELETE FROM user_magic_link WHERE token_hash = $1` - postgresDeleteVerifyScopeQuery = `DELETE FROM user_magic_link WHERE kind = 'email_verify' AND user_id = $1 AND email = $2` - postgresDeleteResetScopeQuery = `DELETE FROM user_magic_link WHERE kind = 'password_reset' AND user_id = $1` - postgresSelectPendingEmailsQuery = `SELECT email FROM user_magic_link WHERE kind = 'email_verify' AND user_id = $1 ORDER BY email` + postgresDeleteVerifyScopeQuery = `DELETE FROM user_magic_link WHERE kind = $1 AND user_id = $2 AND email = $3` + postgresDeleteResetScopeQuery = `DELETE FROM user_magic_link WHERE kind = $1 AND user_id = $2` + postgresSelectPendingEmailsQuery = `SELECT email FROM user_magic_link WHERE kind = $1 AND user_id = $2 ORDER BY email` postgresDeleteExpiredMagicLinksQuery = `DELETE FROM user_magic_link WHERE expires < $1` // Billing queries diff --git a/user/manager_sqlite.go b/user/manager_sqlite.go index 61bafc94..9bcf13df 100644 --- a/user/manager_sqlite.go +++ b/user/manager_sqlite.go @@ -227,9 +227,9 @@ const ( sqliteInsertMagicLinkQuery = `INSERT INTO user_magic_link (token_hash, kind, user_id, email, expires, created) VALUES (?, ?, ?, ?, ?, ?)` sqliteSelectMagicLinkByHashQuery = `SELECT token_hash, kind, user_id, email, expires, created FROM user_magic_link WHERE token_hash = ?` sqliteDeleteMagicLinkByHashQuery = `DELETE FROM user_magic_link WHERE token_hash = ?` - sqliteDeleteVerifyScopeQuery = `DELETE FROM user_magic_link WHERE kind = 'email_verify' AND user_id = ? AND email = ?` - sqliteDeleteResetScopeQuery = `DELETE FROM user_magic_link WHERE kind = 'password_reset' AND user_id = ?` - sqliteSelectPendingEmailsQuery = `SELECT email FROM user_magic_link WHERE kind = 'email_verify' AND user_id = ? ORDER BY email` + sqliteDeleteVerifyScopeQuery = `DELETE FROM user_magic_link WHERE kind = ? AND user_id = ? AND email = ?` + sqliteDeleteResetScopeQuery = `DELETE FROM user_magic_link WHERE kind = ? AND user_id = ?` + sqliteSelectPendingEmailsQuery = `SELECT email FROM user_magic_link WHERE kind = ? AND user_id = ? ORDER BY email` sqliteDeleteExpiredMagicLinksQuery = `DELETE FROM user_magic_link WHERE expires < ?` // Billing queries