@hitchy/plugin-auth 0.3.0 → 0.3.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.
- package/api/policy/authentication.js +80 -26
- package/api/service/auth/manager.js +36 -4
- package/api/service/authentication/passport.js +6 -5
- package/api/service/authentication/strategies.js +57 -34
- package/api/service/authorization/tree.js +8 -8
- package/coverage/index.html +38 -38
- package/coverage/plugin-auth/api/controller/index.html +1 -1
- package/coverage/plugin-auth/api/controller/user.js.html +1 -1
- package/coverage/plugin-auth/api/model/authorization/index.html +1 -1
- package/coverage/plugin-auth/api/model/authorization/rule.js.html +1 -1
- package/coverage/plugin-auth/api/model/index.html +1 -1
- package/coverage/plugin-auth/api/model/role.js.html +1 -1
- package/coverage/plugin-auth/api/model/user-to-role.js.html +1 -1
- package/coverage/plugin-auth/api/model/user.js.html +1 -1
- package/coverage/plugin-auth/api/policy/authentication.js.html +215 -50
- package/coverage/plugin-auth/api/policy/authorization.js.html +1 -1
- package/coverage/plugin-auth/api/policy/index.html +18 -18
- package/coverage/plugin-auth/api/policy/user.js.html +1 -1
- package/coverage/plugin-auth/api/service/auth/index.html +17 -17
- package/coverage/plugin-auth/api/service/auth/manager.js.html +109 -13
- package/coverage/plugin-auth/api/service/authentication/index.html +25 -25
- package/coverage/plugin-auth/api/service/authentication/passport.js.html +14 -11
- package/coverage/plugin-auth/api/service/authentication/strategies.js.html +132 -63
- package/coverage/plugin-auth/api/service/authorization/index.html +1 -1
- package/coverage/plugin-auth/api/service/authorization/node.js.html +1 -1
- package/coverage/plugin-auth/api/service/authorization/policy-generator.js.html +1 -1
- package/coverage/plugin-auth/api/service/authorization/tree.js.html +9 -9
- package/coverage/plugin-auth/config/auth.js.html +1 -1
- package/coverage/plugin-auth/config/index.html +1 -1
- package/coverage/plugin-auth/index.html +1 -1
- package/coverage/plugin-auth/index.js.html +2 -2
- package/coverage/tmp/coverage-8472-1648414315419-0.json +1 -0
- package/index.js +4 -1
- package/package.json +1 -1
- 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">
|
|
26
|
+
<span class="strong">85.83% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>200/233</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">81.25% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>26/32</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
40
|
<span class="strong">100% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
42
|
+
<span class='fraction'>7/7</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">85.83% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>200/233</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -236,7 +236,62 @@
|
|
|
236
236
|
<a name='L177'></a><a href='#L177'>177</a>
|
|
237
237
|
<a name='L178'></a><a href='#L178'>178</a>
|
|
238
238
|
<a name='L179'></a><a href='#L179'>179</a>
|
|
239
|
-
<a name='L180'></a><a href='#L180'>180</a
|
|
239
|
+
<a name='L180'></a><a href='#L180'>180</a>
|
|
240
|
+
<a name='L181'></a><a href='#L181'>181</a>
|
|
241
|
+
<a name='L182'></a><a href='#L182'>182</a>
|
|
242
|
+
<a name='L183'></a><a href='#L183'>183</a>
|
|
243
|
+
<a name='L184'></a><a href='#L184'>184</a>
|
|
244
|
+
<a name='L185'></a><a href='#L185'>185</a>
|
|
245
|
+
<a name='L186'></a><a href='#L186'>186</a>
|
|
246
|
+
<a name='L187'></a><a href='#L187'>187</a>
|
|
247
|
+
<a name='L188'></a><a href='#L188'>188</a>
|
|
248
|
+
<a name='L189'></a><a href='#L189'>189</a>
|
|
249
|
+
<a name='L190'></a><a href='#L190'>190</a>
|
|
250
|
+
<a name='L191'></a><a href='#L191'>191</a>
|
|
251
|
+
<a name='L192'></a><a href='#L192'>192</a>
|
|
252
|
+
<a name='L193'></a><a href='#L193'>193</a>
|
|
253
|
+
<a name='L194'></a><a href='#L194'>194</a>
|
|
254
|
+
<a name='L195'></a><a href='#L195'>195</a>
|
|
255
|
+
<a name='L196'></a><a href='#L196'>196</a>
|
|
256
|
+
<a name='L197'></a><a href='#L197'>197</a>
|
|
257
|
+
<a name='L198'></a><a href='#L198'>198</a>
|
|
258
|
+
<a name='L199'></a><a href='#L199'>199</a>
|
|
259
|
+
<a name='L200'></a><a href='#L200'>200</a>
|
|
260
|
+
<a name='L201'></a><a href='#L201'>201</a>
|
|
261
|
+
<a name='L202'></a><a href='#L202'>202</a>
|
|
262
|
+
<a name='L203'></a><a href='#L203'>203</a>
|
|
263
|
+
<a name='L204'></a><a href='#L204'>204</a>
|
|
264
|
+
<a name='L205'></a><a href='#L205'>205</a>
|
|
265
|
+
<a name='L206'></a><a href='#L206'>206</a>
|
|
266
|
+
<a name='L207'></a><a href='#L207'>207</a>
|
|
267
|
+
<a name='L208'></a><a href='#L208'>208</a>
|
|
268
|
+
<a name='L209'></a><a href='#L209'>209</a>
|
|
269
|
+
<a name='L210'></a><a href='#L210'>210</a>
|
|
270
|
+
<a name='L211'></a><a href='#L211'>211</a>
|
|
271
|
+
<a name='L212'></a><a href='#L212'>212</a>
|
|
272
|
+
<a name='L213'></a><a href='#L213'>213</a>
|
|
273
|
+
<a name='L214'></a><a href='#L214'>214</a>
|
|
274
|
+
<a name='L215'></a><a href='#L215'>215</a>
|
|
275
|
+
<a name='L216'></a><a href='#L216'>216</a>
|
|
276
|
+
<a name='L217'></a><a href='#L217'>217</a>
|
|
277
|
+
<a name='L218'></a><a href='#L218'>218</a>
|
|
278
|
+
<a name='L219'></a><a href='#L219'>219</a>
|
|
279
|
+
<a name='L220'></a><a href='#L220'>220</a>
|
|
280
|
+
<a name='L221'></a><a href='#L221'>221</a>
|
|
281
|
+
<a name='L222'></a><a href='#L222'>222</a>
|
|
282
|
+
<a name='L223'></a><a href='#L223'>223</a>
|
|
283
|
+
<a name='L224'></a><a href='#L224'>224</a>
|
|
284
|
+
<a name='L225'></a><a href='#L225'>225</a>
|
|
285
|
+
<a name='L226'></a><a href='#L226'>226</a>
|
|
286
|
+
<a name='L227'></a><a href='#L227'>227</a>
|
|
287
|
+
<a name='L228'></a><a href='#L228'>228</a>
|
|
288
|
+
<a name='L229'></a><a href='#L229'>229</a>
|
|
289
|
+
<a name='L230'></a><a href='#L230'>230</a>
|
|
290
|
+
<a name='L231'></a><a href='#L231'>231</a>
|
|
291
|
+
<a name='L232'></a><a href='#L232'>232</a>
|
|
292
|
+
<a name='L233'></a><a href='#L233'>233</a>
|
|
293
|
+
<a name='L234'></a><a href='#L234'>234</a>
|
|
294
|
+
<a name='L235'></a><a href='#L235'>235</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
|
240
295
|
<span class="cline-any cline-yes">1x</span>
|
|
241
296
|
<span class="cline-any cline-yes">1x</span>
|
|
242
297
|
<span class="cline-any cline-yes">18x</span>
|
|
@@ -296,7 +351,44 @@
|
|
|
296
351
|
<span class="cline-any cline-yes">18x</span>
|
|
297
352
|
<span class="cline-any cline-yes">18x</span>
|
|
298
353
|
<span class="cline-any cline-yes">18x</span>
|
|
299
|
-
<span class="cline-any cline-yes">
|
|
354
|
+
<span class="cline-any cline-yes">90x</span>
|
|
355
|
+
<span class="cline-any cline-yes">35x</span>
|
|
356
|
+
<span class="cline-any cline-yes">35x</span>
|
|
357
|
+
<span class="cline-any cline-yes">35x</span>
|
|
358
|
+
<span class="cline-any cline-yes">55x</span>
|
|
359
|
+
<span class="cline-any cline-yes">55x</span>
|
|
360
|
+
<span class="cline-any cline-yes">55x</span>
|
|
361
|
+
<span class="cline-any cline-yes">55x</span>
|
|
362
|
+
<span class="cline-any cline-yes">55x</span>
|
|
363
|
+
<span class="cline-any cline-yes">55x</span>
|
|
364
|
+
<span class="cline-any cline-no"> </span>
|
|
365
|
+
<span class="cline-any cline-no"> </span>
|
|
366
|
+
<span class="cline-any cline-no"> </span>
|
|
367
|
+
<span class="cline-any cline-no"> </span>
|
|
368
|
+
<span class="cline-any cline-no"> </span>
|
|
369
|
+
<span class="cline-any cline-no"> </span>
|
|
370
|
+
<span class="cline-any cline-no"> </span>
|
|
371
|
+
<span class="cline-any cline-no"> </span>
|
|
372
|
+
<span class="cline-any cline-no"> </span>
|
|
373
|
+
<span class="cline-any cline-no"> </span>
|
|
374
|
+
<span class="cline-any cline-no"> </span>
|
|
375
|
+
<span class="cline-any cline-no"> </span>
|
|
376
|
+
<span class="cline-any cline-no"> </span>
|
|
377
|
+
<span class="cline-any cline-no"> </span>
|
|
378
|
+
<span class="cline-any cline-no"> </span>
|
|
379
|
+
<span class="cline-any cline-no"> </span>
|
|
380
|
+
<span class="cline-any cline-yes">90x</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">18x</span>
|
|
387
|
+
<span class="cline-any cline-yes">18x</span>
|
|
388
|
+
<span class="cline-any cline-yes">18x</span>
|
|
389
|
+
<span class="cline-any cline-yes">18x</span>
|
|
390
|
+
<span class="cline-any cline-yes">18x</span>
|
|
391
|
+
<span class="cline-any cline-yes">18x</span>
|
|
300
392
|
<span class="cline-any cline-yes">19x</span>
|
|
301
393
|
<span class="cline-any cline-yes">19x</span>
|
|
302
394
|
<span class="cline-any cline-yes">19x</span>
|
|
@@ -309,27 +401,15 @@
|
|
|
309
401
|
<span class="cline-any cline-yes">19x</span>
|
|
310
402
|
<span class="cline-any cline-yes">11x</span>
|
|
311
403
|
<span class="cline-any cline-no"> </span>
|
|
312
|
-
<span class="cline-any cline-no"> </span>
|
|
313
|
-
<span class="cline-any cline-no"> </span>
|
|
314
|
-
<span class="cline-any cline-yes">11x</span>
|
|
315
|
-
<span class="cline-any cline-yes">11x</span>
|
|
316
|
-
<span class="cline-any cline-yes">11x</span>
|
|
317
|
-
<span class="cline-any cline-yes">11x</span>
|
|
318
|
-
<span class="cline-any cline-yes">11x</span>
|
|
319
|
-
<span class="cline-any cline-yes">11x</span>
|
|
320
|
-
<span class="cline-any cline-yes">11x</span>
|
|
321
|
-
<span class="cline-any cline-yes">11x</span>
|
|
322
|
-
<span class="cline-any cline-yes">11x</span>
|
|
323
404
|
<span class="cline-any cline-yes">11x</span>
|
|
324
405
|
<span class="cline-any cline-yes">11x</span>
|
|
325
406
|
<span class="cline-any cline-yes">11x</span>
|
|
407
|
+
<span class="cline-any cline-no"> </span>
|
|
326
408
|
<span class="cline-any cline-yes">11x</span>
|
|
327
409
|
<span class="cline-any cline-yes">11x</span>
|
|
328
410
|
<span class="cline-any cline-yes">11x</span>
|
|
329
411
|
<span class="cline-any cline-yes">11x</span>
|
|
330
412
|
<span class="cline-any cline-yes">11x</span>
|
|
331
|
-
<span class="cline-any cline-no"> </span>
|
|
332
|
-
<span class="cline-any cline-no"> </span>
|
|
333
413
|
<span class="cline-any cline-yes">19x</span>
|
|
334
414
|
<span class="cline-any cline-yes">19x</span>
|
|
335
415
|
<span class="cline-any cline-yes">19x</span>
|
|
@@ -356,6 +436,36 @@
|
|
|
356
436
|
<span class="cline-any cline-yes">18x</span>
|
|
357
437
|
<span class="cline-any cline-yes">18x</span>
|
|
358
438
|
<span class="cline-any cline-yes">18x</span>
|
|
439
|
+
<span class="cline-any cline-yes">18x</span>
|
|
440
|
+
<span class="cline-any cline-yes">11x</span>
|
|
441
|
+
<span class="cline-any cline-yes">11x</span>
|
|
442
|
+
<span class="cline-any cline-yes">11x</span>
|
|
443
|
+
<span class="cline-any cline-yes">11x</span>
|
|
444
|
+
<span class="cline-any cline-yes">11x</span>
|
|
445
|
+
<span class="cline-any cline-yes">11x</span>
|
|
446
|
+
<span class="cline-any cline-yes">11x</span>
|
|
447
|
+
<span class="cline-any cline-yes">11x</span>
|
|
448
|
+
<span class="cline-any cline-yes">11x</span>
|
|
449
|
+
<span class="cline-any cline-yes">11x</span>
|
|
450
|
+
<span class="cline-any cline-yes">11x</span>
|
|
451
|
+
<span class="cline-any cline-yes">11x</span>
|
|
452
|
+
<span class="cline-any cline-yes">11x</span>
|
|
453
|
+
<span class="cline-any cline-yes">11x</span>
|
|
454
|
+
<span class="cline-any cline-yes">11x</span>
|
|
455
|
+
<span class="cline-any cline-yes">11x</span>
|
|
456
|
+
<span class="cline-any cline-no"> </span>
|
|
457
|
+
<span class="cline-any cline-no"> </span>
|
|
458
|
+
<span class="cline-any cline-yes">11x</span>
|
|
459
|
+
<span class="cline-any cline-yes">18x</span>
|
|
460
|
+
<span class="cline-any cline-yes">18x</span>
|
|
461
|
+
<span class="cline-any cline-yes">18x</span>
|
|
462
|
+
<span class="cline-any cline-yes">18x</span>
|
|
463
|
+
<span class="cline-any cline-yes">18x</span>
|
|
464
|
+
<span class="cline-any cline-yes">18x</span>
|
|
465
|
+
<span class="cline-any cline-yes">18x</span>
|
|
466
|
+
<span class="cline-any cline-yes">18x</span>
|
|
467
|
+
<span class="cline-any cline-yes">18x</span>
|
|
468
|
+
<span class="cline-any cline-yes">18x</span>
|
|
359
469
|
<span class="cline-any cline-yes">12x</span>
|
|
360
470
|
<span class="cline-any cline-yes">12x</span>
|
|
361
471
|
<span class="cline-any cline-yes">12x</span>
|
|
@@ -419,10 +529,10 @@
|
|
|
419
529
|
|
|
420
530
|
module.exports = function() {
|
|
421
531
|
const api = this;
|
|
422
|
-
const { services } = api.runtime;
|
|
532
|
+
const { models, services } = api.runtime;
|
|
423
533
|
|
|
424
|
-
const
|
|
425
|
-
const
|
|
534
|
+
const logAlert = api.log( "hitchy:plugin:auth:alert" );
|
|
535
|
+
const logDebug = api.log( "hitchy:plugin:auth:debug" );
|
|
426
536
|
|
|
427
537
|
/**
|
|
428
538
|
* Implements policy handlers transparently managing authentication process
|
|
@@ -464,6 +574,44 @@ module.exports = function() {
|
|
|
464
574
|
}
|
|
465
575
|
} );
|
|
466
576
|
}
|
|
577
|
+
|
|
578
|
+
/**
|
|
579
|
+
* Discovers HTTP basic authentication header and processes it
|
|
580
|
+
* accordingly based local user database.
|
|
581
|
+
*
|
|
582
|
+
* @param {Hitchy.Core.IncomingMessage} req request descriptor
|
|
583
|
+
* @param {Hitchy.Core.ServerResponse} res response manager
|
|
584
|
+
* @param {Hitchy.Core.ContinuationHandler} next invoke to continue request handling
|
|
585
|
+
* @returns {void}
|
|
586
|
+
*/
|
|
587
|
+
static handleBasicAuth( req, res, next ) {
|
|
588
|
+
if ( req.user ) {
|
|
589
|
+
next();
|
|
590
|
+
return;
|
|
591
|
+
}
|
|
592
|
+
|
|
593
|
+
const match = /^basic\s+([a-z0-9+/]+={1,2})$/i.exec( req.headers.authorization );
|
|
594
|
+
if ( !match ) {
|
|
595
|
+
next();
|
|
596
|
+
return;
|
|
597
|
+
}
|
|
598
|
+
<span class="cstat-no" title="statement not covered" ><span class="branch-0 cbranch-no" title="branch not covered" ></span></span>
|
|
599
|
+
<span class="cstat-no" title="statement not covered" > console.log( match );</span>
|
|
600
|
+
<span class="cstat-no" title="statement not covered" > const decoded = Buffer.from( match[1], "base64" ).toString( "utf8" );</span>
|
|
601
|
+
<span class="cstat-no" title="statement not covered" > const parts = /^([:]+):(.+)$/.exec( decoded );</span>
|
|
602
|
+
<span class="cstat-no" title="statement not covered" > if ( !parts ) {</span>
|
|
603
|
+
<span class="cstat-no" title="statement not covered" > next();</span>
|
|
604
|
+
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
605
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
606
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
607
|
+
<span class="cstat-no" title="statement not covered" > services.AuthManager.checkAuthentication( parts[1], parts[2] )</span>
|
|
608
|
+
<span class="cstat-no" title="statement not covered" > .then( user => {</span>
|
|
609
|
+
<span class="cstat-no" title="statement not covered" > req.user = user; // eslint-disable-line no-param-reassign</span>
|
|
610
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
611
|
+
<span class="cstat-no" title="statement not covered" > this.qualifyAuthenticated( req, res, next );</span>
|
|
612
|
+
<span class="cstat-no" title="statement not covered" > } )</span>
|
|
613
|
+
<span class="cstat-no" title="statement not covered" > .catch( next );</span>
|
|
614
|
+
}
|
|
467
615
|
|
|
468
616
|
/**
|
|
469
617
|
* Authenticates a request, updates server-side session accordingly and
|
|
@@ -476,8 +624,7 @@ module.exports = function() {
|
|
|
476
624
|
*/
|
|
477
625
|
static login( req, res, next ) {
|
|
478
626
|
const { strategy } = req.params;
|
|
479
|
-
const {
|
|
480
|
-
const { AuthenticationStrategies, AuthenticationPassport, AuthManager } = service;
|
|
627
|
+
const { AuthenticationStrategies, AuthenticationPassport } = services;
|
|
481
628
|
const defaultStrategy = AuthenticationStrategies.defaultStrategy();
|
|
482
629
|
|
|
483
630
|
req.fetchBody()
|
|
@@ -488,43 +635,61 @@ module.exports = function() {
|
|
|
488
635
|
AuthenticationPassport.authenticate( strategy || defaultStrategy )( req, res, err => {
|
|
489
636
|
if ( err ) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
|
|
490
637
|
<span class="cstat-no" title="statement not covered" > reject( err );</span>
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
AuthManager.listRolesOfUser( new model.User( uuid ) )
|
|
498
|
-
.then( roles => {
|
|
499
|
-
req.user.roles = roles; // eslint-disable-line no-param-reassign
|
|
500
|
-
|
|
501
|
-
DebugLog( "authenticated as", req.user.name );
|
|
502
|
-
|
|
503
|
-
res.set( "X-Authenticated-As", name );
|
|
504
|
-
res.set( "X-Authorized-As", roles.join( "," ) );
|
|
505
|
-
|
|
638
|
+
} else {
|
|
639
|
+
this.qualifyAuthenticated( req, res, error => {
|
|
640
|
+
if ( error ) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
|
|
641
|
+
<span class="cstat-no" title="statement not covered" > reject( error );</span>
|
|
642
|
+
} else {
|
|
506
643
|
resolve();
|
|
507
|
-
}
|
|
508
|
-
|
|
509
|
-
}
|
|
510
|
-
<span class="cstat-no" title="statement not covered" > AuthenticationPolicy.logout( req, res, cause => ( cause ? reject( cause ) : resolve() ) );</span>
|
|
511
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
644
|
+
}
|
|
645
|
+
} );
|
|
646
|
+
}
|
|
512
647
|
} );
|
|
513
648
|
} );
|
|
514
649
|
} )
|
|
515
650
|
.then( next )
|
|
516
651
|
.catch( err => {
|
|
517
|
-
<span class="cstat-no" title="statement not covered" >
|
|
652
|
+
<span class="cstat-no" title="statement not covered" > logAlert( err );</span>
|
|
518
653
|
<span class="cstat-no" title="statement not covered" ></span>
|
|
519
654
|
<span class="cstat-no" title="statement not covered" > AuthenticationPolicy.logout( req, res, cause => {</span>
|
|
520
655
|
<span class="cstat-no" title="statement not covered" > if ( cause ) {</span>
|
|
521
|
-
<span class="cstat-no" title="statement not covered" >
|
|
656
|
+
<span class="cstat-no" title="statement not covered" > logAlert( `applying logout policy after failed login has caused another issue: ${cause.stack}` );</span>
|
|
522
657
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
523
658
|
<span class="cstat-no" title="statement not covered" ></span>
|
|
524
659
|
<span class="cstat-no" title="statement not covered" > next( err );</span>
|
|
525
660
|
<span class="cstat-no" title="statement not covered" > } );</span>
|
|
526
661
|
} );
|
|
527
662
|
}
|
|
663
|
+
|
|
664
|
+
/**
|
|
665
|
+
* Extends request descriptor in case some authenticated user has been
|
|
666
|
+
* found recently.
|
|
667
|
+
*
|
|
668
|
+
* @param {Hitchy.Core.IncomingMessage} req request descriptor
|
|
669
|
+
* @param {Hitchy.Core.ServerResponse} res response manager
|
|
670
|
+
* @param {Hitchy.Core.ContinuationHandler} next invoke to continue request handling
|
|
671
|
+
* @returns {void}
|
|
672
|
+
*/
|
|
673
|
+
static qualifyAuthenticated( req, res, next ) {
|
|
674
|
+
if ( req.user ) {
|
|
675
|
+
const { uuid, name } = req.user;
|
|
676
|
+
|
|
677
|
+
services.AuthManager.listRolesOfUser( new models.User( uuid ) )
|
|
678
|
+
.then( roles => {
|
|
679
|
+
req.user.roles = roles; // eslint-disable-line no-param-reassign
|
|
680
|
+
|
|
681
|
+
logDebug( "authenticated as", req.user.name );
|
|
682
|
+
|
|
683
|
+
res.set( "X-Authenticated-As", name );
|
|
684
|
+
res.set( "X-Authorized-As", roles.join( "," ) );
|
|
685
|
+
|
|
686
|
+
next();
|
|
687
|
+
} )
|
|
688
|
+
.catch( next );
|
|
689
|
+
}<span class="branch-0 cbranch-no" title="branch not covered" > else {</span>
|
|
690
|
+
<span class="cstat-no" title="statement not covered" > AuthenticationPolicy.logout( req, res, next );</span>
|
|
691
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
692
|
+
}
|
|
528
693
|
|
|
529
694
|
/**
|
|
530
695
|
* Drops any existing authentication on current request's user.
|
|
@@ -601,7 +766,7 @@ module.exports = function() {
|
|
|
601
766
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
602
767
|
Code coverage generated by
|
|
603
768
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
604
|
-
at Sun Mar 27 2022
|
|
769
|
+
at Sun Mar 27 2022 22:51:56 GMT+0200 (Mitteleuropäische Sommerzeit)
|
|
605
770
|
</div>
|
|
606
771
|
</div>
|
|
607
772
|
<script src="../../../prettify.js"></script>
|
|
@@ -166,7 +166,7 @@ module.exports = function() {
|
|
|
166
166
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
167
167
|
Code coverage generated by
|
|
168
168
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
169
|
-
at Sun Mar 27 2022
|
|
169
|
+
at Sun Mar 27 2022 22:51:56 GMT+0200 (Mitteleuropäische Sommerzeit)
|
|
170
170
|
</div>
|
|
171
171
|
</div>
|
|
172
172
|
<script src="../../../prettify.js"></script>
|
|
@@ -23,30 +23,30 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">68.5% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>274/400</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">85.71% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>36/42</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">
|
|
40
|
+
<span class="strong">76.92% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
42
|
+
<span class='fraction'>10/13</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">68.5% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>274/400</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -74,17 +74,17 @@
|
|
|
74
74
|
</thead>
|
|
75
75
|
<tbody><tr>
|
|
76
76
|
<td class="file high" data-value="authentication.js"><a href="authentication.js.html">authentication.js</a></td>
|
|
77
|
-
<td data-value="
|
|
78
|
-
<div class="chart"><div class="cover-fill" style="width:
|
|
77
|
+
<td data-value="85.83" class="pic high">
|
|
78
|
+
<div class="chart"><div class="cover-fill" style="width: 85%"></div><div class="cover-empty" style="width: 15%"></div></div>
|
|
79
79
|
</td>
|
|
80
|
-
<td data-value="
|
|
81
|
-
<td data-value="
|
|
82
|
-
<td data-value="
|
|
83
|
-
<td data-value="
|
|
80
|
+
<td data-value="85.83" class="pct high">85.83%</td>
|
|
81
|
+
<td data-value="233" class="abs high">200/233</td>
|
|
82
|
+
<td data-value="81.25" class="pct high">81.25%</td>
|
|
83
|
+
<td data-value="32" class="abs high">26/32</td>
|
|
84
84
|
<td data-value="100" class="pct high">100%</td>
|
|
85
|
-
<td data-value="
|
|
86
|
-
<td data-value="
|
|
87
|
-
<td data-value="
|
|
85
|
+
<td data-value="7" class="abs high">7/7</td>
|
|
86
|
+
<td data-value="85.83" class="pct high">85.83%</td>
|
|
87
|
+
<td data-value="233" class="abs high">200/233</td>
|
|
88
88
|
</tr>
|
|
89
89
|
|
|
90
90
|
<tr>
|
|
@@ -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
|
|
128
|
+
at Sun Mar 27 2022 22:51:56 GMT+0200 (Mitteleuropäische Sommerzeit)
|
|
129
129
|
</div>
|
|
130
130
|
</div>
|
|
131
131
|
<script src="../../../prettify.js"></script>
|
|
@@ -463,7 +463,7 @@ module.exports = function() {
|
|
|
463
463
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
464
464
|
Code coverage generated by
|
|
465
465
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
466
|
-
at Sun Mar 27 2022
|
|
466
|
+
at Sun Mar 27 2022 22:51:56 GMT+0200 (Mitteleuropäische Sommerzeit)
|
|
467
467
|
</div>
|
|
468
468
|
</div>
|
|
469
469
|
<script src="../../../prettify.js"></script>
|
|
@@ -23,30 +23,30 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">95.22% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>279/293</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">85.29% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>58/68</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
40
|
<span class="strong">100% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
42
|
+
<span class='fraction'>10/10</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">95.22% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>279/293</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -74,17 +74,17 @@
|
|
|
74
74
|
</thead>
|
|
75
75
|
<tbody><tr>
|
|
76
76
|
<td class="file high" data-value="manager.js"><a href="manager.js.html">manager.js</a></td>
|
|
77
|
-
<td data-value="
|
|
78
|
-
<div class="chart"><div class="cover-fill" style="width:
|
|
77
|
+
<td data-value="95.22" class="pic high">
|
|
78
|
+
<div class="chart"><div class="cover-fill" style="width: 95%"></div><div class="cover-empty" style="width: 5%"></div></div>
|
|
79
79
|
</td>
|
|
80
|
-
<td data-value="
|
|
81
|
-
<td data-value="
|
|
82
|
-
<td data-value="
|
|
83
|
-
<td data-value="
|
|
80
|
+
<td data-value="95.22" class="pct high">95.22%</td>
|
|
81
|
+
<td data-value="293" class="abs high">279/293</td>
|
|
82
|
+
<td data-value="85.29" class="pct high">85.29%</td>
|
|
83
|
+
<td data-value="68" class="abs high">58/68</td>
|
|
84
84
|
<td data-value="100" class="pct high">100%</td>
|
|
85
|
-
<td data-value="
|
|
86
|
-
<td data-value="
|
|
87
|
-
<td data-value="
|
|
85
|
+
<td data-value="10" class="abs high">10/10</td>
|
|
86
|
+
<td data-value="95.22" class="pct high">95.22%</td>
|
|
87
|
+
<td data-value="293" class="abs high">279/293</td>
|
|
88
88
|
</tr>
|
|
89
89
|
|
|
90
90
|
</tbody>
|
|
@@ -95,7 +95,7 @@
|
|
|
95
95
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
96
96
|
Code coverage generated by
|
|
97
97
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
98
|
-
at Sun Mar 27 2022
|
|
98
|
+
at Sun Mar 27 2022 22:51:56 GMT+0200 (Mitteleuropäische Sommerzeit)
|
|
99
99
|
</div>
|
|
100
100
|
</div>
|
|
101
101
|
<script src="../../../../prettify.js"></script>
|