@hitchy/plugin-auth 0.3.4 → 0.3.6

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 (66) hide show
  1. package/package.json +11 -11
  2. package/.gitlab-ci.yml +0 -69
  3. package/coverage/base.css +0 -224
  4. package/coverage/block-navigation.js +0 -79
  5. package/coverage/favicon.png +0 -0
  6. package/coverage/index.html +0 -231
  7. package/coverage/plugin-auth/api/controller/index.html +0 -111
  8. package/coverage/plugin-auth/api/controller/user.js.html +0 -368
  9. package/coverage/plugin-auth/api/model/authorization/index.html +0 -111
  10. package/coverage/plugin-auth/api/model/authorization/rule.js.html +0 -227
  11. package/coverage/plugin-auth/api/model/index.html +0 -141
  12. package/coverage/plugin-auth/api/model/role.js.html +0 -200
  13. package/coverage/plugin-auth/api/model/user-to-role.js.html +0 -167
  14. package/coverage/plugin-auth/api/model/user.js.html +0 -752
  15. package/coverage/plugin-auth/api/policy/authentication.js.html +0 -779
  16. package/coverage/plugin-auth/api/policy/authorization.js.html +0 -182
  17. package/coverage/plugin-auth/api/policy/index.html +0 -141
  18. package/coverage/plugin-auth/api/policy/user.js.html +0 -479
  19. package/coverage/plugin-auth/api/service/auth/index.html +0 -111
  20. package/coverage/plugin-auth/api/service/auth/manager.js.html +0 -959
  21. package/coverage/plugin-auth/api/service/authentication/index.html +0 -126
  22. package/coverage/plugin-auth/api/service/authentication/passport.js.html +0 -293
  23. package/coverage/plugin-auth/api/service/authentication/strategies.js.html +0 -929
  24. package/coverage/plugin-auth/api/service/authorization/index.html +0 -141
  25. package/coverage/plugin-auth/api/service/authorization/node.js.html +0 -944
  26. package/coverage/plugin-auth/api/service/authorization/policy-generator.js.html +0 -386
  27. package/coverage/plugin-auth/api/service/authorization/tree.js.html +0 -983
  28. package/coverage/plugin-auth/config/auth.js.html +0 -140
  29. package/coverage/plugin-auth/config/index.html +0 -111
  30. package/coverage/plugin-auth/index.html +0 -111
  31. package/coverage/plugin-auth/index.js.html +0 -383
  32. package/coverage/prettify.css +0 -1
  33. package/coverage/prettify.js +0 -2
  34. package/coverage/sort-arrow-sprite.png +0 -0
  35. package/coverage/sorter.js +0 -170
  36. package/docs/.vuepress/config.js +0 -55
  37. package/docs/.vuepress/styles/palette.styl +0 -4
  38. package/docs/api/config.md +0 -180
  39. package/docs/api/controller/readme.md +0 -10
  40. package/docs/api/controller/user.md +0 -44
  41. package/docs/api/model/authorization-rule.md +0 -38
  42. package/docs/api/model/readme.md +0 -13
  43. package/docs/api/model/role.md +0 -22
  44. package/docs/api/model/user-to-role.md +0 -26
  45. package/docs/api/model/user.md +0 -50
  46. package/docs/api/policy/authentication.md +0 -44
  47. package/docs/api/policy/authorization.md +0 -27
  48. package/docs/api/policy/readme.md +0 -12
  49. package/docs/api/policy/user.md +0 -22
  50. package/docs/api/readme.md +0 -52
  51. package/docs/api/routing.md +0 -101
  52. package/docs/api/service/auth-manager.md +0 -86
  53. package/docs/api/service/authentication-passport.md +0 -21
  54. package/docs/api/service/authentication-strategies.md +0 -22
  55. package/docs/api/service/authorization-node.md +0 -102
  56. package/docs/api/service/authorization-policy-generator.md +0 -66
  57. package/docs/api/service/authorization-tree.md +0 -123
  58. package/docs/api/service/readme.md +0 -15
  59. package/docs/guides/getting-started.md +0 -69
  60. package/docs/guides/idp-login.png +0 -0
  61. package/docs/guides/idp-saml-cert.png +0 -0
  62. package/docs/guides/openid-connect.md +0 -164
  63. package/docs/guides/readme.md +0 -12
  64. package/docs/guides/saml.md +0 -161
  65. package/docs/introduction.md +0 -78
  66. package/docs/readme.md +0 -11
@@ -1,944 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for plugin-auth/api/service/authorization/node.js</title>
7
- <meta charset="utf-8" />
8
- <link rel="stylesheet" href="../../../../prettify.css" />
9
- <link rel="stylesheet" href="../../../../base.css" />
10
- <link rel="shortcut icon" type="image/x-icon" href="../../../../favicon.png" />
11
- <meta name="viewport" content="width=device-width, initial-scale=1" />
12
- <style type='text/css'>
13
- .coverage-summary .sorter {
14
- background-image: url(../../../../sort-arrow-sprite.png);
15
- }
16
- </style>
17
- </head>
18
-
19
- <body>
20
- <div class='wrapper'>
21
- <div class='pad1'>
22
- <h1><a href="../../../../index.html">All files</a> / <a href="index.html">plugin-auth/api/service/authorization</a> node.js</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">89.23% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>257/288</span>
29
- </div>
30
-
31
-
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">94.54% </span>
34
- <span class="quiet">Branches</span>
35
- <span class='fraction'>52/55</span>
36
- </div>
37
-
38
-
39
- <div class='fl pad1y space-right2'>
40
- <span class="strong">76.92% </span>
41
- <span class="quiet">Functions</span>
42
- <span class='fraction'>10/13</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">89.23% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>257/288</span>
50
- </div>
51
-
52
-
53
- </div>
54
- <p class="quiet">
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
- </p>
57
- </div>
58
- <div class='status-line high'></div>
59
- <pre><table class="coverage">
60
- <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
61
- <a name='L2'></a><a href='#L2'>2</a>
62
- <a name='L3'></a><a href='#L3'>3</a>
63
- <a name='L4'></a><a href='#L4'>4</a>
64
- <a name='L5'></a><a href='#L5'>5</a>
65
- <a name='L6'></a><a href='#L6'>6</a>
66
- <a name='L7'></a><a href='#L7'>7</a>
67
- <a name='L8'></a><a href='#L8'>8</a>
68
- <a name='L9'></a><a href='#L9'>9</a>
69
- <a name='L10'></a><a href='#L10'>10</a>
70
- <a name='L11'></a><a href='#L11'>11</a>
71
- <a name='L12'></a><a href='#L12'>12</a>
72
- <a name='L13'></a><a href='#L13'>13</a>
73
- <a name='L14'></a><a href='#L14'>14</a>
74
- <a name='L15'></a><a href='#L15'>15</a>
75
- <a name='L16'></a><a href='#L16'>16</a>
76
- <a name='L17'></a><a href='#L17'>17</a>
77
- <a name='L18'></a><a href='#L18'>18</a>
78
- <a name='L19'></a><a href='#L19'>19</a>
79
- <a name='L20'></a><a href='#L20'>20</a>
80
- <a name='L21'></a><a href='#L21'>21</a>
81
- <a name='L22'></a><a href='#L22'>22</a>
82
- <a name='L23'></a><a href='#L23'>23</a>
83
- <a name='L24'></a><a href='#L24'>24</a>
84
- <a name='L25'></a><a href='#L25'>25</a>
85
- <a name='L26'></a><a href='#L26'>26</a>
86
- <a name='L27'></a><a href='#L27'>27</a>
87
- <a name='L28'></a><a href='#L28'>28</a>
88
- <a name='L29'></a><a href='#L29'>29</a>
89
- <a name='L30'></a><a href='#L30'>30</a>
90
- <a name='L31'></a><a href='#L31'>31</a>
91
- <a name='L32'></a><a href='#L32'>32</a>
92
- <a name='L33'></a><a href='#L33'>33</a>
93
- <a name='L34'></a><a href='#L34'>34</a>
94
- <a name='L35'></a><a href='#L35'>35</a>
95
- <a name='L36'></a><a href='#L36'>36</a>
96
- <a name='L37'></a><a href='#L37'>37</a>
97
- <a name='L38'></a><a href='#L38'>38</a>
98
- <a name='L39'></a><a href='#L39'>39</a>
99
- <a name='L40'></a><a href='#L40'>40</a>
100
- <a name='L41'></a><a href='#L41'>41</a>
101
- <a name='L42'></a><a href='#L42'>42</a>
102
- <a name='L43'></a><a href='#L43'>43</a>
103
- <a name='L44'></a><a href='#L44'>44</a>
104
- <a name='L45'></a><a href='#L45'>45</a>
105
- <a name='L46'></a><a href='#L46'>46</a>
106
- <a name='L47'></a><a href='#L47'>47</a>
107
- <a name='L48'></a><a href='#L48'>48</a>
108
- <a name='L49'></a><a href='#L49'>49</a>
109
- <a name='L50'></a><a href='#L50'>50</a>
110
- <a name='L51'></a><a href='#L51'>51</a>
111
- <a name='L52'></a><a href='#L52'>52</a>
112
- <a name='L53'></a><a href='#L53'>53</a>
113
- <a name='L54'></a><a href='#L54'>54</a>
114
- <a name='L55'></a><a href='#L55'>55</a>
115
- <a name='L56'></a><a href='#L56'>56</a>
116
- <a name='L57'></a><a href='#L57'>57</a>
117
- <a name='L58'></a><a href='#L58'>58</a>
118
- <a name='L59'></a><a href='#L59'>59</a>
119
- <a name='L60'></a><a href='#L60'>60</a>
120
- <a name='L61'></a><a href='#L61'>61</a>
121
- <a name='L62'></a><a href='#L62'>62</a>
122
- <a name='L63'></a><a href='#L63'>63</a>
123
- <a name='L64'></a><a href='#L64'>64</a>
124
- <a name='L65'></a><a href='#L65'>65</a>
125
- <a name='L66'></a><a href='#L66'>66</a>
126
- <a name='L67'></a><a href='#L67'>67</a>
127
- <a name='L68'></a><a href='#L68'>68</a>
128
- <a name='L69'></a><a href='#L69'>69</a>
129
- <a name='L70'></a><a href='#L70'>70</a>
130
- <a name='L71'></a><a href='#L71'>71</a>
131
- <a name='L72'></a><a href='#L72'>72</a>
132
- <a name='L73'></a><a href='#L73'>73</a>
133
- <a name='L74'></a><a href='#L74'>74</a>
134
- <a name='L75'></a><a href='#L75'>75</a>
135
- <a name='L76'></a><a href='#L76'>76</a>
136
- <a name='L77'></a><a href='#L77'>77</a>
137
- <a name='L78'></a><a href='#L78'>78</a>
138
- <a name='L79'></a><a href='#L79'>79</a>
139
- <a name='L80'></a><a href='#L80'>80</a>
140
- <a name='L81'></a><a href='#L81'>81</a>
141
- <a name='L82'></a><a href='#L82'>82</a>
142
- <a name='L83'></a><a href='#L83'>83</a>
143
- <a name='L84'></a><a href='#L84'>84</a>
144
- <a name='L85'></a><a href='#L85'>85</a>
145
- <a name='L86'></a><a href='#L86'>86</a>
146
- <a name='L87'></a><a href='#L87'>87</a>
147
- <a name='L88'></a><a href='#L88'>88</a>
148
- <a name='L89'></a><a href='#L89'>89</a>
149
- <a name='L90'></a><a href='#L90'>90</a>
150
- <a name='L91'></a><a href='#L91'>91</a>
151
- <a name='L92'></a><a href='#L92'>92</a>
152
- <a name='L93'></a><a href='#L93'>93</a>
153
- <a name='L94'></a><a href='#L94'>94</a>
154
- <a name='L95'></a><a href='#L95'>95</a>
155
- <a name='L96'></a><a href='#L96'>96</a>
156
- <a name='L97'></a><a href='#L97'>97</a>
157
- <a name='L98'></a><a href='#L98'>98</a>
158
- <a name='L99'></a><a href='#L99'>99</a>
159
- <a name='L100'></a><a href='#L100'>100</a>
160
- <a name='L101'></a><a href='#L101'>101</a>
161
- <a name='L102'></a><a href='#L102'>102</a>
162
- <a name='L103'></a><a href='#L103'>103</a>
163
- <a name='L104'></a><a href='#L104'>104</a>
164
- <a name='L105'></a><a href='#L105'>105</a>
165
- <a name='L106'></a><a href='#L106'>106</a>
166
- <a name='L107'></a><a href='#L107'>107</a>
167
- <a name='L108'></a><a href='#L108'>108</a>
168
- <a name='L109'></a><a href='#L109'>109</a>
169
- <a name='L110'></a><a href='#L110'>110</a>
170
- <a name='L111'></a><a href='#L111'>111</a>
171
- <a name='L112'></a><a href='#L112'>112</a>
172
- <a name='L113'></a><a href='#L113'>113</a>
173
- <a name='L114'></a><a href='#L114'>114</a>
174
- <a name='L115'></a><a href='#L115'>115</a>
175
- <a name='L116'></a><a href='#L116'>116</a>
176
- <a name='L117'></a><a href='#L117'>117</a>
177
- <a name='L118'></a><a href='#L118'>118</a>
178
- <a name='L119'></a><a href='#L119'>119</a>
179
- <a name='L120'></a><a href='#L120'>120</a>
180
- <a name='L121'></a><a href='#L121'>121</a>
181
- <a name='L122'></a><a href='#L122'>122</a>
182
- <a name='L123'></a><a href='#L123'>123</a>
183
- <a name='L124'></a><a href='#L124'>124</a>
184
- <a name='L125'></a><a href='#L125'>125</a>
185
- <a name='L126'></a><a href='#L126'>126</a>
186
- <a name='L127'></a><a href='#L127'>127</a>
187
- <a name='L128'></a><a href='#L128'>128</a>
188
- <a name='L129'></a><a href='#L129'>129</a>
189
- <a name='L130'></a><a href='#L130'>130</a>
190
- <a name='L131'></a><a href='#L131'>131</a>
191
- <a name='L132'></a><a href='#L132'>132</a>
192
- <a name='L133'></a><a href='#L133'>133</a>
193
- <a name='L134'></a><a href='#L134'>134</a>
194
- <a name='L135'></a><a href='#L135'>135</a>
195
- <a name='L136'></a><a href='#L136'>136</a>
196
- <a name='L137'></a><a href='#L137'>137</a>
197
- <a name='L138'></a><a href='#L138'>138</a>
198
- <a name='L139'></a><a href='#L139'>139</a>
199
- <a name='L140'></a><a href='#L140'>140</a>
200
- <a name='L141'></a><a href='#L141'>141</a>
201
- <a name='L142'></a><a href='#L142'>142</a>
202
- <a name='L143'></a><a href='#L143'>143</a>
203
- <a name='L144'></a><a href='#L144'>144</a>
204
- <a name='L145'></a><a href='#L145'>145</a>
205
- <a name='L146'></a><a href='#L146'>146</a>
206
- <a name='L147'></a><a href='#L147'>147</a>
207
- <a name='L148'></a><a href='#L148'>148</a>
208
- <a name='L149'></a><a href='#L149'>149</a>
209
- <a name='L150'></a><a href='#L150'>150</a>
210
- <a name='L151'></a><a href='#L151'>151</a>
211
- <a name='L152'></a><a href='#L152'>152</a>
212
- <a name='L153'></a><a href='#L153'>153</a>
213
- <a name='L154'></a><a href='#L154'>154</a>
214
- <a name='L155'></a><a href='#L155'>155</a>
215
- <a name='L156'></a><a href='#L156'>156</a>
216
- <a name='L157'></a><a href='#L157'>157</a>
217
- <a name='L158'></a><a href='#L158'>158</a>
218
- <a name='L159'></a><a href='#L159'>159</a>
219
- <a name='L160'></a><a href='#L160'>160</a>
220
- <a name='L161'></a><a href='#L161'>161</a>
221
- <a name='L162'></a><a href='#L162'>162</a>
222
- <a name='L163'></a><a href='#L163'>163</a>
223
- <a name='L164'></a><a href='#L164'>164</a>
224
- <a name='L165'></a><a href='#L165'>165</a>
225
- <a name='L166'></a><a href='#L166'>166</a>
226
- <a name='L167'></a><a href='#L167'>167</a>
227
- <a name='L168'></a><a href='#L168'>168</a>
228
- <a name='L169'></a><a href='#L169'>169</a>
229
- <a name='L170'></a><a href='#L170'>170</a>
230
- <a name='L171'></a><a href='#L171'>171</a>
231
- <a name='L172'></a><a href='#L172'>172</a>
232
- <a name='L173'></a><a href='#L173'>173</a>
233
- <a name='L174'></a><a href='#L174'>174</a>
234
- <a name='L175'></a><a href='#L175'>175</a>
235
- <a name='L176'></a><a href='#L176'>176</a>
236
- <a name='L177'></a><a href='#L177'>177</a>
237
- <a name='L178'></a><a href='#L178'>178</a>
238
- <a name='L179'></a><a href='#L179'>179</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>
295
- <a name='L236'></a><a href='#L236'>236</a>
296
- <a name='L237'></a><a href='#L237'>237</a>
297
- <a name='L238'></a><a href='#L238'>238</a>
298
- <a name='L239'></a><a href='#L239'>239</a>
299
- <a name='L240'></a><a href='#L240'>240</a>
300
- <a name='L241'></a><a href='#L241'>241</a>
301
- <a name='L242'></a><a href='#L242'>242</a>
302
- <a name='L243'></a><a href='#L243'>243</a>
303
- <a name='L244'></a><a href='#L244'>244</a>
304
- <a name='L245'></a><a href='#L245'>245</a>
305
- <a name='L246'></a><a href='#L246'>246</a>
306
- <a name='L247'></a><a href='#L247'>247</a>
307
- <a name='L248'></a><a href='#L248'>248</a>
308
- <a name='L249'></a><a href='#L249'>249</a>
309
- <a name='L250'></a><a href='#L250'>250</a>
310
- <a name='L251'></a><a href='#L251'>251</a>
311
- <a name='L252'></a><a href='#L252'>252</a>
312
- <a name='L253'></a><a href='#L253'>253</a>
313
- <a name='L254'></a><a href='#L254'>254</a>
314
- <a name='L255'></a><a href='#L255'>255</a>
315
- <a name='L256'></a><a href='#L256'>256</a>
316
- <a name='L257'></a><a href='#L257'>257</a>
317
- <a name='L258'></a><a href='#L258'>258</a>
318
- <a name='L259'></a><a href='#L259'>259</a>
319
- <a name='L260'></a><a href='#L260'>260</a>
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>
344
- <a name='L285'></a><a href='#L285'>285</a>
345
- <a name='L286'></a><a href='#L286'>286</a>
346
- <a name='L287'></a><a href='#L287'>287</a>
347
- <a name='L288'></a><a href='#L288'>288</a>
348
- <a name='L289'></a><a href='#L289'>289</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
349
- <span class="cline-any cline-yes">1x</span>
350
- <span class="cline-any cline-yes">1x</span>
351
- <span class="cline-any cline-yes">19x</span>
352
- <span class="cline-any cline-yes">19x</span>
353
- <span class="cline-any cline-yes">19x</span>
354
- <span class="cline-any cline-yes">19x</span>
355
- <span class="cline-any cline-yes">19x</span>
356
- <span class="cline-any cline-yes">19x</span>
357
- <span class="cline-any cline-yes">19x</span>
358
- <span class="cline-any cline-yes">19x</span>
359
- <span class="cline-any cline-yes">19x</span>
360
- <span class="cline-any cline-yes">19x</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">136x</span>
368
- <span class="cline-any cline-yes">136x</span>
369
- <span class="cline-any cline-yes">136x</span>
370
- <span class="cline-any cline-yes">136x</span>
371
- <span class="cline-any cline-yes">136x</span>
372
- <span class="cline-any cline-yes">136x</span>
373
- <span class="cline-any cline-yes">136x</span>
374
- <span class="cline-any cline-yes">136x</span>
375
- <span class="cline-any cline-yes">136x</span>
376
- <span class="cline-any cline-yes">136x</span>
377
- <span class="cline-any cline-yes">136x</span>
378
- <span class="cline-any cline-yes">136x</span>
379
- <span class="cline-any cline-yes">136x</span>
380
- <span class="cline-any cline-yes">19x</span>
381
- <span class="cline-any cline-yes">19x</span>
382
- <span class="cline-any cline-yes">19x</span>
383
- <span class="cline-any cline-yes">19x</span>
384
- <span class="cline-any cline-yes">19x</span>
385
- <span class="cline-any cline-yes">19x</span>
386
- <span class="cline-any cline-yes">19x</span>
387
- <span class="cline-any cline-yes">178x</span>
388
- <span class="cline-any cline-yes">178x</span>
389
- <span class="cline-any cline-yes">178x</span>
390
- <span class="cline-any cline-yes">178x</span>
391
- <span class="cline-any cline-yes">178x</span>
392
- <span class="cline-any cline-yes">178x</span>
393
- <span class="cline-any cline-yes">19x</span>
394
- <span class="cline-any cline-yes">19x</span>
395
- <span class="cline-any cline-yes">19x</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">52x</span>
404
- <span class="cline-any cline-yes">51x</span>
405
- <span class="cline-any cline-yes">51x</span>
406
- <span class="cline-any cline-yes">51x</span>
407
- <span class="cline-any cline-yes">51x</span>
408
- <span class="cline-any cline-yes">52x</span>
409
- <span class="cline-any cline-yes">52x</span>
410
- <span class="cline-any cline-yes">52x</span>
411
- <span class="cline-any cline-yes">19x</span>
412
- <span class="cline-any cline-yes">19x</span>
413
- <span class="cline-any cline-yes">19x</span>
414
- <span class="cline-any cline-yes">19x</span>
415
- <span class="cline-any cline-yes">19x</span>
416
- <span class="cline-any cline-yes">19x</span>
417
- <span class="cline-any cline-yes">19x</span>
418
- <span class="cline-any cline-yes">19x</span>
419
- <span class="cline-any cline-yes">19x</span>
420
- <span class="cline-any cline-yes">19x</span>
421
- <span class="cline-any cline-yes">53x</span>
422
- <span class="cline-any cline-yes">53x</span>
423
- <span class="cline-any cline-yes">53x</span>
424
- <span class="cline-any cline-yes">53x</span>
425
- <span class="cline-any cline-yes">53x</span>
426
- <span class="cline-any cline-yes">53x</span>
427
- <span class="cline-any cline-yes">53x</span>
428
- <span class="cline-any cline-yes">53x</span>
429
- <span class="cline-any cline-yes">19x</span>
430
- <span class="cline-any cline-yes">19x</span>
431
- <span class="cline-any cline-yes">19x</span>
432
- <span class="cline-any cline-yes">19x</span>
433
- <span class="cline-any cline-yes">19x</span>
434
- <span class="cline-any cline-yes">19x</span>
435
- <span class="cline-any cline-yes">19x</span>
436
- <span class="cline-any cline-yes">19x</span>
437
- <span class="cline-any cline-yes">19x</span>
438
- <span class="cline-any cline-yes">19x</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-no">&nbsp;</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">19x</span>
456
- <span class="cline-any cline-yes">19x</span>
457
- <span class="cline-any cline-yes">1x</span>
458
- <span class="cline-any cline-yes">1x</span>
459
- <span class="cline-any cline-yes">1x</span>
460
- <span class="cline-any cline-yes">1x</span>
461
- <span class="cline-any cline-yes">1x</span>
462
- <span class="cline-any cline-yes">1x</span>
463
- <span class="cline-any cline-yes">1x</span>
464
- <span class="cline-any cline-yes">1x</span>
465
- <span class="cline-any cline-yes">19x</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">832x</span>
476
- <span class="cline-any cline-yes">832x</span>
477
- <span class="cline-any cline-yes">832x</span>
478
- <span class="cline-any cline-yes">832x</span>
479
- <span class="cline-any cline-yes">113x</span>
480
- <span class="cline-any cline-yes">113x</span>
481
- <span class="cline-any cline-yes">832x</span>
482
- <span class="cline-any cline-yes">832x</span>
483
- <span class="cline-any cline-yes">832x</span>
484
- <span class="cline-any cline-no">&nbsp;</span>
485
- <span class="cline-any cline-no">&nbsp;</span>
486
- <span class="cline-any cline-yes">832x</span>
487
- <span class="cline-any cline-yes">19x</span>
488
- <span class="cline-any cline-yes">19x</span>
489
- <span class="cline-any cline-yes">19x</span>
490
- <span class="cline-any cline-yes">19x</span>
491
- <span class="cline-any cline-yes">19x</span>
492
- <span class="cline-any cline-yes">19x</span>
493
- <span class="cline-any cline-yes">19x</span>
494
- <span class="cline-any cline-yes">19x</span>
495
- <span class="cline-any cline-yes">19x</span>
496
- <span class="cline-any cline-yes">94x</span>
497
- <span class="cline-any cline-yes">94x</span>
498
- <span class="cline-any cline-yes">94x</span>
499
- <span class="cline-any cline-yes">94x</span>
500
- <span class="cline-any cline-yes">94x</span>
501
- <span class="cline-any cline-yes">94x</span>
502
- <span class="cline-any cline-yes">188x</span>
503
- <span class="cline-any cline-yes">114x</span>
504
- <span class="cline-any cline-yes">114x</span>
505
- <span class="cline-any cline-yes">114x</span>
506
- <span class="cline-any cline-yes">106x</span>
507
- <span class="cline-any cline-yes">212x</span>
508
- <span class="cline-any cline-yes">212x</span>
509
- <span class="cline-any cline-yes">212x</span>
510
- <span class="cline-any cline-yes">30x</span>
511
- <span class="cline-any cline-yes">30x</span>
512
- <span class="cline-any cline-yes">212x</span>
513
- <span class="cline-any cline-yes">106x</span>
514
- <span class="cline-any cline-yes">114x</span>
515
- <span class="cline-any cline-yes">188x</span>
516
- <span class="cline-any cline-yes">94x</span>
517
- <span class="cline-any cline-yes">94x</span>
518
- <span class="cline-any cline-yes">15x</span>
519
- <span class="cline-any cline-yes">6x</span>
520
- <span class="cline-any cline-yes">6x</span>
521
- <span class="cline-any cline-yes">9x</span>
522
- <span class="cline-any cline-yes">9x</span>
523
- <span class="cline-any cline-yes">9x</span>
524
- <span class="cline-any cline-yes">79x</span>
525
- <span class="cline-any cline-yes">94x</span>
526
- <span class="cline-any cline-yes">9x</span>
527
- <span class="cline-any cline-yes">9x</span>
528
- <span class="cline-any cline-yes">70x</span>
529
- <span class="cline-any cline-yes">70x</span>
530
- <span class="cline-any cline-yes">94x</span>
531
- <span class="cline-any cline-yes">19x</span>
532
- <span class="cline-any cline-yes">19x</span>
533
- <span class="cline-any cline-yes">19x</span>
534
- <span class="cline-any cline-yes">19x</span>
535
- <span class="cline-any cline-yes">19x</span>
536
- <span class="cline-any cline-yes">19x</span>
537
- <span class="cline-any cline-yes">19x</span>
538
- <span class="cline-any cline-no">&nbsp;</span>
539
- <span class="cline-any cline-no">&nbsp;</span>
540
- <span class="cline-any cline-no">&nbsp;</span>
541
- <span class="cline-any cline-no">&nbsp;</span>
542
- <span class="cline-any cline-no">&nbsp;</span>
543
- <span class="cline-any cline-no">&nbsp;</span>
544
- <span class="cline-any cline-no">&nbsp;</span>
545
- <span class="cline-any cline-no">&nbsp;</span>
546
- <span class="cline-any cline-no">&nbsp;</span>
547
- <span class="cline-any cline-no">&nbsp;</span>
548
- <span class="cline-any cline-no">&nbsp;</span>
549
- <span class="cline-any cline-no">&nbsp;</span>
550
- <span class="cline-any cline-no">&nbsp;</span>
551
- <span class="cline-any cline-no">&nbsp;</span>
552
- <span class="cline-any cline-no">&nbsp;</span>
553
- <span class="cline-any cline-no">&nbsp;</span>
554
- <span class="cline-any cline-no">&nbsp;</span>
555
- <span class="cline-any cline-no">&nbsp;</span>
556
- <span class="cline-any cline-yes">19x</span>
557
- <span class="cline-any cline-yes">19x</span>
558
- <span class="cline-any cline-yes">19x</span>
559
- <span class="cline-any cline-yes">19x</span>
560
- <span class="cline-any cline-yes">19x</span>
561
- <span class="cline-any cline-yes">19x</span>
562
- <span class="cline-any cline-yes">19x</span>
563
- <span class="cline-any cline-yes">19x</span>
564
- <span class="cline-any cline-yes">24x</span>
565
- <span class="cline-any cline-yes">24x</span>
566
- <span class="cline-any cline-yes">24x</span>
567
- <span class="cline-any cline-yes">24x</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>
573
- <span class="cline-any cline-yes">19x</span>
574
- <span class="cline-any cline-yes">19x</span>
575
- <span class="cline-any cline-yes">19x</span>
576
- <span class="cline-any cline-no">&nbsp;</span>
577
- <span class="cline-any cline-no">&nbsp;</span>
578
- <span class="cline-any cline-no">&nbsp;</span>
579
- <span class="cline-any cline-yes">19x</span>
580
- <span class="cline-any cline-yes">19x</span>
581
- <span class="cline-any cline-yes">19x</span>
582
- <span class="cline-any cline-yes">19x</span>
583
- <span class="cline-any cline-yes">19x</span>
584
- <span class="cline-any cline-yes">19x</span>
585
- <span class="cline-any cline-yes">19x</span>
586
- <span class="cline-any cline-yes">19x</span>
587
- <span class="cline-any cline-yes">8x</span>
588
- <span class="cline-any cline-yes">8x</span>
589
- <span class="cline-any cline-yes">8x</span>
590
- <span class="cline-any cline-yes">8x</span>
591
- <span class="cline-any cline-yes">8x</span>
592
- <span class="cline-any cline-yes">8x</span>
593
- <span class="cline-any cline-yes">6x</span>
594
- <span class="cline-any cline-yes">6x</span>
595
- <span class="cline-any cline-yes">6x</span>
596
- <span class="cline-any cline-yes">6x</span>
597
- <span class="cline-any cline-yes">6x</span>
598
- <span class="cline-any cline-yes">6x</span>
599
- <span class="cline-any cline-yes">6x</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">6x</span>
607
- <span class="cline-any cline-yes">6x</span>
608
- <span class="cline-any cline-yes">8x</span>
609
- <span class="cline-any cline-yes">8x</span>
610
- <span class="cline-any cline-yes">16x</span>
611
- <span class="cline-any cline-yes">32x</span>
612
- <span class="cline-any cline-yes">32x</span>
613
- <span class="cline-any cline-yes">32x</span>
614
- <span class="cline-any cline-yes">32x</span>
615
- <span class="cline-any cline-yes">32x</span>
616
- <span class="cline-any cline-yes">1x</span>
617
- <span class="cline-any cline-yes">1x</span>
618
- <span class="cline-any cline-yes">1x</span>
619
- <span class="cline-any cline-yes">1x</span>
620
- <span class="cline-any cline-yes">1x</span>
621
- <span class="cline-any cline-yes">1x</span>
622
- <span class="cline-any cline-yes">1x</span>
623
- <span class="cline-any cline-yes">1x</span>
624
- <span class="cline-any cline-yes">1x</span>
625
- <span class="cline-any cline-yes">1x</span>
626
- <span class="cline-any cline-yes">1x</span>
627
- <span class="cline-any cline-yes">32x</span>
628
- <span class="cline-any cline-yes">16x</span>
629
- <span class="cline-any cline-yes">8x</span>
630
- <span class="cline-any cline-yes">8x</span>
631
- <span class="cline-any cline-yes">8x</span>
632
- <span class="cline-any cline-yes">19x</span>
633
- <span class="cline-any cline-yes">19x</span>
634
- <span class="cline-any cline-yes">19x</span>
635
- <span class="cline-any cline-yes">1x</span>
636
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">"use strict";
637
- &nbsp;
638
- module.exports = function() {
639
- /**
640
- * Implements behavior of a single node in a hierarchy of authorization
641
- * rules.
642
- *
643
- * @property {?AuthorizationNode} parent refers to superordinated node
644
- * @property {?string} name name of segment addressing this node in context of its parent
645
- * @property {{accept: object&lt;string, number&gt;, reject: object&lt;string, number&gt;}} roles maps names of roles into number of rules requesting to accept/reject
646
- * @property {{accept: object&lt;string, number&gt;, reject: object&lt;string, number&gt;}} users lists UUIDs of users to accept/reject in context of node
647
- * @property {object&lt;string,AuthorizationNode&gt;} children maps relative names into subordinated nodes
648
- */
649
- class AuthorizationNode {
650
- /**
651
- * @param {string} [segmentName] name of segment addressing this node in context of its parent node
652
- * @param {AuthorizationNode} [parent] refers to parent node of this one
653
- */
654
- constructor( segmentName, parent ) {
655
- Object.defineProperties( this, {
656
- parent: {
657
- value: parent || undefined,
658
- enumerable: false,
659
- },
660
- name: {
661
- value: segmentName || undefined,
662
- enumerable: false,
663
- },
664
- } );
665
- &nbsp;
666
- this.clear();
667
- }
668
- &nbsp;
669
- /**
670
- * Drops all information previously stored in node due to adding rules.
671
- *
672
- * @returns {AuthorizationNode} fluent interface
673
- */
674
- clear() {
675
- this.roles = { accept: {}, reject: {} };
676
- this.users = { accept: {}, reject: {} };
677
- this.children = {};
678
- &nbsp;
679
- return this;
680
- }
681
- &nbsp;
682
- /**
683
- * Tracks named role to be accepted or rejected in context of current
684
- * node.
685
- *
686
- * @param {string} roleName name of role to add
687
- * @param {boolean} accept true if role is accepted, false if it's rejected
688
- * @returns {AuthorizationNode} fluent interface
689
- */
690
- addRole( roleName, accept = true ) {
691
- if ( roleName &amp;&amp; typeof roleName === "string" &amp;&amp; roleName.trim().length &gt; 0 ) {
692
- const list = this.roles[accept ? "accept" : "reject"];
693
- &nbsp;
694
- list[roleName] = ( list[roleName] || 0 ) + 1;
695
- }
696
- &nbsp;
697
- return this;
698
- }
699
- &nbsp;
700
- /**
701
- * Tracks user described by its name to be accepted or rejected in
702
- * context of current node.
703
- *
704
- * @param {string} userName name of user to add
705
- * @param {boolean} accept true if user is granted access on resource, false if it's revoked
706
- * @returns {AuthorizationNode} fluent interface
707
- */
708
- addUser( userName, accept = true ) {
709
- if ( userName &amp;&amp; typeof userName === "string" &amp;&amp; userName.trim().length &gt; 0 ) {
710
- const list = this.users[accept ? "accept" : "reject"];
711
- &nbsp;
712
- list[userName] = ( list[userName] || 0 ) + 1;
713
- }
714
- &nbsp;
715
- return this;
716
- }
717
- &nbsp;
718
- /**
719
- * Drops named role to be accepted or rejected in context of current
720
- * node.
721
- *
722
- * @param {string} roleName name of role to drop
723
- * @param {boolean} accept true if role is accepted, false if it's rejected
724
- * @returns {AuthorizationNode} fluent interface
725
- */
726
- <span class="fstat-no" title="function not covered" > removeRole( roleName, accept = true ) {</span>
727
- <span class="cstat-no" title="statement not covered" > if ( roleName &amp;&amp; typeof roleName === "string" &amp;&amp; roleName.trim().length &gt; 0 ) {</span>
728
- <span class="cstat-no" title="statement not covered" > const list = this.roles[accept ? "accept" : "reject"];</span>
729
- <span class="cstat-no" title="statement not covered" ></span>
730
- <span class="cstat-no" title="statement not covered" > list[roleName] = Math.max( 0, ( list[roleName] || 1 ) - 1 );</span>
731
- <span class="cstat-no" title="statement not covered" > }</span>
732
- <span class="cstat-no" title="statement not covered" ></span>
733
- <span class="cstat-no" title="statement not covered" > return this;</span>
734
- <span class="cstat-no" title="statement not covered" > }</span>
735
- &nbsp;
736
- /**
737
- * Drops user described by its name to be accepted or rejected in
738
- * context of current node.
739
- *
740
- * @param {string} userName name of user to add
741
- * @param {boolean} accept true if role is accepted, false if it's rejected
742
- * @returns {AuthorizationNode} fluent interface
743
- */
744
- removeUser( userName, accept = true ) {
745
- if ( userName &amp;&amp; typeof userName === "string" &amp;&amp; userName.trim().length &gt; 0 ) {
746
- const list = this.users[accept ? "accept" <span class="branch-0 cbranch-no" title="branch not covered" >: "reject"]</span>;
747
- &nbsp;
748
- list[userName] = Math.max( 0, ( list[userName] <span class="branch-0 cbranch-no" title="branch not covered" >|| 1 </span>) - 1 );
749
- }
750
- &nbsp;
751
- return this;
752
- }
753
- &nbsp;
754
- /**
755
- * Fetches subordinated node by its name optionally creating it in case
756
- * it is missing.
757
- *
758
- * @param {string} name name of child to look up
759
- * @param {boolean} addIfMissing true if child should be created if missing
760
- * @returns {AuthorizationNode} found or created child node, undefined if missing
761
- */
762
- getChild( name, addIfMissing = false ) {
763
- if ( name &amp;&amp; typeof name === "string" ) {
764
- let child = this.children[name];
765
- &nbsp;
766
- if ( child == null &amp;&amp; addIfMissing ) {
767
- child = this.children[name] = new this.constructor( name, this );
768
- }
769
- &nbsp;
770
- return child || undefined;
771
- }
772
- <span class="cstat-no" title="statement not covered" ><span class="branch-0 cbranch-no" title="branch not covered" ></span></span>
773
- <span class="cstat-no" title="statement not covered" > return undefined;</span>
774
- }
775
- &nbsp;
776
- /**
777
- * Tests if provided user and/or role is affected by current node.
778
- *
779
- * @param {Buffer|Buffer[]} userName name(s) of user(s) to check
780
- * @param {string|string[]} roleName name(s) of role(s) to check
781
- * @returns {number} &gt;0 on accepting user(s)/role(s) explicitly, &lt;0 on rejecting explicitly, ==0 on missing explicit impact on user(s)/role(s)
782
- */
783
- isAuthorized( userName, roleName ) {
784
- const users = Array.isArray( userName ) ? userName : userName ? [userName] : [];
785
- const roles = Array.isArray( roleName ) ? roleName : roleName ? [roleName] : [];
786
- const actions = [ "accept", "reject" ];
787
- const state = { accept: false, reject: false };
788
- &nbsp;
789
- for ( const [ names, rules ] of [ [ users, this.users ], [ roles, this.roles ] ] ) {
790
- for ( let i = 0, length = names.length; i &lt; length; i++ ) {
791
- const name = names[i];
792
- &nbsp;
793
- if ( name &amp;&amp; typeof name === "string" &amp;&amp; name.trim().length &gt; 0 ) {
794
- for ( let j = 0; j &lt; 2; j++ ) {
795
- const action = actions[j];
796
- &nbsp;
797
- if ( rules[action][name] &gt; 0 ) {
798
- state[action] = true;
799
- }
800
- }
801
- }
802
- }
803
- }
804
- &nbsp;
805
- if ( state.accept ) {
806
- if ( state.reject ) {
807
- throw new Error( `granting and revoking access on "${this.path()}" to/from user(s) "${userName || "&lt;none&gt;"}" and/or role(s) "${roleName || "&lt;none&gt;"}"` );
808
- }
809
- &nbsp;
810
- return 1;
811
- }
812
- &nbsp;
813
- if ( state.reject ) {
814
- return -1;
815
- }
816
- &nbsp;
817
- return 0;
818
- }
819
- &nbsp;
820
- /**
821
- * Indicates if current node has any viable information.
822
- *
823
- * @returns {boolean} true if node hasn't any viable information affecting authorization checks
824
- */
825
- <span class="fstat-no" title="function not covered" > isSpare() {</span>
826
- <span class="cstat-no" title="statement not covered" > for ( const list of [ this.users.accept, this.users.reject, this.roles.accept, this.roles.reject ] ) {</span>
827
- <span class="cstat-no" title="statement not covered" > for ( let i = 0, keys = Object.keys( list ), length = keys.length; i &lt; length; i++ ) {</span>
828
- <span class="cstat-no" title="statement not covered" > if ( list[keys[i]] &gt; 0 ) {</span>
829
- <span class="cstat-no" title="statement not covered" > return false;</span>
830
- <span class="cstat-no" title="statement not covered" > }</span>
831
- <span class="cstat-no" title="statement not covered" > }</span>
832
- <span class="cstat-no" title="statement not covered" > }</span>
833
- <span class="cstat-no" title="statement not covered" ></span>
834
- <span class="cstat-no" title="statement not covered" > for ( let i = 0, keys = Object.keys( this.children ), length = keys.length; i &lt; length; i++ ) {</span>
835
- <span class="cstat-no" title="statement not covered" > const child = this.children[keys[i]];</span>
836
- <span class="cstat-no" title="statement not covered" ></span>
837
- <span class="cstat-no" title="statement not covered" > if ( child != null &amp;&amp; !child.isSpare() ) {</span>
838
- <span class="cstat-no" title="statement not covered" > return false;</span>
839
- <span class="cstat-no" title="statement not covered" > }</span>
840
- <span class="cstat-no" title="statement not covered" > }</span>
841
- <span class="cstat-no" title="statement not covered" ></span>
842
- <span class="cstat-no" title="statement not covered" > return true;</span>
843
- <span class="cstat-no" title="statement not covered" > }</span>
844
- &nbsp;
845
- /**
846
- * Renders path of current node mostly for debugging and logging
847
- * purposes.
848
- *
849
- * @returns {string} path name of current node
850
- */
851
- path() {
852
- const prefix = this.parent &amp;&amp; this.parent.path();
853
- &nbsp;
854
- return prefix ? prefix + "." + this.name : this.name;
855
- }
856
- &nbsp;
857
- /**
858
- * Generates string describing current tree of authorizations in a
859
- * human-readable form.
860
- *
861
- * @return {string} rendered description of current tree of authorizations
862
- */
863
- <span class="fstat-no" title="function not covered" > dump() {</span>
864
- <span class="cstat-no" title="statement not covered" > // TODO implement code for dumping current node to log</span>
865
- <span class="cstat-no" title="statement not covered" > return "tbd.";</span>
866
- <span class="cstat-no" title="statement not covered" > }</span>
867
- &nbsp;
868
- /**
869
- * Transfer every valuable information to a clone of current node and
870
- * return it.
871
- *
872
- * @returns {AuthorizationNode} clone of current node limited to currently valuable data, undefined if node isn't required anymore
873
- */
874
- gc() {
875
- const children = this.children;
876
- const childrenNames = Object.keys( children );
877
- const numChildren = childrenNames.length;
878
- let clone;
879
- &nbsp;
880
- for ( let i = 0; i &lt; numChildren; i++ ) {
881
- const childName = childrenNames[i];
882
- const child = children[childName];
883
- &nbsp;
884
- if ( child ) {
885
- const cleared = child.gc();
886
- &nbsp;
887
- if ( cleared ) {
888
- if ( !clone ) {
889
- clone = new this.constructor( this.name, this.parent );
890
- }
891
- &nbsp;
892
- clone.children[childName] = cleared;
893
- }
894
- }
895
- }
896
- &nbsp;
897
- for ( const type of [ "roles", "users" ] ) {
898
- for ( const mode of [ "accept", "reject" ] ) {
899
- const list = this[type][mode];
900
- const keys = Object.keys( list );
901
- const numKeys = keys.length;
902
- &nbsp;
903
- for ( let i = 0; i &lt; numKeys; i++ ) {
904
- const key = keys[i];
905
- const count = list[key];
906
- &nbsp;
907
- if ( count &gt; 0 ) {
908
- if ( !clone ) {
909
- clone = new this.constructor( this.name, this.parent );
910
- }
911
- &nbsp;
912
- clone[type][mode][key] = count;
913
- }
914
- }
915
- }
916
- }
917
- &nbsp;
918
- return clone;
919
- }
920
- }
921
- &nbsp;
922
- return AuthorizationNode;
923
- };
924
- &nbsp;</pre></td></tr></table></pre>
925
-
926
- <div class='push'></div><!-- for sticky footer -->
927
- </div><!-- /wrapper -->
928
- <div class='footer quiet pad2 space-top1 center small'>
929
- Code coverage generated by
930
- <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
931
- at Mon Mar 28 2022 22:26:49 GMT+0200 (Mitteleuropäische Sommerzeit)
932
- </div>
933
- </div>
934
- <script src="../../../../prettify.js"></script>
935
- <script>
936
- window.onload = function () {
937
- prettyPrint();
938
- };
939
- </script>
940
- <script src="../../../../sorter.js"></script>
941
- <script src="../../../../block-navigation.js"></script>
942
- </body>
943
- </html>
944
-