@ttoss/cloud-auth 0.6.4 → 0.7.1

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,16 +23,16 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">98.95% </span>
26
+ <span class="strong">97.73% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>189/191</span>
28
+ <span class='fraction'>302/309</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">85.71% </span>
33
+ <span class="strong">80% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>6/7</span>
35
+ <span class='fraction'>8/10</span>
36
36
  </div>
37
37
 
38
38
 
@@ -44,9 +44,9 @@
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">98.95% </span>
47
+ <span class="strong">97.73% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>189/191</span>
49
+ <span class='fraction'>302/309</span>
50
50
  </div>
51
51
 
52
52
 
@@ -254,7 +254,131 @@
254
254
  <a name='L189'></a><a href='#L189'>189</a>
255
255
  <a name='L190'></a><a href='#L190'>190</a>
256
256
  <a name='L191'></a><a href='#L191'>191</a>
257
- <a name='L192'></a><a href='#L192'>192</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
257
+ <a name='L192'></a><a href='#L192'>192</a>
258
+ <a name='L193'></a><a href='#L193'>193</a>
259
+ <a name='L194'></a><a href='#L194'>194</a>
260
+ <a name='L195'></a><a href='#L195'>195</a>
261
+ <a name='L196'></a><a href='#L196'>196</a>
262
+ <a name='L197'></a><a href='#L197'>197</a>
263
+ <a name='L198'></a><a href='#L198'>198</a>
264
+ <a name='L199'></a><a href='#L199'>199</a>
265
+ <a name='L200'></a><a href='#L200'>200</a>
266
+ <a name='L201'></a><a href='#L201'>201</a>
267
+ <a name='L202'></a><a href='#L202'>202</a>
268
+ <a name='L203'></a><a href='#L203'>203</a>
269
+ <a name='L204'></a><a href='#L204'>204</a>
270
+ <a name='L205'></a><a href='#L205'>205</a>
271
+ <a name='L206'></a><a href='#L206'>206</a>
272
+ <a name='L207'></a><a href='#L207'>207</a>
273
+ <a name='L208'></a><a href='#L208'>208</a>
274
+ <a name='L209'></a><a href='#L209'>209</a>
275
+ <a name='L210'></a><a href='#L210'>210</a>
276
+ <a name='L211'></a><a href='#L211'>211</a>
277
+ <a name='L212'></a><a href='#L212'>212</a>
278
+ <a name='L213'></a><a href='#L213'>213</a>
279
+ <a name='L214'></a><a href='#L214'>214</a>
280
+ <a name='L215'></a><a href='#L215'>215</a>
281
+ <a name='L216'></a><a href='#L216'>216</a>
282
+ <a name='L217'></a><a href='#L217'>217</a>
283
+ <a name='L218'></a><a href='#L218'>218</a>
284
+ <a name='L219'></a><a href='#L219'>219</a>
285
+ <a name='L220'></a><a href='#L220'>220</a>
286
+ <a name='L221'></a><a href='#L221'>221</a>
287
+ <a name='L222'></a><a href='#L222'>222</a>
288
+ <a name='L223'></a><a href='#L223'>223</a>
289
+ <a name='L224'></a><a href='#L224'>224</a>
290
+ <a name='L225'></a><a href='#L225'>225</a>
291
+ <a name='L226'></a><a href='#L226'>226</a>
292
+ <a name='L227'></a><a href='#L227'>227</a>
293
+ <a name='L228'></a><a href='#L228'>228</a>
294
+ <a name='L229'></a><a href='#L229'>229</a>
295
+ <a name='L230'></a><a href='#L230'>230</a>
296
+ <a name='L231'></a><a href='#L231'>231</a>
297
+ <a name='L232'></a><a href='#L232'>232</a>
298
+ <a name='L233'></a><a href='#L233'>233</a>
299
+ <a name='L234'></a><a href='#L234'>234</a>
300
+ <a name='L235'></a><a href='#L235'>235</a>
301
+ <a name='L236'></a><a href='#L236'>236</a>
302
+ <a name='L237'></a><a href='#L237'>237</a>
303
+ <a name='L238'></a><a href='#L238'>238</a>
304
+ <a name='L239'></a><a href='#L239'>239</a>
305
+ <a name='L240'></a><a href='#L240'>240</a>
306
+ <a name='L241'></a><a href='#L241'>241</a>
307
+ <a name='L242'></a><a href='#L242'>242</a>
308
+ <a name='L243'></a><a href='#L243'>243</a>
309
+ <a name='L244'></a><a href='#L244'>244</a>
310
+ <a name='L245'></a><a href='#L245'>245</a>
311
+ <a name='L246'></a><a href='#L246'>246</a>
312
+ <a name='L247'></a><a href='#L247'>247</a>
313
+ <a name='L248'></a><a href='#L248'>248</a>
314
+ <a name='L249'></a><a href='#L249'>249</a>
315
+ <a name='L250'></a><a href='#L250'>250</a>
316
+ <a name='L251'></a><a href='#L251'>251</a>
317
+ <a name='L252'></a><a href='#L252'>252</a>
318
+ <a name='L253'></a><a href='#L253'>253</a>
319
+ <a name='L254'></a><a href='#L254'>254</a>
320
+ <a name='L255'></a><a href='#L255'>255</a>
321
+ <a name='L256'></a><a href='#L256'>256</a>
322
+ <a name='L257'></a><a href='#L257'>257</a>
323
+ <a name='L258'></a><a href='#L258'>258</a>
324
+ <a name='L259'></a><a href='#L259'>259</a>
325
+ <a name='L260'></a><a href='#L260'>260</a>
326
+ <a name='L261'></a><a href='#L261'>261</a>
327
+ <a name='L262'></a><a href='#L262'>262</a>
328
+ <a name='L263'></a><a href='#L263'>263</a>
329
+ <a name='L264'></a><a href='#L264'>264</a>
330
+ <a name='L265'></a><a href='#L265'>265</a>
331
+ <a name='L266'></a><a href='#L266'>266</a>
332
+ <a name='L267'></a><a href='#L267'>267</a>
333
+ <a name='L268'></a><a href='#L268'>268</a>
334
+ <a name='L269'></a><a href='#L269'>269</a>
335
+ <a name='L270'></a><a href='#L270'>270</a>
336
+ <a name='L271'></a><a href='#L271'>271</a>
337
+ <a name='L272'></a><a href='#L272'>272</a>
338
+ <a name='L273'></a><a href='#L273'>273</a>
339
+ <a name='L274'></a><a href='#L274'>274</a>
340
+ <a name='L275'></a><a href='#L275'>275</a>
341
+ <a name='L276'></a><a href='#L276'>276</a>
342
+ <a name='L277'></a><a href='#L277'>277</a>
343
+ <a name='L278'></a><a href='#L278'>278</a>
344
+ <a name='L279'></a><a href='#L279'>279</a>
345
+ <a name='L280'></a><a href='#L280'>280</a>
346
+ <a name='L281'></a><a href='#L281'>281</a>
347
+ <a name='L282'></a><a href='#L282'>282</a>
348
+ <a name='L283'></a><a href='#L283'>283</a>
349
+ <a name='L284'></a><a href='#L284'>284</a>
350
+ <a name='L285'></a><a href='#L285'>285</a>
351
+ <a name='L286'></a><a href='#L286'>286</a>
352
+ <a name='L287'></a><a href='#L287'>287</a>
353
+ <a name='L288'></a><a href='#L288'>288</a>
354
+ <a name='L289'></a><a href='#L289'>289</a>
355
+ <a name='L290'></a><a href='#L290'>290</a>
356
+ <a name='L291'></a><a href='#L291'>291</a>
357
+ <a name='L292'></a><a href='#L292'>292</a>
358
+ <a name='L293'></a><a href='#L293'>293</a>
359
+ <a name='L294'></a><a href='#L294'>294</a>
360
+ <a name='L295'></a><a href='#L295'>295</a>
361
+ <a name='L296'></a><a href='#L296'>296</a>
362
+ <a name='L297'></a><a href='#L297'>297</a>
363
+ <a name='L298'></a><a href='#L298'>298</a>
364
+ <a name='L299'></a><a href='#L299'>299</a>
365
+ <a name='L300'></a><a href='#L300'>300</a>
366
+ <a name='L301'></a><a href='#L301'>301</a>
367
+ <a name='L302'></a><a href='#L302'>302</a>
368
+ <a name='L303'></a><a href='#L303'>303</a>
369
+ <a name='L304'></a><a href='#L304'>304</a>
370
+ <a name='L305'></a><a href='#L305'>305</a>
371
+ <a name='L306'></a><a href='#L306'>306</a>
372
+ <a name='L307'></a><a href='#L307'>307</a>
373
+ <a name='L308'></a><a href='#L308'>308</a>
374
+ <a name='L309'></a><a href='#L309'>309</a>
375
+ <a name='L310'></a><a href='#L310'>310</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
376
+ <span class="cline-any cline-yes">1x</span>
377
+ <span class="cline-any cline-yes">1x</span>
378
+ <span class="cline-any cline-yes">1x</span>
379
+ <span class="cline-any cline-yes">1x</span>
380
+ <span class="cline-any cline-yes">1x</span>
381
+ <span class="cline-any cline-yes">1x</span>
258
382
  <span class="cline-any cline-yes">1x</span>
259
383
  <span class="cline-any cline-yes">1x</span>
260
384
  <span class="cline-any cline-yes">1x</span>
@@ -270,7 +394,6 @@
270
394
  <span class="cline-any cline-yes">1x</span>
271
395
  <span class="cline-any cline-yes">1x</span>
272
396
  <span class="cline-any cline-yes">1x</span>
273
- <span class="cline-any cline-yes">12x</span>
274
397
  <span class="cline-any cline-yes">12x</span>
275
398
  <span class="cline-any cline-yes">12x</span>
276
399
  <span class="cline-any cline-yes">12x</span>
@@ -383,27 +506,17 @@
383
506
  <span class="cline-any cline-yes">12x</span>
384
507
  <span class="cline-any cline-yes">12x</span>
385
508
  <span class="cline-any cline-yes">12x</span>
386
- <span class="cline-any cline-yes">11x</span>
387
- <span class="cline-any cline-yes">11x</span>
388
- <span class="cline-any cline-yes">11x</span>
389
- <span class="cline-any cline-yes">11x</span>
390
- <span class="cline-any cline-yes">11x</span>
391
- <span class="cline-any cline-yes">11x</span>
392
- <span class="cline-any cline-yes">11x</span>
393
- <span class="cline-any cline-yes">11x</span>
394
- <span class="cline-any cline-yes">11x</span>
395
- <span class="cline-any cline-yes">11x</span>
396
- <span class="cline-any cline-yes">11x</span>
397
- <span class="cline-any cline-yes">11x</span>
398
- <span class="cline-any cline-yes">11x</span>
399
- <span class="cline-any cline-yes">11x</span>
400
- <span class="cline-any cline-yes">11x</span>
401
- <span class="cline-any cline-yes">11x</span>
402
- <span class="cline-any cline-yes">11x</span>
403
- <span class="cline-any cline-yes">11x</span>
404
- <span class="cline-any cline-yes">11x</span>
405
- <span class="cline-any cline-yes">11x</span>
406
- <span class="cline-any cline-yes">11x</span>
509
+ <span class="cline-any cline-yes">1x</span>
510
+ <span class="cline-any cline-yes">1x</span>
511
+ <span class="cline-any cline-yes">1x</span>
512
+ <span class="cline-any cline-yes">1x</span>
513
+ <span class="cline-any cline-no">&nbsp;</span>
514
+ <span class="cline-any cline-no">&nbsp;</span>
515
+ <span class="cline-any cline-no">&nbsp;</span>
516
+ <span class="cline-any cline-no">&nbsp;</span>
517
+ <span class="cline-any cline-no">&nbsp;</span>
518
+ <span class="cline-any cline-yes">1x</span>
519
+ <span class="cline-any cline-yes">1x</span>
407
520
  <span class="cline-any cline-yes">1x</span>
408
521
  <span class="cline-any cline-yes">1x</span>
409
522
  <span class="cline-any cline-yes">1x</span>
@@ -417,26 +530,149 @@
417
530
  <span class="cline-any cline-yes">1x</span>
418
531
  <span class="cline-any cline-yes">1x</span>
419
532
  <span class="cline-any cline-yes">1x</span>
420
- <span class="cline-any cline-yes">11x</span>
421
- <span class="cline-any cline-yes">11x</span>
533
+ <span class="cline-any cline-yes">1x</span>
534
+ <span class="cline-any cline-yes">1x</span>
535
+ <span class="cline-any cline-yes">1x</span>
536
+ <span class="cline-any cline-yes">1x</span>
537
+ <span class="cline-any cline-yes">1x</span>
538
+ <span class="cline-any cline-yes">1x</span>
539
+ <span class="cline-any cline-yes">1x</span>
540
+ <span class="cline-any cline-yes">1x</span>
541
+ <span class="cline-any cline-yes">12x</span>
542
+ <span class="cline-any cline-yes">12x</span>
543
+ <span class="cline-any cline-yes">2x</span>
544
+ <span class="cline-any cline-yes">2x</span>
545
+ <span class="cline-any cline-yes">2x</span>
546
+ <span class="cline-any cline-yes">2x</span>
547
+ <span class="cline-any cline-yes">2x</span>
548
+ <span class="cline-any cline-yes">2x</span>
549
+ <span class="cline-any cline-yes">2x</span>
550
+ <span class="cline-any cline-yes">2x</span>
551
+ <span class="cline-any cline-yes">2x</span>
552
+ <span class="cline-any cline-yes">2x</span>
553
+ <span class="cline-any cline-yes">2x</span>
554
+ <span class="cline-any cline-yes">2x</span>
555
+ <span class="cline-any cline-yes">2x</span>
556
+ <span class="cline-any cline-yes">2x</span>
557
+ <span class="cline-any cline-yes">2x</span>
558
+ <span class="cline-any cline-yes">2x</span>
559
+ <span class="cline-any cline-yes">2x</span>
560
+ <span class="cline-any cline-yes">2x</span>
561
+ <span class="cline-any cline-yes">2x</span>
562
+ <span class="cline-any cline-yes">2x</span>
563
+ <span class="cline-any cline-yes">2x</span>
564
+ <span class="cline-any cline-yes">2x</span>
565
+ <span class="cline-any cline-yes">2x</span>
566
+ <span class="cline-any cline-yes">2x</span>
567
+ <span class="cline-any cline-yes">2x</span>
568
+ <span class="cline-any cline-yes">2x</span>
569
+ <span class="cline-any cline-yes">2x</span>
570
+ <span class="cline-any cline-yes">2x</span>
571
+ <span class="cline-any cline-yes">2x</span>
572
+ <span class="cline-any cline-yes">2x</span>
573
+ <span class="cline-any cline-yes">2x</span>
574
+ <span class="cline-any cline-yes">2x</span>
575
+ <span class="cline-any cline-yes">2x</span>
576
+ <span class="cline-any cline-yes">2x</span>
577
+ <span class="cline-any cline-yes">2x</span>
578
+ <span class="cline-any cline-yes">2x</span>
579
+ <span class="cline-any cline-yes">2x</span>
580
+ <span class="cline-any cline-yes">2x</span>
581
+ <span class="cline-any cline-yes">2x</span>
582
+ <span class="cline-any cline-yes">2x</span>
583
+ <span class="cline-any cline-yes">2x</span>
584
+ <span class="cline-any cline-yes">2x</span>
585
+ <span class="cline-any cline-yes">2x</span>
586
+ <span class="cline-any cline-yes">2x</span>
587
+ <span class="cline-any cline-yes">2x</span>
588
+ <span class="cline-any cline-yes">2x</span>
589
+ <span class="cline-any cline-yes">2x</span>
590
+ <span class="cline-any cline-yes">2x</span>
591
+ <span class="cline-any cline-yes">2x</span>
592
+ <span class="cline-any cline-yes">2x</span>
593
+ <span class="cline-any cline-yes">2x</span>
594
+ <span class="cline-any cline-yes">2x</span>
595
+ <span class="cline-any cline-yes">2x</span>
596
+ <span class="cline-any cline-yes">2x</span>
597
+ <span class="cline-any cline-yes">2x</span>
598
+ <span class="cline-any cline-yes">2x</span>
599
+ <span class="cline-any cline-yes">2x</span>
600
+ <span class="cline-any cline-yes">2x</span>
601
+ <span class="cline-any cline-yes">2x</span>
602
+ <span class="cline-any cline-yes">2x</span>
603
+ <span class="cline-any cline-yes">2x</span>
604
+ <span class="cline-any cline-yes">2x</span>
605
+ <span class="cline-any cline-yes">2x</span>
606
+ <span class="cline-any cline-yes">2x</span>
607
+ <span class="cline-any cline-yes">2x</span>
608
+ <span class="cline-any cline-yes">2x</span>
609
+ <span class="cline-any cline-yes">2x</span>
610
+ <span class="cline-any cline-yes">2x</span>
611
+ <span class="cline-any cline-yes">2x</span>
612
+ <span class="cline-any cline-yes">2x</span>
613
+ <span class="cline-any cline-yes">2x</span>
614
+ <span class="cline-any cline-yes">2x</span>
615
+ <span class="cline-any cline-yes">2x</span>
616
+ <span class="cline-any cline-yes">2x</span>
617
+ <span class="cline-any cline-yes">2x</span>
618
+ <span class="cline-any cline-yes">2x</span>
619
+ <span class="cline-any cline-yes">2x</span>
620
+ <span class="cline-any cline-yes">2x</span>
621
+ <span class="cline-any cline-yes">2x</span>
622
+ <span class="cline-any cline-yes">2x</span>
623
+ <span class="cline-any cline-yes">2x</span>
624
+ <span class="cline-any cline-yes">2x</span>
625
+ <span class="cline-any cline-yes">2x</span>
626
+ <span class="cline-any cline-yes">2x</span>
627
+ <span class="cline-any cline-yes">2x</span>
628
+ <span class="cline-any cline-yes">2x</span>
629
+ <span class="cline-any cline-yes">2x</span>
630
+ <span class="cline-any cline-yes">2x</span>
631
+ <span class="cline-any cline-yes">2x</span>
632
+ <span class="cline-any cline-yes">2x</span>
633
+ <span class="cline-any cline-yes">2x</span>
634
+ <span class="cline-any cline-yes">2x</span>
635
+ <span class="cline-any cline-yes">2x</span>
636
+ <span class="cline-any cline-yes">2x</span>
637
+ <span class="cline-any cline-yes">2x</span>
638
+ <span class="cline-any cline-yes">2x</span>
639
+ <span class="cline-any cline-yes">2x</span>
640
+ <span class="cline-any cline-yes">2x</span>
641
+ <span class="cline-any cline-yes">2x</span>
642
+ <span class="cline-any cline-yes">2x</span>
643
+ <span class="cline-any cline-yes">2x</span>
644
+ <span class="cline-any cline-yes">2x</span>
645
+ <span class="cline-any cline-yes">2x</span>
646
+ <span class="cline-any cline-yes">2x</span>
647
+ <span class="cline-any cline-yes">2x</span>
648
+ <span class="cline-any cline-yes">2x</span>
649
+ <span class="cline-any cline-yes">2x</span>
650
+ <span class="cline-any cline-yes">2x</span>
651
+ <span class="cline-any cline-yes">2x</span>
652
+ <span class="cline-any cline-yes">2x</span>
653
+ <span class="cline-any cline-yes">2x</span>
654
+ <span class="cline-any cline-yes">2x</span>
655
+ <span class="cline-any cline-yes">2x</span>
656
+ <span class="cline-any cline-yes">2x</span>
657
+ <span class="cline-any cline-yes">2x</span>
422
658
  <span class="cline-any cline-no">&nbsp;</span>
423
659
  <span class="cline-any cline-no">&nbsp;</span>
424
- <span class="cline-any cline-yes">11x</span>
425
- <span class="cline-any cline-yes">11x</span>
426
- <span class="cline-any cline-yes">11x</span>
427
- <span class="cline-any cline-yes">11x</span>
428
- <span class="cline-any cline-yes">11x</span>
429
- <span class="cline-any cline-yes">11x</span>
430
- <span class="cline-any cline-yes">11x</span>
431
- <span class="cline-any cline-yes">11x</span>
432
- <span class="cline-any cline-yes">11x</span>
433
- <span class="cline-any cline-yes">11x</span>
434
- <span class="cline-any cline-yes">11x</span>
435
- <span class="cline-any cline-yes">11x</span>
436
- <span class="cline-any cline-yes">11x</span>
437
- <span class="cline-any cline-yes">11x</span>
438
- <span class="cline-any cline-yes">11x</span>
439
- <span class="cline-any cline-yes">11x</span>
660
+ <span class="cline-any cline-yes">2x</span>
661
+ <span class="cline-any cline-yes">2x</span>
662
+ <span class="cline-any cline-yes">2x</span>
663
+ <span class="cline-any cline-yes">2x</span>
664
+ <span class="cline-any cline-yes">2x</span>
665
+ <span class="cline-any cline-yes">2x</span>
666
+ <span class="cline-any cline-yes">2x</span>
667
+ <span class="cline-any cline-yes">2x</span>
668
+ <span class="cline-any cline-yes">2x</span>
669
+ <span class="cline-any cline-yes">2x</span>
670
+ <span class="cline-any cline-yes">2x</span>
671
+ <span class="cline-any cline-yes">2x</span>
672
+ <span class="cline-any cline-yes">2x</span>
673
+ <span class="cline-any cline-yes">2x</span>
674
+ <span class="cline-any cline-yes">2x</span>
675
+ <span class="cline-any cline-yes">2x</span>
440
676
  <span class="cline-any cline-yes">12x</span>
441
677
  <span class="cline-any cline-yes">12x</span>
442
678
  <span class="cline-any cline-yes">12x</span>
@@ -445,8 +681,8 @@
445
681
  <span class="cline-any cline-yes">1x</span>
446
682
  <span class="cline-any cline-yes">1x</span>
447
683
  <span class="cline-any cline-yes">1x</span>
448
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { CloudFormationTemplate } from '@ttoss/cloudformation';
449
- import { PASSWORD_MINIMUM_LENGTH } from './config';
684
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { PASSWORD_MINIMUM_LENGTH } from './config';
685
+ import type { CloudFormationTemplate, Policy } from '@ttoss/cloudformation';
450
686
  &nbsp;
451
687
  const CognitoUserPoolLogicalId = 'CognitoUserPool';
452
688
  &nbsp;
@@ -454,41 +690,46 @@ const CognitoUserPoolClientLogicalId = 'CognitoUserPoolClient';
454
690
  &nbsp;
455
691
  const CognitoIdentityPoolLogicalId = 'CognitoIdentityPool';
456
692
  &nbsp;
457
- type Role =
458
- | string
459
- | {
460
- 'Fn::ImportValue': string;
461
- };
693
+ const IdentityPoolAuthenticatedIAMRoleLogicalId =
694
+ 'IdentityPoolAuthenticatedIAMRole';
695
+ &nbsp;
696
+ const IdentityPoolUnauthenticatedIAMRoleLogicalId =
697
+ 'IdentityPoolUnauthenticatedIAMRole';
698
+ &nbsp;
699
+ export const DenyStatement = {
700
+ Effect: 'Deny' as const,
701
+ Action: ['*'],
702
+ Resource: ['*'],
703
+ };
462
704
  &nbsp;
463
705
  export const createAuthTemplate = ({
464
706
  autoVerifiedAttributes = ['email'],
465
- identityPool = true,
466
- roles,
707
+ identityPool,
467
708
  schema,
468
709
  usernameAttributes = ['email'],
469
710
  }: {
470
711
  autoVerifiedAttributes?: Array&lt;'email' | 'phone_number'&gt; | null | false;
471
- identityPool?: boolean;
472
- roles?: {
473
- authenticated?: Role;
474
- unauthenticated?: Role;
712
+ identityPool?: {
713
+ enabled?: boolean;
714
+ authenticatedPolicies?: Policy[];
715
+ unauthenticatedPolicies?: Policy[];
475
716
  };
476
717
  /**
477
718
  * https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-schemaattribute.html
478
719
  */
479
720
  schema?: {
480
- AttributeDataType?: 'Boolean' | 'DateTime' | 'Number' | 'String';
481
- DeveloperOnlyAttribute?: boolean;
482
- Mutable?: boolean;
483
- Name?: string;
484
- NumberAttributeConstraints?: {
485
- MaxValue?: string;
486
- MinValue?: string;
721
+ attributeDataType?: 'Boolean' | 'DateTime' | 'Number' | 'String';
722
+ developerOnlyAttribute?: boolean;
723
+ mutable?: boolean;
724
+ name?: string;
725
+ numberAttributeConstraints?: {
726
+ maxValue?: string;
727
+ minValue?: string;
487
728
  };
488
- Required?: boolean;
489
- StringAttributeConstraints?: {
490
- MaxLength: string;
491
- MinLength: string;
729
+ required?: boolean;
730
+ stringAttributeConstraints?: {
731
+ maxLength: string;
732
+ minLength: string;
492
733
  };
493
734
  }[];
494
735
  usernameAttributes?: Array&lt;'email' | 'phone_number'&gt; | null;
@@ -503,6 +744,7 @@ export const createAuthTemplate = ({
503
744
  Resources: {
504
745
  [CognitoUserPoolLogicalId]: {
505
746
  Type: 'AWS::Cognito::UserPool',
747
+ DeletionPolicy: 'Retain',
506
748
  Properties: {
507
749
  AutoVerifiedAttributes,
508
750
  Policies: {
@@ -515,7 +757,6 @@ export const createAuthTemplate = ({
515
757
  TemporaryPasswordValidityDays: 30,
516
758
  },
517
759
  },
518
- Schema: schema,
519
760
  UsernameAttributes: usernameAttributes,
520
761
  UsernameConfiguration: {
521
762
  CaseSensitive: false,
@@ -573,7 +814,41 @@ export const createAuthTemplate = ({
573
814
  },
574
815
  };
575
816
  &nbsp;
576
- if (identityPool) {
817
+ if (schema) {
818
+ const Schema = schema.map((attribute) =&gt; {
819
+ let NumberAttributeConstraints = undefined;
820
+ &nbsp;
821
+ if (attribute.numberAttributeConstraints) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
822
+ <span class="cstat-no" title="statement not covered" > NumberAttributeConstraints = {</span>
823
+ <span class="cstat-no" title="statement not covered" > MaxValue: attribute.numberAttributeConstraints?.maxValue,</span>
824
+ <span class="cstat-no" title="statement not covered" > MinValue: attribute.numberAttributeConstraints?.minValue,</span>
825
+ <span class="cstat-no" title="statement not covered" > };</span>
826
+ <span class="cstat-no" title="statement not covered" > }</span>
827
+ &nbsp;
828
+ let StringAttributeConstraints = undefined;
829
+ &nbsp;
830
+ if (attribute.stringAttributeConstraints) {
831
+ StringAttributeConstraints = {
832
+ MaxLength: attribute.stringAttributeConstraints?.maxLength,
833
+ MinLength: attribute.stringAttributeConstraints?.minLength,
834
+ };
835
+ }
836
+ &nbsp;
837
+ return {
838
+ AttributeDataType: attribute.attributeDataType,
839
+ DeveloperOnlyAttribute: attribute.developerOnlyAttribute,
840
+ Mutable: attribute.mutable,
841
+ Name: attribute.name,
842
+ NumberAttributeConstraints,
843
+ Required: attribute.required,
844
+ StringAttributeConstraints,
845
+ };
846
+ });
847
+ &nbsp;
848
+ template.Resources[CognitoUserPoolLogicalId].Properties.Schema = Schema;
849
+ }
850
+ &nbsp;
851
+ if (identityPool?.enabled) {
577
852
  /**
578
853
  * https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-identitypool.html
579
854
  */
@@ -594,20 +869,99 @@ export const createAuthTemplate = ({
594
869
  },
595
870
  };
596
871
  &nbsp;
597
- if (roles) {
598
- /**
599
- * https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-identitypoolroleattachment.html
600
- */
601
- template.Resources.CognitoIdentityPoolRoleAttachment = {
602
- Type: 'AWS::Cognito::IdentityPoolRoleAttachment',
603
- Properties: {
604
- IdentityPoolId: {
605
- Ref: CognitoIdentityPoolLogicalId,
872
+ template.Resources[IdentityPoolAuthenticatedIAMRoleLogicalId] = {
873
+ Type: 'AWS::IAM::Role',
874
+ Properties: {
875
+ AssumeRolePolicyDocument: {
876
+ Version: '2012-10-17' as const,
877
+ Statement: [
878
+ {
879
+ Effect: 'Allow' as const,
880
+ Principal: {
881
+ Federated: 'cognito-identity.amazonaws.com',
882
+ },
883
+ Action: ['sts:AssumeRoleWithWebIdentity', 'sts:TagSession'],
884
+ Condition: {
885
+ StringEquals: {
886
+ 'cognito-identity.amazonaws.com:aud': {
887
+ Ref: CognitoIdentityPoolLogicalId,
888
+ },
889
+ },
890
+ 'ForAnyValue:StringLike': {
891
+ 'cognito-identity.amazonaws.com:amr': 'authenticated',
892
+ },
893
+ },
894
+ },
895
+ ],
896
+ },
897
+ Policies: identityPool.authenticatedPolicies || [
898
+ {
899
+ PolicyName: 'IdentityPoolAuthenticatedIAMRolePolicyName',
900
+ PolicyDocument: {
901
+ Version: '2012-10-17' as const,
902
+ Statement: [DenyStatement],
903
+ },
606
904
  },
607
- Roles: roles,
905
+ ],
906
+ },
907
+ };
908
+ &nbsp;
909
+ template.Resources[IdentityPoolUnauthenticatedIAMRoleLogicalId] = {
910
+ Type: 'AWS::IAM::Role',
911
+ Properties: {
912
+ AssumeRolePolicyDocument: {
913
+ Version: '2012-10-17' as const,
914
+ Statement: [
915
+ {
916
+ Effect: 'Allow' as const,
917
+ Principal: {
918
+ Federated: 'cognito-identity.amazonaws.com',
919
+ },
920
+ Action: 'sts:AssumeRoleWithWebIdentity',
921
+ Condition: {
922
+ StringEquals: {
923
+ 'cognito-identity.amazonaws.com:aud': {
924
+ Ref: CognitoIdentityPoolLogicalId,
925
+ },
926
+ },
927
+ 'ForAnyValue:StringLike': {
928
+ 'cognito-identity.amazonaws.com:amr': 'unauthenticated',
929
+ },
930
+ },
931
+ },
932
+ ],
608
933
  },
609
- };
610
- }
934
+ Policies: identityPool.authenticatedPolicies || [
935
+ {
936
+ PolicyName: 'IdentityPoolUnauthenticatedIAMRolePolicyName',
937
+ PolicyDocument: {
938
+ Version: '2012-10-17' as const,
939
+ Statement: [DenyStatement],
940
+ },
941
+ },
942
+ ],
943
+ },
944
+ };
945
+ &nbsp;
946
+ /**
947
+ * https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-identitypoolroleattachment.html
948
+ */
949
+ template.Resources.CognitoIdentityPoolRoleAttachment = {
950
+ Type: 'AWS::Cognito::IdentityPoolRoleAttachment',
951
+ Properties: {
952
+ IdentityPoolId: {
953
+ Ref: CognitoIdentityPoolLogicalId,
954
+ },
955
+ Roles: {
956
+ authenticated: {
957
+ 'Fn::GetAtt': [IdentityPoolAuthenticatedIAMRoleLogicalId, 'Arn'],
958
+ },
959
+ unauthenticated: {
960
+ 'Fn::GetAtt': [IdentityPoolUnauthenticatedIAMRoleLogicalId, 'Arn'],
961
+ },
962
+ },
963
+ },
964
+ };
611
965
  &nbsp;
612
966
  if (!template.Outputs) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
613
967
  <span class="cstat-no" title="statement not covered" > template.Outputs = {};</span>
@@ -643,7 +997,7 @@ createAuthTemplate.CognitoIdentityPoolLogicalId = CognitoIdentityPoolLogicalId;
643
997
  <div class='footer quiet pad2 space-top1 center small'>
644
998
  Code coverage generated by
645
999
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
646
- at 2023-02-26T17:51:17.172Z
1000
+ at 2023-03-07T01:14:20.193Z
647
1001
  </div>
648
1002
  <script src="prettify.js"></script>
649
1003
  <script>