@hitchy/plugin-auth 0.3.0 → 0.3.3

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.
Files changed (35) hide show
  1. package/api/policy/authentication.js +81 -27
  2. package/api/service/auth/manager.js +36 -4
  3. package/api/service/authentication/passport.js +6 -5
  4. package/api/service/authentication/strategies.js +57 -34
  5. package/api/service/authorization/tree.js +8 -8
  6. package/coverage/index.html +45 -45
  7. package/coverage/plugin-auth/api/controller/index.html +1 -1
  8. package/coverage/plugin-auth/api/controller/user.js.html +53 -53
  9. package/coverage/plugin-auth/api/model/authorization/index.html +1 -1
  10. package/coverage/plugin-auth/api/model/authorization/rule.js.html +31 -31
  11. package/coverage/plugin-auth/api/model/index.html +1 -1
  12. package/coverage/plugin-auth/api/model/role.js.html +29 -29
  13. package/coverage/plugin-auth/api/model/user-to-role.js.html +21 -21
  14. package/coverage/plugin-auth/api/model/user.js.html +192 -192
  15. package/coverage/plugin-auth/api/policy/authentication.js.html +281 -119
  16. package/coverage/plugin-auth/api/policy/authorization.js.html +25 -25
  17. package/coverage/plugin-auth/api/policy/index.html +18 -18
  18. package/coverage/plugin-auth/api/policy/user.js.html +37 -37
  19. package/coverage/plugin-auth/api/service/auth/index.html +16 -16
  20. package/coverage/plugin-auth/api/service/auth/manager.js.html +293 -197
  21. package/coverage/plugin-auth/api/service/authentication/index.html +25 -25
  22. package/coverage/plugin-auth/api/service/authentication/passport.js.html +55 -52
  23. package/coverage/plugin-auth/api/service/authentication/strategies.js.html +204 -135
  24. package/coverage/plugin-auth/api/service/authorization/index.html +1 -1
  25. package/coverage/plugin-auth/api/service/authorization/node.js.html +136 -136
  26. package/coverage/plugin-auth/api/service/authorization/policy-generator.js.html +29 -29
  27. package/coverage/plugin-auth/api/service/authorization/tree.js.html +140 -140
  28. package/coverage/plugin-auth/config/auth.js.html +17 -17
  29. package/coverage/plugin-auth/config/index.html +1 -1
  30. package/coverage/plugin-auth/index.html +15 -15
  31. package/coverage/plugin-auth/index.js.html +94 -55
  32. package/coverage/tmp/coverage-16252-1648499208727-0.json +1 -0
  33. package/index.js +17 -4
  34. package/package.json +2 -2
  35. package/coverage/tmp/coverage-6744-1648396809135-0.json +0 -1
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">88.84% </span>
26
+ <span class="strong">79.5% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>231/260</span>
28
+ <span class='fraction'>225/283</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">68.42% </span>
33
+ <span class="strong">78.12% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>26/38</span>
35
+ <span class='fraction'>25/32</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">91.66% </span>
40
+ <span class="strong">84.61% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>11/12</span>
42
+ <span class='fraction'>11/13</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">88.84% </span>
47
+ <span class="strong">79.5% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>231/260</span>
49
+ <span class='fraction'>225/283</span>
50
50
  </div>
51
51
 
52
52
 
@@ -55,7 +55,7 @@
55
55
  Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
56
  </p>
57
57
  </div>
58
- <div class='status-line high'></div>
58
+ <div class='status-line medium'></div>
59
59
  <pre><table class="coverage">
60
60
  <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
61
61
  <a name='L2'></a><a href='#L2'>2</a>
@@ -317,7 +317,30 @@
317
317
  <a name='L258'></a><a href='#L258'>258</a>
318
318
  <a name='L259'></a><a href='#L259'>259</a>
319
319
  <a name='L260'></a><a href='#L260'>260</a>
320
- <a name='L261'></a><a href='#L261'>261</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
320
+ <a name='L261'></a><a href='#L261'>261</a>
321
+ <a name='L262'></a><a href='#L262'>262</a>
322
+ <a name='L263'></a><a href='#L263'>263</a>
323
+ <a name='L264'></a><a href='#L264'>264</a>
324
+ <a name='L265'></a><a href='#L265'>265</a>
325
+ <a name='L266'></a><a href='#L266'>266</a>
326
+ <a name='L267'></a><a href='#L267'>267</a>
327
+ <a name='L268'></a><a href='#L268'>268</a>
328
+ <a name='L269'></a><a href='#L269'>269</a>
329
+ <a name='L270'></a><a href='#L270'>270</a>
330
+ <a name='L271'></a><a href='#L271'>271</a>
331
+ <a name='L272'></a><a href='#L272'>272</a>
332
+ <a name='L273'></a><a href='#L273'>273</a>
333
+ <a name='L274'></a><a href='#L274'>274</a>
334
+ <a name='L275'></a><a href='#L275'>275</a>
335
+ <a name='L276'></a><a href='#L276'>276</a>
336
+ <a name='L277'></a><a href='#L277'>277</a>
337
+ <a name='L278'></a><a href='#L278'>278</a>
338
+ <a name='L279'></a><a href='#L279'>279</a>
339
+ <a name='L280'></a><a href='#L280'>280</a>
340
+ <a name='L281'></a><a href='#L281'>281</a>
341
+ <a name='L282'></a><a href='#L282'>282</a>
342
+ <a name='L283'></a><a href='#L283'>283</a>
343
+ <a name='L284'></a><a href='#L284'>284</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
321
344
  <span class="cline-any cline-yes">1x</span>
322
345
  <span class="cline-any cline-yes">1x</span>
323
346
  <span class="cline-any cline-yes">1x</span>
@@ -335,21 +358,21 @@
335
358
  <span class="cline-any cline-yes">1x</span>
336
359
  <span class="cline-any cline-yes">1x</span>
337
360
  <span class="cline-any cline-yes">1x</span>
338
- <span class="cline-any cline-yes">18x</span>
339
- <span class="cline-any cline-yes">18x</span>
340
- <span class="cline-any cline-yes">18x</span>
341
- <span class="cline-any cline-yes">18x</span>
342
- <span class="cline-any cline-yes">18x</span>
343
- <span class="cline-any cline-yes">18x</span>
344
- <span class="cline-any cline-yes">18x</span>
345
- <span class="cline-any cline-yes">18x</span>
346
- <span class="cline-any cline-yes">18x</span>
347
- <span class="cline-any cline-yes">18x</span>
348
- <span class="cline-any cline-yes">18x</span>
349
- <span class="cline-any cline-yes">18x</span>
350
- <span class="cline-any cline-yes">18x</span>
351
- <span class="cline-any cline-yes">18x</span>
352
- <span class="cline-any cline-yes">18x</span>
361
+ <span class="cline-any cline-yes">19x</span>
362
+ <span class="cline-any cline-yes">19x</span>
363
+ <span class="cline-any cline-yes">19x</span>
364
+ <span class="cline-any cline-yes">19x</span>
365
+ <span class="cline-any cline-yes">19x</span>
366
+ <span class="cline-any cline-yes">19x</span>
367
+ <span class="cline-any cline-yes">19x</span>
368
+ <span class="cline-any cline-yes">19x</span>
369
+ <span class="cline-any cline-yes">19x</span>
370
+ <span class="cline-any cline-yes">19x</span>
371
+ <span class="cline-any cline-yes">19x</span>
372
+ <span class="cline-any cline-yes">19x</span>
373
+ <span class="cline-any cline-yes">19x</span>
374
+ <span class="cline-any cline-yes">19x</span>
375
+ <span class="cline-any cline-yes">19x</span>
353
376
  <span class="cline-any cline-yes">2x</span>
354
377
  <span class="cline-any cline-yes">2x</span>
355
378
  <span class="cline-any cline-yes">2x</span>
@@ -370,69 +393,92 @@
370
393
  <span class="cline-any cline-yes">2x</span>
371
394
  <span class="cline-any cline-yes">2x</span>
372
395
  <span class="cline-any cline-yes">2x</span>
373
- <span class="cline-any cline-yes">18x</span>
374
- <span class="cline-any cline-yes">18x</span>
375
- <span class="cline-any cline-yes">18x</span>
376
- <span class="cline-any cline-yes">18x</span>
377
- <span class="cline-any cline-yes">18x</span>
378
- <span class="cline-any cline-yes">18x</span>
379
- <span class="cline-any cline-yes">18x</span>
380
- <span class="cline-any cline-yes">18x</span>
381
- <span class="cline-any cline-yes">18x</span>
382
- <span class="cline-any cline-yes">18x</span>
383
- <span class="cline-any cline-yes">18x</span>
384
- <span class="cline-any cline-yes">18x</span>
385
- <span class="cline-any cline-yes">18x</span>
386
- <span class="cline-any cline-yes">9x</span>
387
- <span class="cline-any cline-yes">9x</span>
388
- <span class="cline-any cline-yes">9x</span>
389
- <span class="cline-any cline-yes">9x</span>
390
- <span class="cline-any cline-yes">9x</span>
396
+ <span class="cline-any cline-yes">19x</span>
397
+ <span class="cline-any cline-yes">19x</span>
398
+ <span class="cline-any cline-yes">19x</span>
399
+ <span class="cline-any cline-yes">19x</span>
400
+ <span class="cline-any cline-yes">19x</span>
401
+ <span class="cline-any cline-yes">19x</span>
402
+ <span class="cline-any cline-yes">19x</span>
403
+ <span class="cline-any cline-yes">19x</span>
404
+ <span class="cline-any cline-yes">19x</span>
405
+ <span class="cline-any cline-yes">19x</span>
406
+ <span class="cline-any cline-yes">19x</span>
407
+ <span class="cline-any cline-yes">19x</span>
408
+ <span class="cline-any cline-yes">19x</span>
409
+ <span class="cline-any cline-yes">19x</span>
410
+ <span class="cline-any cline-yes">19x</span>
411
+ <span class="cline-any cline-no">&nbsp;</span>
412
+ <span class="cline-any cline-no">&nbsp;</span>
413
+ <span class="cline-any cline-no">&nbsp;</span>
414
+ <span class="cline-any cline-no">&nbsp;</span>
415
+ <span class="cline-any cline-no">&nbsp;</span>
416
+ <span class="cline-any cline-no">&nbsp;</span>
417
+ <span class="cline-any cline-no">&nbsp;</span>
418
+ <span class="cline-any cline-no">&nbsp;</span>
419
+ <span class="cline-any cline-no">&nbsp;</span>
420
+ <span class="cline-any cline-no">&nbsp;</span>
421
+ <span class="cline-any cline-no">&nbsp;</span>
422
+ <span class="cline-any cline-no">&nbsp;</span>
423
+ <span class="cline-any cline-no">&nbsp;</span>
424
+ <span class="cline-any cline-no">&nbsp;</span>
425
+ <span class="cline-any cline-no">&nbsp;</span>
426
+ <span class="cline-any cline-no">&nbsp;</span>
427
+ <span class="cline-any cline-no">&nbsp;</span>
428
+ <span class="cline-any cline-no">&nbsp;</span>
429
+ <span class="cline-any cline-no">&nbsp;</span>
391
430
  <span class="cline-any cline-no">&nbsp;</span>
392
431
  <span class="cline-any cline-no">&nbsp;</span>
393
- <span class="cline-any cline-yes">9x</span>
394
- <span class="cline-any cline-yes">9x</span>
395
- <span class="cline-any cline-yes">9x</span>
396
- <span class="cline-any cline-yes">9x</span>
397
- <span class="cline-any cline-yes">9x</span>
398
432
  <span class="cline-any cline-no">&nbsp;</span>
399
433
  <span class="cline-any cline-no">&nbsp;</span>
400
434
  <span class="cline-any cline-no">&nbsp;</span>
401
- <span class="cline-any cline-yes">9x</span>
402
- <span class="cline-any cline-yes">9x</span>
403
- <span class="cline-any cline-yes">9x</span>
404
- <span class="cline-any cline-yes">9x</span>
405
- <span class="cline-any cline-yes">9x</span>
406
435
  <span class="cline-any cline-no">&nbsp;</span>
407
436
  <span class="cline-any cline-no">&nbsp;</span>
437
+ <span class="cline-any cline-no">&nbsp;</span>
438
+ <span class="cline-any cline-no">&nbsp;</span>
439
+ <span class="cline-any cline-no">&nbsp;</span>
440
+ <span class="cline-any cline-no">&nbsp;</span>
441
+ <span class="cline-any cline-no">&nbsp;</span>
442
+ <span class="cline-any cline-no">&nbsp;</span>
443
+ <span class="cline-any cline-no">&nbsp;</span>
444
+ <span class="cline-any cline-no">&nbsp;</span>
445
+ <span class="cline-any cline-no">&nbsp;</span>
446
+ <span class="cline-any cline-yes">19x</span>
447
+ <span class="cline-any cline-yes">19x</span>
448
+ <span class="cline-any cline-yes">19x</span>
449
+ <span class="cline-any cline-yes">19x</span>
450
+ <span class="cline-any cline-yes">19x</span>
451
+ <span class="cline-any cline-yes">19x</span>
452
+ <span class="cline-any cline-yes">19x</span>
453
+ <span class="cline-any cline-yes">19x</span>
454
+ <span class="cline-any cline-yes">19x</span>
455
+ <span class="cline-any cline-yes">9x</span>
408
456
  <span class="cline-any cline-yes">9x</span>
409
457
  <span class="cline-any cline-yes">9x</span>
410
458
  <span class="cline-any cline-yes">9x</span>
411
459
  <span class="cline-any cline-yes">9x</span>
412
460
  <span class="cline-any cline-no">&nbsp;</span>
413
461
  <span class="cline-any cline-no">&nbsp;</span>
414
- <span class="cline-any cline-yes">9x</span>
415
- <span class="cline-any cline-yes">9x</span>
416
- <span class="cline-any cline-yes">9x</span>
462
+ <span class="cline-any cline-no">&nbsp;</span>
417
463
  <span class="cline-any cline-no">&nbsp;</span>
418
464
  <span class="cline-any cline-no">&nbsp;</span>
419
465
  <span class="cline-any cline-yes">9x</span>
420
- <span class="cline-any cline-yes">18x</span>
421
- <span class="cline-any cline-yes">18x</span>
422
- <span class="cline-any cline-yes">18x</span>
423
- <span class="cline-any cline-yes">18x</span>
424
- <span class="cline-any cline-yes">18x</span>
425
- <span class="cline-any cline-yes">18x</span>
426
- <span class="cline-any cline-yes">18x</span>
427
- <span class="cline-any cline-yes">18x</span>
428
- <span class="cline-any cline-yes">18x</span>
429
- <span class="cline-any cline-yes">18x</span>
430
- <span class="cline-any cline-yes">18x</span>
431
- <span class="cline-any cline-yes">18x</span>
432
- <span class="cline-any cline-yes">18x</span>
433
- <span class="cline-any cline-yes">18x</span>
434
- <span class="cline-any cline-yes">18x</span>
435
- <span class="cline-any cline-yes">18x</span>
466
+ <span class="cline-any cline-yes">19x</span>
467
+ <span class="cline-any cline-yes">19x</span>
468
+ <span class="cline-any cline-yes">19x</span>
469
+ <span class="cline-any cline-yes">19x</span>
470
+ <span class="cline-any cline-yes">19x</span>
471
+ <span class="cline-any cline-yes">19x</span>
472
+ <span class="cline-any cline-yes">19x</span>
473
+ <span class="cline-any cline-yes">19x</span>
474
+ <span class="cline-any cline-yes">19x</span>
475
+ <span class="cline-any cline-yes">19x</span>
476
+ <span class="cline-any cline-yes">19x</span>
477
+ <span class="cline-any cline-yes">19x</span>
478
+ <span class="cline-any cline-yes">19x</span>
479
+ <span class="cline-any cline-yes">19x</span>
480
+ <span class="cline-any cline-yes">19x</span>
481
+ <span class="cline-any cline-yes">19x</span>
436
482
  <span class="cline-any cline-yes">2x</span>
437
483
  <span class="cline-any cline-yes">1x</span>
438
484
  <span class="cline-any cline-yes">1x</span>
@@ -514,16 +560,16 @@
514
560
  <span class="cline-any cline-yes">2x</span>
515
561
  <span class="cline-any cline-yes">2x</span>
516
562
  <span class="cline-any cline-yes">2x</span>
517
- <span class="cline-any cline-yes">18x</span>
518
- <span class="cline-any cline-yes">18x</span>
519
- <span class="cline-any cline-yes">18x</span>
520
- <span class="cline-any cline-yes">18x</span>
521
- <span class="cline-any cline-yes">18x</span>
522
- <span class="cline-any cline-yes">18x</span>
523
- <span class="cline-any cline-yes">18x</span>
524
- <span class="cline-any cline-yes">18x</span>
525
- <span class="cline-any cline-yes">18x</span>
526
- <span class="cline-any cline-yes">18x</span>
563
+ <span class="cline-any cline-yes">19x</span>
564
+ <span class="cline-any cline-yes">19x</span>
565
+ <span class="cline-any cline-yes">19x</span>
566
+ <span class="cline-any cline-yes">19x</span>
567
+ <span class="cline-any cline-yes">19x</span>
568
+ <span class="cline-any cline-yes">19x</span>
569
+ <span class="cline-any cline-yes">19x</span>
570
+ <span class="cline-any cline-yes">19x</span>
571
+ <span class="cline-any cline-yes">19x</span>
572
+ <span class="cline-any cline-yes">19x</span>
527
573
  <span class="cline-any cline-yes">2x</span>
528
574
  <span class="cline-any cline-yes">1x</span>
529
575
  <span class="cline-any cline-yes">2x</span>
@@ -556,26 +602,26 @@
556
602
  <span class="cline-any cline-yes">2x</span>
557
603
  <span class="cline-any cline-yes">2x</span>
558
604
  <span class="cline-any cline-yes">2x</span>
559
- <span class="cline-any cline-yes">18x</span>
560
- <span class="cline-any cline-yes">18x</span>
561
- <span class="cline-any cline-yes">18x</span>
562
- <span class="cline-any cline-yes">18x</span>
563
- <span class="cline-any cline-yes">18x</span>
564
- <span class="cline-any cline-yes">18x</span>
565
- <span class="cline-any cline-yes">18x</span>
566
- <span class="cline-any cline-yes">51x</span>
567
- <span class="cline-any cline-yes">51x</span>
568
- <span class="cline-any cline-yes">51x</span>
605
+ <span class="cline-any cline-yes">19x</span>
606
+ <span class="cline-any cline-yes">19x</span>
607
+ <span class="cline-any cline-yes">19x</span>
608
+ <span class="cline-any cline-yes">19x</span>
609
+ <span class="cline-any cline-yes">19x</span>
610
+ <span class="cline-any cline-yes">19x</span>
611
+ <span class="cline-any cline-yes">19x</span>
612
+ <span class="cline-any cline-yes">52x</span>
613
+ <span class="cline-any cline-yes">52x</span>
614
+ <span class="cline-any cline-yes">52x</span>
569
615
  <span class="cline-any cline-no">&nbsp;</span>
570
616
  <span class="cline-any cline-no">&nbsp;</span>
571
- <span class="cline-any cline-yes">51x</span>
572
- <span class="cline-any cline-yes">51x</span>
573
- <span class="cline-any cline-yes">51x</span>
574
- <span class="cline-any cline-yes">51x</span>
575
- <span class="cline-any cline-yes">51x</span>
576
- <span class="cline-any cline-yes">18x</span>
577
- <span class="cline-any cline-yes">18x</span>
578
- <span class="cline-any cline-yes">18x</span>
617
+ <span class="cline-any cline-yes">52x</span>
618
+ <span class="cline-any cline-yes">52x</span>
619
+ <span class="cline-any cline-yes">52x</span>
620
+ <span class="cline-any cline-yes">52x</span>
621
+ <span class="cline-any cline-yes">52x</span>
622
+ <span class="cline-any cline-yes">19x</span>
623
+ <span class="cline-any cline-yes">19x</span>
624
+ <span class="cline-any cline-yes">19x</span>
579
625
  <span class="cline-any cline-yes">1x</span>
580
626
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">"use strict";
581
627
  &nbsp;
@@ -596,9 +642,9 @@ const RemoteAuthCustomData = new Map();
596
642
  &nbsp;
597
643
  module.exports = function() {
598
644
  const api = this;
599
- const { models } = api.runtime;
645
+ const { models, services } = api.runtime;
600
646
  &nbsp;
601
- const AlertLog = api.log( "hitchy:plugin:auth:alert" );
647
+ const logAlert = api.log( "hitchy:plugin:auth:alert" );
602
648
  &nbsp;
603
649
  /**
604
650
  * Fetches named user's local profile.
@@ -635,6 +681,52 @@ module.exports = function() {
635
681
  * Implements helpers for generating strategies for passport.js.
636
682
  */
637
683
  class AuthenticationStrategies {
684
+ /**
685
+ * Picks user based on provided name and checks if provided password is
686
+ * matching or not.
687
+ *
688
+ * @param {string} username name of user to authenticate
689
+ * @param {string} password named user's password for authentication
690
+ * @param {function(Error?, object, object)} done invoked with optional error, authenticated user or some message as feedback
691
+ * @returns {void}
692
+ */
693
+ static <span class="fstat-no" title="function not covered" >checkAuthentication( username, password, done ) {</span>
694
+ <span class="cstat-no" title="statement not covered" > models.User</span>
695
+ <span class="cstat-no" title="statement not covered" > .find( { eq: { username } }, {}, { loadRecords: true } )</span>
696
+ <span class="cstat-no" title="statement not covered" > .then( matches =&gt; {</span>
697
+ <span class="cstat-no" title="statement not covered" > switch ( matches.length ) {</span>
698
+ <span class="cstat-no" title="statement not covered" > case 0 :</span>
699
+ <span class="cstat-no" title="statement not covered" > done( null, false, { message: "Incorrect username." } );</span>
700
+ <span class="cstat-no" title="statement not covered" > return undefined;</span>
701
+ <span class="cstat-no" title="statement not covered" ></span>
702
+ <span class="cstat-no" title="statement not covered" > case 1 : {</span>
703
+ <span class="cstat-no" title="statement not covered" > const [user] = matches;</span>
704
+ <span class="cstat-no" title="statement not covered" ></span>
705
+ <span class="cstat-no" title="statement not covered" > if ( user.strategy &amp;&amp; user.strategy !== "local" ) {</span>
706
+ <span class="cstat-no" title="statement not covered" > done( null, false, { message: "Authenticating this user requires different strategy." } );</span>
707
+ <span class="cstat-no" title="statement not covered" > return undefined;</span>
708
+ <span class="cstat-no" title="statement not covered" > }</span>
709
+ <span class="cstat-no" title="statement not covered" ></span>
710
+ <span class="cstat-no" title="statement not covered" > return user.verifyPassword( password ).then( result =&gt; {</span>
711
+ <span class="cstat-no" title="statement not covered" > if ( result ) {</span>
712
+ <span class="cstat-no" title="statement not covered" > done( null, user );</span>
713
+ <span class="cstat-no" title="statement not covered" > } else {</span>
714
+ <span class="cstat-no" title="statement not covered" > done( null, false, { message: "Incorrect password." } );</span>
715
+ <span class="cstat-no" title="statement not covered" > }</span>
716
+ <span class="cstat-no" title="statement not covered" > } );</span>
717
+ <span class="cstat-no" title="statement not covered" > }</span>
718
+ <span class="cstat-no" title="statement not covered" ></span>
719
+ <span class="cstat-no" title="statement not covered" > default :</span>
720
+ <span class="cstat-no" title="statement not covered" > done( null, false, { message: "Ambiguous username." } );</span>
721
+ <span class="cstat-no" title="statement not covered" > return undefined;</span>
722
+ <span class="cstat-no" title="statement not covered" > }</span>
723
+ <span class="cstat-no" title="statement not covered" > } )</span>
724
+ <span class="cstat-no" title="statement not covered" > .catch( err =&gt; {</span>
725
+ <span class="cstat-no" title="statement not covered" > logAlert( err );</span>
726
+ <span class="cstat-no" title="statement not covered" > done( err );</span>
727
+ <span class="cstat-no" title="statement not covered" > } );</span>
728
+ <span class="cstat-no" title="statement not covered" > }</span>
729
+ &nbsp;
638
730
  /**
639
731
  * Generates local strategy authenticating user based on local user
640
732
  * model managed in local ODM.
@@ -643,39 +735,16 @@ module.exports = function() {
643
735
  */
644
736
  static generateLocal() {
645
737
  const strategy = new LocalStrategy( ( name, password, done ) =&gt; {
646
- models.User
647
- .find( { eq: { name } }, {}, { loadRecords: true } )
648
- .then( matches =&gt; {
649
- switch ( matches.length ) {
650
- <span class="branch-0 cbranch-no" title="branch not covered" > case 0 :</span>
651
- <span class="cstat-no" title="statement not covered" > done( null, false, { message: "Incorrect username." } );</span>
652
- <span class="cstat-no" title="statement not covered" > return undefined;</span>
653
- &nbsp;
654
- case 1 : {
655
- const [user] = matches;
656
- &nbsp;
657
- if ( user.strategy <span class="branch-0 cbranch-no" title="branch not covered" >&amp;&amp; user.strategy !== "local" </span>) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
658
- <span class="cstat-no" title="statement not covered" > done( null, false, { message: "Authenticating this user requires different strategy." } );</span>
659
- <span class="cstat-no" title="statement not covered" > return undefined;</span>
660
- <span class="cstat-no" title="statement not covered" > }</span>
661
- &nbsp;
662
- return user.verifyPassword( password ).then( result =&gt; {
663
- if ( result ) {
664
- done( null, user );
665
- }<span class="branch-0 cbranch-no" title="branch not covered" > else {</span>
666
- <span class="cstat-no" title="statement not covered" > done( null, false, { message: "Incorrect password." } );</span>
667
- <span class="cstat-no" title="statement not covered" > }</span>
668
- } );
669
- }
670
- &nbsp;
671
- <span class="branch-0 cbranch-no" title="branch not covered" > default :</span>
672
- <span class="cstat-no" title="statement not covered" > done( null, false, { message: "Ambiguous username." } );</span>
673
- <span class="cstat-no" title="statement not covered" > return undefined;</span>
674
- }
738
+ services.AuthManager.checkAuthentication( name, password, done )
739
+ .then( user =&gt; {
740
+ done( null, user );
675
741
  } )
676
- .catch( err =&gt; {
677
- <span class="cstat-no" title="statement not covered" > AlertLog( err );</span>
678
- <span class="cstat-no" title="statement not covered" > done( err );</span>
742
+ .catch( error =&gt; {
743
+ <span class="cstat-no" title="statement not covered" > if ( error instanceof services.HttpException &amp;&amp; Math.floor( error.statusCode / 100 ) === 4 ) {</span>
744
+ <span class="cstat-no" title="statement not covered" > done( null, false, { message: error.message } );</span>
745
+ <span class="cstat-no" title="statement not covered" > } else {</span>
746
+ <span class="cstat-no" title="statement not covered" > done( error );</span>
747
+ <span class="cstat-no" title="statement not covered" > }</span>
679
748
  } );
680
749
  } );
681
750
  &nbsp;
@@ -844,7 +913,7 @@ module.exports = function() {
844
913
  <div class='footer quiet pad2 space-top1 center small'>
845
914
  Code coverage generated by
846
915
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
847
- at Sun Mar 27 2022 18:00:09 GMT+0200 (Mitteleuropäische Sommerzeit)
916
+ at Mon Mar 28 2022 22:26:49 GMT+0200 (Mitteleuropäische Sommerzeit)
848
917
  </div>
849
918
  </div>
850
919
  <script src="../../../../prettify.js"></script>
@@ -125,7 +125,7 @@
125
125
  <div class='footer quiet pad2 space-top1 center small'>
126
126
  Code coverage generated by
127
127
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
128
- at Sun Mar 27 2022 18:00:09 GMT+0200 (Mitteleuropäische Sommerzeit)
128
+ at Mon Mar 28 2022 22:26:49 GMT+0200 (Mitteleuropäische Sommerzeit)
129
129
  </div>
130
130
  </div>
131
131
  <script src="../../../../prettify.js"></script>