fix(firestore-send-email): kit/extension parity – a required placeholder SMTP_PASSWORD overrides the password in SMTP_CONNECTION_URI

オープン
#3,293 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 7 日以内に返信

まだ誰も着手していません。

評価

難易度
3/5
見積もり時間
1〜2日
初心者へのやさしさ
56/100
issue の種類
バグ
明瞭さ
明確に書かれている
活発さ
活発
技術スタック
firebase, typescript

調査の方向性

Start with kits/firestore-send-email/src/helpers.ts around lines 93–99 and compare its SMTP password handling with the extension helper at functions/src/helpers.ts around lines 61–68. Read the kit README section around lines 157–169 and inspect the migration and secret binding references in the issue. Done means a kit migrated from a URI with an inline password can send successfully, with the intended behavior documented or covered.

索引モデルが issue の本文から書いたものです。

説明

kits parity type: bug

firestore-send-email kit/extension parity. Priority: high. After migrating, every email fails to send if the SMTP password was kept in the connection URI.

Difference
  • Extension: SMTP_PASSWORD is optional. Installs that put the password in SMTP_CONNECTION_URI (the "backwards compatible" form in the param's description) have no secret, and the URI's password is used.
  • Kit:
    • All four secrets are always bound, so SMTP_PASSWORD must exist and must not be empty. ext:migrate and functions:kits:install prompt for it, and Secret Manager rejects an empty value.
    • Any non-blank value then replaces the URI's password, the same as in the extension.
    • Users who enter a placeholder (the README recommends placeholders for the unused secrets) get an authentication failure on every send. A placeholder also adds auth to SMTP relays that need none.
Reproduced
  1. Extension installed with SMTP_CONNECTION_URI=smtp://user:[email protected]:587 and no SMTP_PASSWORD: mail sends (SUCCESS).
  2. firebase ext:migrate on that instance: it prompts "Enter a value for SMTP password". An empty answer fails with Secret Payload cannot be empty, so "placeholder" was entered.
  3. The migrated kit fails every document with delivery.error: "Error: Invalid login: 535 Authentication failed". A README-setup kit with the same URI and a placeholder secret fails the same way.
  4. Setting the secret to a single space works around it: the kit trims it to unset, and mail sends.
Code
Resolution
  • Only use SMTP_PASSWORD when the URI carries no password of its own. That is a behaviour change only for configs that set both.
  • Or, at a minimum, document in the README and the migration notes: move an inline password into SMTP_PASSWORD, or set that secret to a single space.
主要言語
TypeScript
スター
979
フォーク
436
平均マージ
4日 12時間
マージ済み PR(30日)
13

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

firebase/extensions のほかの issue

firebase/extensions の issue をすべて見る

似ている issue

TypeScript の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。