@studiotitta/studio-editori 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -23,9 +23,16 @@ export function normalisoiOsoite(osoite) {
23
23
  }
24
24
  export function lueAsetukset(yliajot = {}) {
25
25
  const avain = yliajot.avain ?? process.env.EDITORI_AVAIN ?? "";
26
+ /*
27
+ Osoitteet erotellaan pilkulla, puolipisteellä tai rivinvaihdolla. Kaikki
28
+ kolme ovat tavallisia tapoja kirjoittaa lista osoitteita, ja väärä valinta
29
+ johtaisi hiljaiseen vikaan: kirjautuminen ei toimisi, mutta sivu sanoisi
30
+ silti "tarkista sähköpostisi" — koska vastaus on tarkoituksella sama
31
+ tuntemattomalle osoitteelle.
32
+ */
26
33
  const sallitut = yliajot.sallitut ??
27
34
  (process.env.EDITORI_SALLITUT ?? "")
28
- .split(",")
35
+ .split(/[,;\s]+/)
29
36
  .map(normalisoiOsoite)
30
37
  .filter((osoite) => osoite !== "");
31
38
  const lahettaja = yliajot.lahettaja ?? process.env.EDITORI_LAHETTAJA ?? "";
@@ -112,11 +112,23 @@ export function kirjautumisenReitit(yliajot = {}) {
112
112
  }, asetukset.avain);
113
113
  const linkki = new URL("/api/editori/vahvista", pyynto.url);
114
114
  linkki.searchParams.set("tunnus", tunnus);
115
- await lahetaKirjautumislinkki({
116
- vastaanottaja: osoite,
117
- linkki: linkki.toString(),
118
- sivusto: yliajot.sivustonNimi ?? new URL(pyynto.url).host,
119
- }, asetukset);
115
+ try {
116
+ await lahetaKirjautumislinkki({
117
+ vastaanottaja: osoite,
118
+ linkki: linkki.toString(),
119
+ sivusto: yliajot.sivustonNimi ?? new URL(pyynto.url).host,
120
+ }, asetukset);
121
+ }
122
+ catch (virhe) {
123
+ /*
124
+ Lähetys voi epäonnistua syystä, johon muokkaaja ei voi vaikuttaa:
125
+ väärä lähettäjäosoite, vanhentunut avain, palvelu nurin. Se ei saa
126
+ näkyä rikkinäisenä sivuna — syy menee lokiin ja muokkaaja saa
127
+ viestin, joka kertoo mitä tehdä.
128
+ */
129
+ console.error("[editori] Kirjautumislinkin lähetys epäonnistui:", virhe);
130
+ return ohjaa(pyynto, "posti-ei-lahtenyt", evasteet);
131
+ }
120
132
  return ohjaa(pyynto, "lahetetty", evasteet);
121
133
  }
122
134
  async function vahvista(pyynto) {
@@ -38,8 +38,13 @@ export async function lahetaKirjautumislinkki(viesti, asetukset) {
38
38
  }),
39
39
  });
40
40
  if (!vastaus.ok) {
41
- /* Virheen sisältö voi paljastaa osoitteita, joten lokiin vain tila. */
42
- throw new Error(`Kirjautumisviestin lähetys epäonnistui (${vastaus.status}).`);
41
+ /*
42
+ Syy lokiin sellaisenaan: se on lähes aina lähettäjäosoitteessa tai
43
+ avaimessa, eikä vikaa löydä ilman palvelun omaa viestiä. Loki näkyy
44
+ vain sivuston ylläpitäjälle, ei muokkaajalle.
45
+ */
46
+ const syy = await vastaus.text().catch(() => "");
47
+ throw new Error(`Kirjautumisviestin lähetys epäonnistui (${vastaus.status}). ${syy.slice(0, 300)}`);
43
48
  }
44
49
  return "lahetetty";
45
50
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@studiotitta/studio-editori",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
4
4
  "description": "Studio Titan sisältöeditori asiakassivustoille: tekstit ja kuvat muokataan suoraan sivulla",
5
5
  "license": "UNLICENSED",
6
6
  "type": "module",