@hitchy/plugin-auth 0.3.5 → 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 (67) hide show
  1. package/package.json +1 -1
  2. package/.gitlab-ci.yml +0 -69
  3. package/coverage/base.css +0 -224
  4. package/coverage/block-navigation.js +0 -87
  5. package/coverage/favicon.png +0 -0
  6. package/coverage/index.html +0 -236
  7. package/coverage/plugin-auth/api/controller/index.html +0 -116
  8. package/coverage/plugin-auth/api/controller/user.js.html +0 -373
  9. package/coverage/plugin-auth/api/model/authorization/index.html +0 -116
  10. package/coverage/plugin-auth/api/model/authorization/rule.js.html +0 -232
  11. package/coverage/plugin-auth/api/model/index.html +0 -146
  12. package/coverage/plugin-auth/api/model/role.js.html +0 -205
  13. package/coverage/plugin-auth/api/model/user-to-role.js.html +0 -172
  14. package/coverage/plugin-auth/api/model/user.js.html +0 -757
  15. package/coverage/plugin-auth/api/policy/authentication.js.html +0 -784
  16. package/coverage/plugin-auth/api/policy/authorization.js.html +0 -187
  17. package/coverage/plugin-auth/api/policy/index.html +0 -146
  18. package/coverage/plugin-auth/api/policy/user.js.html +0 -484
  19. package/coverage/plugin-auth/api/service/auth/index.html +0 -116
  20. package/coverage/plugin-auth/api/service/auth/manager.js.html +0 -964
  21. package/coverage/plugin-auth/api/service/authentication/index.html +0 -131
  22. package/coverage/plugin-auth/api/service/authentication/passport.js.html +0 -298
  23. package/coverage/plugin-auth/api/service/authentication/strategies.js.html +0 -934
  24. package/coverage/plugin-auth/api/service/authorization/index.html +0 -146
  25. package/coverage/plugin-auth/api/service/authorization/node.js.html +0 -949
  26. package/coverage/plugin-auth/api/service/authorization/policy-generator.js.html +0 -391
  27. package/coverage/plugin-auth/api/service/authorization/tree.js.html +0 -988
  28. package/coverage/plugin-auth/config/auth.js.html +0 -145
  29. package/coverage/plugin-auth/config/index.html +0 -116
  30. package/coverage/plugin-auth/index.html +0 -116
  31. package/coverage/plugin-auth/index.js.html +0 -388
  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 -196
  36. package/coverage/tmp/coverage-2884-1653923449663-0.json +0 -1
  37. package/docs/.vuepress/config.js +0 -55
  38. package/docs/.vuepress/styles/palette.styl +0 -4
  39. package/docs/api/config.md +0 -180
  40. package/docs/api/controller/readme.md +0 -10
  41. package/docs/api/controller/user.md +0 -44
  42. package/docs/api/model/authorization-rule.md +0 -38
  43. package/docs/api/model/readme.md +0 -13
  44. package/docs/api/model/role.md +0 -22
  45. package/docs/api/model/user-to-role.md +0 -26
  46. package/docs/api/model/user.md +0 -50
  47. package/docs/api/policy/authentication.md +0 -44
  48. package/docs/api/policy/authorization.md +0 -27
  49. package/docs/api/policy/readme.md +0 -12
  50. package/docs/api/policy/user.md +0 -22
  51. package/docs/api/readme.md +0 -52
  52. package/docs/api/routing.md +0 -101
  53. package/docs/api/service/auth-manager.md +0 -86
  54. package/docs/api/service/authentication-passport.md +0 -21
  55. package/docs/api/service/authentication-strategies.md +0 -22
  56. package/docs/api/service/authorization-node.md +0 -102
  57. package/docs/api/service/authorization-policy-generator.md +0 -66
  58. package/docs/api/service/authorization-tree.md +0 -123
  59. package/docs/api/service/readme.md +0 -15
  60. package/docs/guides/getting-started.md +0 -69
  61. package/docs/guides/idp-login.png +0 -0
  62. package/docs/guides/idp-saml-cert.png +0 -0
  63. package/docs/guides/openid-connect.md +0 -164
  64. package/docs/guides/readme.md +0 -12
  65. package/docs/guides/saml.md +0 -161
  66. package/docs/introduction.md +0 -78
  67. package/docs/readme.md +0 -11
@@ -1,949 +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
- <template id="filterTemplate">
58
- <div class="quiet">
59
- Filter:
60
- <input oninput="onInput()" type="search" id="fileSearch">
61
- </div>
62
- </template>
63
- </div>
64
- <div class='status-line high'></div>
65
- <pre><table class="coverage">
66
- <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
- <a name='L2'></a><a href='#L2'>2</a>
68
- <a name='L3'></a><a href='#L3'>3</a>
69
- <a name='L4'></a><a href='#L4'>4</a>
70
- <a name='L5'></a><a href='#L5'>5</a>
71
- <a name='L6'></a><a href='#L6'>6</a>
72
- <a name='L7'></a><a href='#L7'>7</a>
73
- <a name='L8'></a><a href='#L8'>8</a>
74
- <a name='L9'></a><a href='#L9'>9</a>
75
- <a name='L10'></a><a href='#L10'>10</a>
76
- <a name='L11'></a><a href='#L11'>11</a>
77
- <a name='L12'></a><a href='#L12'>12</a>
78
- <a name='L13'></a><a href='#L13'>13</a>
79
- <a name='L14'></a><a href='#L14'>14</a>
80
- <a name='L15'></a><a href='#L15'>15</a>
81
- <a name='L16'></a><a href='#L16'>16</a>
82
- <a name='L17'></a><a href='#L17'>17</a>
83
- <a name='L18'></a><a href='#L18'>18</a>
84
- <a name='L19'></a><a href='#L19'>19</a>
85
- <a name='L20'></a><a href='#L20'>20</a>
86
- <a name='L21'></a><a href='#L21'>21</a>
87
- <a name='L22'></a><a href='#L22'>22</a>
88
- <a name='L23'></a><a href='#L23'>23</a>
89
- <a name='L24'></a><a href='#L24'>24</a>
90
- <a name='L25'></a><a href='#L25'>25</a>
91
- <a name='L26'></a><a href='#L26'>26</a>
92
- <a name='L27'></a><a href='#L27'>27</a>
93
- <a name='L28'></a><a href='#L28'>28</a>
94
- <a name='L29'></a><a href='#L29'>29</a>
95
- <a name='L30'></a><a href='#L30'>30</a>
96
- <a name='L31'></a><a href='#L31'>31</a>
97
- <a name='L32'></a><a href='#L32'>32</a>
98
- <a name='L33'></a><a href='#L33'>33</a>
99
- <a name='L34'></a><a href='#L34'>34</a>
100
- <a name='L35'></a><a href='#L35'>35</a>
101
- <a name='L36'></a><a href='#L36'>36</a>
102
- <a name='L37'></a><a href='#L37'>37</a>
103
- <a name='L38'></a><a href='#L38'>38</a>
104
- <a name='L39'></a><a href='#L39'>39</a>
105
- <a name='L40'></a><a href='#L40'>40</a>
106
- <a name='L41'></a><a href='#L41'>41</a>
107
- <a name='L42'></a><a href='#L42'>42</a>
108
- <a name='L43'></a><a href='#L43'>43</a>
109
- <a name='L44'></a><a href='#L44'>44</a>
110
- <a name='L45'></a><a href='#L45'>45</a>
111
- <a name='L46'></a><a href='#L46'>46</a>
112
- <a name='L47'></a><a href='#L47'>47</a>
113
- <a name='L48'></a><a href='#L48'>48</a>
114
- <a name='L49'></a><a href='#L49'>49</a>
115
- <a name='L50'></a><a href='#L50'>50</a>
116
- <a name='L51'></a><a href='#L51'>51</a>
117
- <a name='L52'></a><a href='#L52'>52</a>
118
- <a name='L53'></a><a href='#L53'>53</a>
119
- <a name='L54'></a><a href='#L54'>54</a>
120
- <a name='L55'></a><a href='#L55'>55</a>
121
- <a name='L56'></a><a href='#L56'>56</a>
122
- <a name='L57'></a><a href='#L57'>57</a>
123
- <a name='L58'></a><a href='#L58'>58</a>
124
- <a name='L59'></a><a href='#L59'>59</a>
125
- <a name='L60'></a><a href='#L60'>60</a>
126
- <a name='L61'></a><a href='#L61'>61</a>
127
- <a name='L62'></a><a href='#L62'>62</a>
128
- <a name='L63'></a><a href='#L63'>63</a>
129
- <a name='L64'></a><a href='#L64'>64</a>
130
- <a name='L65'></a><a href='#L65'>65</a>
131
- <a name='L66'></a><a href='#L66'>66</a>
132
- <a name='L67'></a><a href='#L67'>67</a>
133
- <a name='L68'></a><a href='#L68'>68</a>
134
- <a name='L69'></a><a href='#L69'>69</a>
135
- <a name='L70'></a><a href='#L70'>70</a>
136
- <a name='L71'></a><a href='#L71'>71</a>
137
- <a name='L72'></a><a href='#L72'>72</a>
138
- <a name='L73'></a><a href='#L73'>73</a>
139
- <a name='L74'></a><a href='#L74'>74</a>
140
- <a name='L75'></a><a href='#L75'>75</a>
141
- <a name='L76'></a><a href='#L76'>76</a>
142
- <a name='L77'></a><a href='#L77'>77</a>
143
- <a name='L78'></a><a href='#L78'>78</a>
144
- <a name='L79'></a><a href='#L79'>79</a>
145
- <a name='L80'></a><a href='#L80'>80</a>
146
- <a name='L81'></a><a href='#L81'>81</a>
147
- <a name='L82'></a><a href='#L82'>82</a>
148
- <a name='L83'></a><a href='#L83'>83</a>
149
- <a name='L84'></a><a href='#L84'>84</a>
150
- <a name='L85'></a><a href='#L85'>85</a>
151
- <a name='L86'></a><a href='#L86'>86</a>
152
- <a name='L87'></a><a href='#L87'>87</a>
153
- <a name='L88'></a><a href='#L88'>88</a>
154
- <a name='L89'></a><a href='#L89'>89</a>
155
- <a name='L90'></a><a href='#L90'>90</a>
156
- <a name='L91'></a><a href='#L91'>91</a>
157
- <a name='L92'></a><a href='#L92'>92</a>
158
- <a name='L93'></a><a href='#L93'>93</a>
159
- <a name='L94'></a><a href='#L94'>94</a>
160
- <a name='L95'></a><a href='#L95'>95</a>
161
- <a name='L96'></a><a href='#L96'>96</a>
162
- <a name='L97'></a><a href='#L97'>97</a>
163
- <a name='L98'></a><a href='#L98'>98</a>
164
- <a name='L99'></a><a href='#L99'>99</a>
165
- <a name='L100'></a><a href='#L100'>100</a>
166
- <a name='L101'></a><a href='#L101'>101</a>
167
- <a name='L102'></a><a href='#L102'>102</a>
168
- <a name='L103'></a><a href='#L103'>103</a>
169
- <a name='L104'></a><a href='#L104'>104</a>
170
- <a name='L105'></a><a href='#L105'>105</a>
171
- <a name='L106'></a><a href='#L106'>106</a>
172
- <a name='L107'></a><a href='#L107'>107</a>
173
- <a name='L108'></a><a href='#L108'>108</a>
174
- <a name='L109'></a><a href='#L109'>109</a>
175
- <a name='L110'></a><a href='#L110'>110</a>
176
- <a name='L111'></a><a href='#L111'>111</a>
177
- <a name='L112'></a><a href='#L112'>112</a>
178
- <a name='L113'></a><a href='#L113'>113</a>
179
- <a name='L114'></a><a href='#L114'>114</a>
180
- <a name='L115'></a><a href='#L115'>115</a>
181
- <a name='L116'></a><a href='#L116'>116</a>
182
- <a name='L117'></a><a href='#L117'>117</a>
183
- <a name='L118'></a><a href='#L118'>118</a>
184
- <a name='L119'></a><a href='#L119'>119</a>
185
- <a name='L120'></a><a href='#L120'>120</a>
186
- <a name='L121'></a><a href='#L121'>121</a>
187
- <a name='L122'></a><a href='#L122'>122</a>
188
- <a name='L123'></a><a href='#L123'>123</a>
189
- <a name='L124'></a><a href='#L124'>124</a>
190
- <a name='L125'></a><a href='#L125'>125</a>
191
- <a name='L126'></a><a href='#L126'>126</a>
192
- <a name='L127'></a><a href='#L127'>127</a>
193
- <a name='L128'></a><a href='#L128'>128</a>
194
- <a name='L129'></a><a href='#L129'>129</a>
195
- <a name='L130'></a><a href='#L130'>130</a>
196
- <a name='L131'></a><a href='#L131'>131</a>
197
- <a name='L132'></a><a href='#L132'>132</a>
198
- <a name='L133'></a><a href='#L133'>133</a>
199
- <a name='L134'></a><a href='#L134'>134</a>
200
- <a name='L135'></a><a href='#L135'>135</a>
201
- <a name='L136'></a><a href='#L136'>136</a>
202
- <a name='L137'></a><a href='#L137'>137</a>
203
- <a name='L138'></a><a href='#L138'>138</a>
204
- <a name='L139'></a><a href='#L139'>139</a>
205
- <a name='L140'></a><a href='#L140'>140</a>
206
- <a name='L141'></a><a href='#L141'>141</a>
207
- <a name='L142'></a><a href='#L142'>142</a>
208
- <a name='L143'></a><a href='#L143'>143</a>
209
- <a name='L144'></a><a href='#L144'>144</a>
210
- <a name='L145'></a><a href='#L145'>145</a>
211
- <a name='L146'></a><a href='#L146'>146</a>
212
- <a name='L147'></a><a href='#L147'>147</a>
213
- <a name='L148'></a><a href='#L148'>148</a>
214
- <a name='L149'></a><a href='#L149'>149</a>
215
- <a name='L150'></a><a href='#L150'>150</a>
216
- <a name='L151'></a><a href='#L151'>151</a>
217
- <a name='L152'></a><a href='#L152'>152</a>
218
- <a name='L153'></a><a href='#L153'>153</a>
219
- <a name='L154'></a><a href='#L154'>154</a>
220
- <a name='L155'></a><a href='#L155'>155</a>
221
- <a name='L156'></a><a href='#L156'>156</a>
222
- <a name='L157'></a><a href='#L157'>157</a>
223
- <a name='L158'></a><a href='#L158'>158</a>
224
- <a name='L159'></a><a href='#L159'>159</a>
225
- <a name='L160'></a><a href='#L160'>160</a>
226
- <a name='L161'></a><a href='#L161'>161</a>
227
- <a name='L162'></a><a href='#L162'>162</a>
228
- <a name='L163'></a><a href='#L163'>163</a>
229
- <a name='L164'></a><a href='#L164'>164</a>
230
- <a name='L165'></a><a href='#L165'>165</a>
231
- <a name='L166'></a><a href='#L166'>166</a>
232
- <a name='L167'></a><a href='#L167'>167</a>
233
- <a name='L168'></a><a href='#L168'>168</a>
234
- <a name='L169'></a><a href='#L169'>169</a>
235
- <a name='L170'></a><a href='#L170'>170</a>
236
- <a name='L171'></a><a href='#L171'>171</a>
237
- <a name='L172'></a><a href='#L172'>172</a>
238
- <a name='L173'></a><a href='#L173'>173</a>
239
- <a name='L174'></a><a href='#L174'>174</a>
240
- <a name='L175'></a><a href='#L175'>175</a>
241
- <a name='L176'></a><a href='#L176'>176</a>
242
- <a name='L177'></a><a href='#L177'>177</a>
243
- <a name='L178'></a><a href='#L178'>178</a>
244
- <a name='L179'></a><a href='#L179'>179</a>
245
- <a name='L180'></a><a href='#L180'>180</a>
246
- <a name='L181'></a><a href='#L181'>181</a>
247
- <a name='L182'></a><a href='#L182'>182</a>
248
- <a name='L183'></a><a href='#L183'>183</a>
249
- <a name='L184'></a><a href='#L184'>184</a>
250
- <a name='L185'></a><a href='#L185'>185</a>
251
- <a name='L186'></a><a href='#L186'>186</a>
252
- <a name='L187'></a><a href='#L187'>187</a>
253
- <a name='L188'></a><a href='#L188'>188</a>
254
- <a name='L189'></a><a href='#L189'>189</a>
255
- <a name='L190'></a><a href='#L190'>190</a>
256
- <a name='L191'></a><a href='#L191'>191</a>
257
- <a name='L192'></a><a href='#L192'>192</a>
258
- <a name='L193'></a><a href='#L193'>193</a>
259
- <a name='L194'></a><a href='#L194'>194</a>
260
- <a name='L195'></a><a href='#L195'>195</a>
261
- <a name='L196'></a><a href='#L196'>196</a>
262
- <a name='L197'></a><a href='#L197'>197</a>
263
- <a name='L198'></a><a href='#L198'>198</a>
264
- <a name='L199'></a><a href='#L199'>199</a>
265
- <a name='L200'></a><a href='#L200'>200</a>
266
- <a name='L201'></a><a href='#L201'>201</a>
267
- <a name='L202'></a><a href='#L202'>202</a>
268
- <a name='L203'></a><a href='#L203'>203</a>
269
- <a name='L204'></a><a href='#L204'>204</a>
270
- <a name='L205'></a><a href='#L205'>205</a>
271
- <a name='L206'></a><a href='#L206'>206</a>
272
- <a name='L207'></a><a href='#L207'>207</a>
273
- <a name='L208'></a><a href='#L208'>208</a>
274
- <a name='L209'></a><a href='#L209'>209</a>
275
- <a name='L210'></a><a href='#L210'>210</a>
276
- <a name='L211'></a><a href='#L211'>211</a>
277
- <a name='L212'></a><a href='#L212'>212</a>
278
- <a name='L213'></a><a href='#L213'>213</a>
279
- <a name='L214'></a><a href='#L214'>214</a>
280
- <a name='L215'></a><a href='#L215'>215</a>
281
- <a name='L216'></a><a href='#L216'>216</a>
282
- <a name='L217'></a><a href='#L217'>217</a>
283
- <a name='L218'></a><a href='#L218'>218</a>
284
- <a name='L219'></a><a href='#L219'>219</a>
285
- <a name='L220'></a><a href='#L220'>220</a>
286
- <a name='L221'></a><a href='#L221'>221</a>
287
- <a name='L222'></a><a href='#L222'>222</a>
288
- <a name='L223'></a><a href='#L223'>223</a>
289
- <a name='L224'></a><a href='#L224'>224</a>
290
- <a name='L225'></a><a href='#L225'>225</a>
291
- <a name='L226'></a><a href='#L226'>226</a>
292
- <a name='L227'></a><a href='#L227'>227</a>
293
- <a name='L228'></a><a href='#L228'>228</a>
294
- <a name='L229'></a><a href='#L229'>229</a>
295
- <a name='L230'></a><a href='#L230'>230</a>
296
- <a name='L231'></a><a href='#L231'>231</a>
297
- <a name='L232'></a><a href='#L232'>232</a>
298
- <a name='L233'></a><a href='#L233'>233</a>
299
- <a name='L234'></a><a href='#L234'>234</a>
300
- <a name='L235'></a><a href='#L235'>235</a>
301
- <a name='L236'></a><a href='#L236'>236</a>
302
- <a name='L237'></a><a href='#L237'>237</a>
303
- <a name='L238'></a><a href='#L238'>238</a>
304
- <a name='L239'></a><a href='#L239'>239</a>
305
- <a name='L240'></a><a href='#L240'>240</a>
306
- <a name='L241'></a><a href='#L241'>241</a>
307
- <a name='L242'></a><a href='#L242'>242</a>
308
- <a name='L243'></a><a href='#L243'>243</a>
309
- <a name='L244'></a><a href='#L244'>244</a>
310
- <a name='L245'></a><a href='#L245'>245</a>
311
- <a name='L246'></a><a href='#L246'>246</a>
312
- <a name='L247'></a><a href='#L247'>247</a>
313
- <a name='L248'></a><a href='#L248'>248</a>
314
- <a name='L249'></a><a href='#L249'>249</a>
315
- <a name='L250'></a><a href='#L250'>250</a>
316
- <a name='L251'></a><a href='#L251'>251</a>
317
- <a name='L252'></a><a href='#L252'>252</a>
318
- <a name='L253'></a><a href='#L253'>253</a>
319
- <a name='L254'></a><a href='#L254'>254</a>
320
- <a name='L255'></a><a href='#L255'>255</a>
321
- <a name='L256'></a><a href='#L256'>256</a>
322
- <a name='L257'></a><a href='#L257'>257</a>
323
- <a name='L258'></a><a href='#L258'>258</a>
324
- <a name='L259'></a><a href='#L259'>259</a>
325
- <a name='L260'></a><a href='#L260'>260</a>
326
- <a name='L261'></a><a href='#L261'>261</a>
327
- <a name='L262'></a><a href='#L262'>262</a>
328
- <a name='L263'></a><a href='#L263'>263</a>
329
- <a name='L264'></a><a href='#L264'>264</a>
330
- <a name='L265'></a><a href='#L265'>265</a>
331
- <a name='L266'></a><a href='#L266'>266</a>
332
- <a name='L267'></a><a href='#L267'>267</a>
333
- <a name='L268'></a><a href='#L268'>268</a>
334
- <a name='L269'></a><a href='#L269'>269</a>
335
- <a name='L270'></a><a href='#L270'>270</a>
336
- <a name='L271'></a><a href='#L271'>271</a>
337
- <a name='L272'></a><a href='#L272'>272</a>
338
- <a name='L273'></a><a href='#L273'>273</a>
339
- <a name='L274'></a><a href='#L274'>274</a>
340
- <a name='L275'></a><a href='#L275'>275</a>
341
- <a name='L276'></a><a href='#L276'>276</a>
342
- <a name='L277'></a><a href='#L277'>277</a>
343
- <a name='L278'></a><a href='#L278'>278</a>
344
- <a name='L279'></a><a href='#L279'>279</a>
345
- <a name='L280'></a><a href='#L280'>280</a>
346
- <a name='L281'></a><a href='#L281'>281</a>
347
- <a name='L282'></a><a href='#L282'>282</a>
348
- <a name='L283'></a><a href='#L283'>283</a>
349
- <a name='L284'></a><a href='#L284'>284</a>
350
- <a name='L285'></a><a href='#L285'>285</a>
351
- <a name='L286'></a><a href='#L286'>286</a>
352
- <a name='L287'></a><a href='#L287'>287</a>
353
- <a name='L288'></a><a href='#L288'>288</a>
354
- <a name='L289'></a><a href='#L289'>289</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
355
- <span class="cline-any cline-yes">1x</span>
356
- <span class="cline-any cline-yes">1x</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">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">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">136x</span>
381
- <span class="cline-any cline-yes">136x</span>
382
- <span class="cline-any cline-yes">136x</span>
383
- <span class="cline-any cline-yes">136x</span>
384
- <span class="cline-any cline-yes">136x</span>
385
- <span class="cline-any cline-yes">136x</span>
386
- <span class="cline-any cline-yes">19x</span>
387
- <span class="cline-any cline-yes">19x</span>
388
- <span class="cline-any cline-yes">19x</span>
389
- <span class="cline-any cline-yes">19x</span>
390
- <span class="cline-any cline-yes">19x</span>
391
- <span class="cline-any cline-yes">19x</span>
392
- <span class="cline-any cline-yes">19x</span>
393
- <span class="cline-any cline-yes">178x</span>
394
- <span class="cline-any cline-yes">178x</span>
395
- <span class="cline-any cline-yes">178x</span>
396
- <span class="cline-any cline-yes">178x</span>
397
- <span class="cline-any cline-yes">178x</span>
398
- <span class="cline-any cline-yes">178x</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">52x</span>
410
- <span class="cline-any cline-yes">51x</span>
411
- <span class="cline-any cline-yes">51x</span>
412
- <span class="cline-any cline-yes">51x</span>
413
- <span class="cline-any cline-yes">51x</span>
414
- <span class="cline-any cline-yes">52x</span>
415
- <span class="cline-any cline-yes">52x</span>
416
- <span class="cline-any cline-yes">52x</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">19x</span>
422
- <span class="cline-any cline-yes">19x</span>
423
- <span class="cline-any cline-yes">19x</span>
424
- <span class="cline-any cline-yes">19x</span>
425
- <span class="cline-any cline-yes">19x</span>
426
- <span class="cline-any cline-yes">19x</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">53x</span>
430
- <span class="cline-any cline-yes">53x</span>
431
- <span class="cline-any cline-yes">53x</span>
432
- <span class="cline-any cline-yes">53x</span>
433
- <span class="cline-any cline-yes">53x</span>
434
- <span class="cline-any cline-yes">53x</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-yes">19x</span>
440
- <span class="cline-any cline-yes">19x</span>
441
- <span class="cline-any cline-yes">19x</span>
442
- <span class="cline-any cline-yes">19x</span>
443
- <span class="cline-any cline-yes">19x</span>
444
- <span class="cline-any cline-yes">19x</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-no">&nbsp;</span>
448
- <span class="cline-any cline-no">&nbsp;</span>
449
- <span class="cline-any cline-no">&nbsp;</span>
450
- <span class="cline-any cline-no">&nbsp;</span>
451
- <span class="cline-any cline-no">&nbsp;</span>
452
- <span class="cline-any cline-no">&nbsp;</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">19x</span>
458
- <span class="cline-any cline-yes">19x</span>
459
- <span class="cline-any cline-yes">19x</span>
460
- <span class="cline-any cline-yes">19x</span>
461
- <span class="cline-any cline-yes">19x</span>
462
- <span class="cline-any cline-yes">19x</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">1x</span>
466
- <span class="cline-any cline-yes">1x</span>
467
- <span class="cline-any cline-yes">1x</span>
468
- <span class="cline-any cline-yes">1x</span>
469
- <span class="cline-any cline-yes">1x</span>
470
- <span class="cline-any cline-yes">1x</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">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-yes">832x</span>
485
- <span class="cline-any cline-yes">113x</span>
486
- <span class="cline-any cline-yes">113x</span>
487
- <span class="cline-any cline-yes">832x</span>
488
- <span class="cline-any cline-yes">832x</span>
489
- <span class="cline-any cline-yes">832x</span>
490
- <span class="cline-any cline-no">&nbsp;</span>
491
- <span class="cline-any cline-no">&nbsp;</span>
492
- <span class="cline-any cline-yes">832x</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">19x</span>
497
- <span class="cline-any cline-yes">19x</span>
498
- <span class="cline-any cline-yes">19x</span>
499
- <span class="cline-any cline-yes">19x</span>
500
- <span class="cline-any cline-yes">19x</span>
501
- <span class="cline-any cline-yes">19x</span>
502
- <span class="cline-any cline-yes">94x</span>
503
- <span class="cline-any cline-yes">94x</span>
504
- <span class="cline-any cline-yes">94x</span>
505
- <span class="cline-any cline-yes">94x</span>
506
- <span class="cline-any cline-yes">94x</span>
507
- <span class="cline-any cline-yes">94x</span>
508
- <span class="cline-any cline-yes">188x</span>
509
- <span class="cline-any cline-yes">114x</span>
510
- <span class="cline-any cline-yes">114x</span>
511
- <span class="cline-any cline-yes">114x</span>
512
- <span class="cline-any cline-yes">106x</span>
513
- <span class="cline-any cline-yes">212x</span>
514
- <span class="cline-any cline-yes">212x</span>
515
- <span class="cline-any cline-yes">212x</span>
516
- <span class="cline-any cline-yes">30x</span>
517
- <span class="cline-any cline-yes">30x</span>
518
- <span class="cline-any cline-yes">212x</span>
519
- <span class="cline-any cline-yes">106x</span>
520
- <span class="cline-any cline-yes">114x</span>
521
- <span class="cline-any cline-yes">188x</span>
522
- <span class="cline-any cline-yes">94x</span>
523
- <span class="cline-any cline-yes">94x</span>
524
- <span class="cline-any cline-yes">15x</span>
525
- <span class="cline-any cline-yes">6x</span>
526
- <span class="cline-any cline-yes">6x</span>
527
- <span class="cline-any cline-yes">9x</span>
528
- <span class="cline-any cline-yes">9x</span>
529
- <span class="cline-any cline-yes">9x</span>
530
- <span class="cline-any cline-yes">79x</span>
531
- <span class="cline-any cline-yes">94x</span>
532
- <span class="cline-any cline-yes">9x</span>
533
- <span class="cline-any cline-yes">9x</span>
534
- <span class="cline-any cline-yes">70x</span>
535
- <span class="cline-any cline-yes">70x</span>
536
- <span class="cline-any cline-yes">94x</span>
537
- <span class="cline-any cline-yes">19x</span>
538
- <span class="cline-any cline-yes">19x</span>
539
- <span class="cline-any cline-yes">19x</span>
540
- <span class="cline-any cline-yes">19x</span>
541
- <span class="cline-any cline-yes">19x</span>
542
- <span class="cline-any cline-yes">19x</span>
543
- <span class="cline-any cline-yes">19x</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-no">&nbsp;</span>
557
- <span class="cline-any cline-no">&nbsp;</span>
558
- <span class="cline-any cline-no">&nbsp;</span>
559
- <span class="cline-any cline-no">&nbsp;</span>
560
- <span class="cline-any cline-no">&nbsp;</span>
561
- <span class="cline-any cline-no">&nbsp;</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">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">24x</span>
571
- <span class="cline-any cline-yes">24x</span>
572
- <span class="cline-any cline-yes">24x</span>
573
- <span class="cline-any cline-yes">24x</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-yes">19x</span>
577
- <span class="cline-any cline-yes">19x</span>
578
- <span class="cline-any cline-yes">19x</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-no">&nbsp;</span>
583
- <span class="cline-any cline-no">&nbsp;</span>
584
- <span class="cline-any cline-no">&nbsp;</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">19x</span>
588
- <span class="cline-any cline-yes">19x</span>
589
- <span class="cline-any cline-yes">19x</span>
590
- <span class="cline-any cline-yes">19x</span>
591
- <span class="cline-any cline-yes">19x</span>
592
- <span class="cline-any cline-yes">19x</span>
593
- <span class="cline-any cline-yes">8x</span>
594
- <span class="cline-any cline-yes">8x</span>
595
- <span class="cline-any cline-yes">8x</span>
596
- <span class="cline-any cline-yes">8x</span>
597
- <span class="cline-any cline-yes">8x</span>
598
- <span class="cline-any cline-yes">8x</span>
599
- <span class="cline-any cline-yes">6x</span>
600
- <span class="cline-any cline-yes">6x</span>
601
- <span class="cline-any cline-yes">6x</span>
602
- <span class="cline-any cline-yes">6x</span>
603
- <span class="cline-any cline-yes">6x</span>
604
- <span class="cline-any cline-yes">6x</span>
605
- <span class="cline-any cline-yes">6x</span>
606
- <span class="cline-any cline-yes">2x</span>
607
- <span class="cline-any cline-yes">2x</span>
608
- <span class="cline-any cline-yes">2x</span>
609
- <span class="cline-any cline-yes">2x</span>
610
- <span class="cline-any cline-yes">2x</span>
611
- <span class="cline-any cline-yes">2x</span>
612
- <span class="cline-any cline-yes">6x</span>
613
- <span class="cline-any cline-yes">6x</span>
614
- <span class="cline-any cline-yes">8x</span>
615
- <span class="cline-any cline-yes">8x</span>
616
- <span class="cline-any cline-yes">16x</span>
617
- <span class="cline-any cline-yes">32x</span>
618
- <span class="cline-any cline-yes">32x</span>
619
- <span class="cline-any cline-yes">32x</span>
620
- <span class="cline-any cline-yes">32x</span>
621
- <span class="cline-any cline-yes">32x</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">1x</span>
628
- <span class="cline-any cline-yes">1x</span>
629
- <span class="cline-any cline-yes">1x</span>
630
- <span class="cline-any cline-yes">1x</span>
631
- <span class="cline-any cline-yes">1x</span>
632
- <span class="cline-any cline-yes">1x</span>
633
- <span class="cline-any cline-yes">32x</span>
634
- <span class="cline-any cline-yes">16x</span>
635
- <span class="cline-any cline-yes">8x</span>
636
- <span class="cline-any cline-yes">8x</span>
637
- <span class="cline-any cline-yes">8x</span>
638
- <span class="cline-any cline-yes">19x</span>
639
- <span class="cline-any cline-yes">19x</span>
640
- <span class="cline-any cline-yes">19x</span>
641
- <span class="cline-any cline-yes">1x</span>
642
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">"use strict";
643
- &nbsp;
644
- module.exports = function() {
645
- /**
646
- * Implements behavior of a single node in a hierarchy of authorization
647
- * rules.
648
- *
649
- * @property {?AuthorizationNode} parent refers to superordinated node
650
- * @property {?string} name name of segment addressing this node in context of its parent
651
- * @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
652
- * @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
653
- * @property {object&lt;string,AuthorizationNode&gt;} children maps relative names into subordinated nodes
654
- */
655
- class AuthorizationNode {
656
- /**
657
- * @param {string} [segmentName] name of segment addressing this node in context of its parent node
658
- * @param {AuthorizationNode} [parent] refers to parent node of this one
659
- */
660
- constructor( segmentName, parent ) {
661
- Object.defineProperties( this, {
662
- parent: {
663
- value: parent || undefined,
664
- enumerable: false,
665
- },
666
- name: {
667
- value: segmentName || undefined,
668
- enumerable: false,
669
- },
670
- } );
671
- &nbsp;
672
- this.clear();
673
- }
674
- &nbsp;
675
- /**
676
- * Drops all information previously stored in node due to adding rules.
677
- *
678
- * @returns {AuthorizationNode} fluent interface
679
- */
680
- clear() {
681
- this.roles = { accept: {}, reject: {} };
682
- this.users = { accept: {}, reject: {} };
683
- this.children = {};
684
- &nbsp;
685
- return this;
686
- }
687
- &nbsp;
688
- /**
689
- * Tracks named role to be accepted or rejected in context of current
690
- * node.
691
- *
692
- * @param {string} roleName name of role to add
693
- * @param {boolean} accept true if role is accepted, false if it's rejected
694
- * @returns {AuthorizationNode} fluent interface
695
- */
696
- addRole( roleName, accept = true ) {
697
- if ( roleName &amp;&amp; typeof roleName === "string" &amp;&amp; roleName.trim().length &gt; 0 ) {
698
- const list = this.roles[accept ? "accept" : "reject"];
699
- &nbsp;
700
- list[roleName] = ( list[roleName] || 0 ) + 1;
701
- }
702
- &nbsp;
703
- return this;
704
- }
705
- &nbsp;
706
- /**
707
- * Tracks user described by its name to be accepted or rejected in
708
- * context of current node.
709
- *
710
- * @param {string} userName name of user to add
711
- * @param {boolean} accept true if user is granted access on resource, false if it's revoked
712
- * @returns {AuthorizationNode} fluent interface
713
- */
714
- addUser( userName, accept = true ) {
715
- if ( userName &amp;&amp; typeof userName === "string" &amp;&amp; userName.trim().length &gt; 0 ) {
716
- const list = this.users[accept ? "accept" : "reject"];
717
- &nbsp;
718
- list[userName] = ( list[userName] || 0 ) + 1;
719
- }
720
- &nbsp;
721
- return this;
722
- }
723
- &nbsp;
724
- /**
725
- * Drops named role to be accepted or rejected in context of current
726
- * node.
727
- *
728
- * @param {string} roleName name of role to drop
729
- * @param {boolean} accept true if role is accepted, false if it's rejected
730
- * @returns {AuthorizationNode} fluent interface
731
- */
732
- <span class="fstat-no" title="function not covered" > removeRole( roleName, accept = true ) {</span>
733
- <span class="cstat-no" title="statement not covered" > if ( roleName &amp;&amp; typeof roleName === "string" &amp;&amp; roleName.trim().length &gt; 0 ) {</span>
734
- <span class="cstat-no" title="statement not covered" > const list = this.roles[accept ? "accept" : "reject"];</span>
735
- <span class="cstat-no" title="statement not covered" ></span>
736
- <span class="cstat-no" title="statement not covered" > list[roleName] = Math.max( 0, ( list[roleName] || 1 ) - 1 );</span>
737
- <span class="cstat-no" title="statement not covered" > }</span>
738
- <span class="cstat-no" title="statement not covered" ></span>
739
- <span class="cstat-no" title="statement not covered" > return this;</span>
740
- <span class="cstat-no" title="statement not covered" > }</span>
741
- &nbsp;
742
- /**
743
- * Drops user described by its name to be accepted or rejected in
744
- * context of current node.
745
- *
746
- * @param {string} userName name of user to add
747
- * @param {boolean} accept true if role is accepted, false if it's rejected
748
- * @returns {AuthorizationNode} fluent interface
749
- */
750
- removeUser( userName, accept = true ) {
751
- if ( userName &amp;&amp; typeof userName === "string" &amp;&amp; userName.trim().length &gt; 0 ) {
752
- const list = this.users[accept ? "accept" <span class="branch-0 cbranch-no" title="branch not covered" >: "reject"]</span>;
753
- &nbsp;
754
- list[userName] = Math.max( 0, ( list[userName] <span class="branch-0 cbranch-no" title="branch not covered" >|| 1 </span>) - 1 );
755
- }
756
- &nbsp;
757
- return this;
758
- }
759
- &nbsp;
760
- /**
761
- * Fetches subordinated node by its name optionally creating it in case
762
- * it is missing.
763
- *
764
- * @param {string} name name of child to look up
765
- * @param {boolean} addIfMissing true if child should be created if missing
766
- * @returns {AuthorizationNode} found or created child node, undefined if missing
767
- */
768
- getChild( name, addIfMissing = false ) {
769
- if ( name &amp;&amp; typeof name === "string" ) {
770
- let child = this.children[name];
771
- &nbsp;
772
- if ( child == null &amp;&amp; addIfMissing ) {
773
- child = this.children[name] = new this.constructor( name, this );
774
- }
775
- &nbsp;
776
- return child || undefined;
777
- }
778
- <span class="cstat-no" title="statement not covered" ><span class="branch-0 cbranch-no" title="branch not covered" ></span></span>
779
- <span class="cstat-no" title="statement not covered" > return undefined;</span>
780
- }
781
- &nbsp;
782
- /**
783
- * Tests if provided user and/or role is affected by current node.
784
- *
785
- * @param {Buffer|Buffer[]} userName name(s) of user(s) to check
786
- * @param {string|string[]} roleName name(s) of role(s) to check
787
- * @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)
788
- */
789
- isAuthorized( userName, roleName ) {
790
- const users = Array.isArray( userName ) ? userName : userName ? [userName] : [];
791
- const roles = Array.isArray( roleName ) ? roleName : roleName ? [roleName] : [];
792
- const actions = [ "accept", "reject" ];
793
- const state = { accept: false, reject: false };
794
- &nbsp;
795
- for ( const [ names, rules ] of [ [ users, this.users ], [ roles, this.roles ] ] ) {
796
- for ( let i = 0, length = names.length; i &lt; length; i++ ) {
797
- const name = names[i];
798
- &nbsp;
799
- if ( name &amp;&amp; typeof name === "string" &amp;&amp; name.trim().length &gt; 0 ) {
800
- for ( let j = 0; j &lt; 2; j++ ) {
801
- const action = actions[j];
802
- &nbsp;
803
- if ( rules[action][name] &gt; 0 ) {
804
- state[action] = true;
805
- }
806
- }
807
- }
808
- }
809
- }
810
- &nbsp;
811
- if ( state.accept ) {
812
- if ( state.reject ) {
813
- 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;"}"` );
814
- }
815
- &nbsp;
816
- return 1;
817
- }
818
- &nbsp;
819
- if ( state.reject ) {
820
- return -1;
821
- }
822
- &nbsp;
823
- return 0;
824
- }
825
- &nbsp;
826
- /**
827
- * Indicates if current node has any viable information.
828
- *
829
- * @returns {boolean} true if node hasn't any viable information affecting authorization checks
830
- */
831
- <span class="fstat-no" title="function not covered" > isSpare() {</span>
832
- <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>
833
- <span class="cstat-no" title="statement not covered" > for ( let i = 0, keys = Object.keys( list ), length = keys.length; i &lt; length; i++ ) {</span>
834
- <span class="cstat-no" title="statement not covered" > if ( list[keys[i]] &gt; 0 ) {</span>
835
- <span class="cstat-no" title="statement not covered" > return false;</span>
836
- <span class="cstat-no" title="statement not covered" > }</span>
837
- <span class="cstat-no" title="statement not covered" > }</span>
838
- <span class="cstat-no" title="statement not covered" > }</span>
839
- <span class="cstat-no" title="statement not covered" ></span>
840
- <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>
841
- <span class="cstat-no" title="statement not covered" > const child = this.children[keys[i]];</span>
842
- <span class="cstat-no" title="statement not covered" ></span>
843
- <span class="cstat-no" title="statement not covered" > if ( child != null &amp;&amp; !child.isSpare() ) {</span>
844
- <span class="cstat-no" title="statement not covered" > return false;</span>
845
- <span class="cstat-no" title="statement not covered" > }</span>
846
- <span class="cstat-no" title="statement not covered" > }</span>
847
- <span class="cstat-no" title="statement not covered" ></span>
848
- <span class="cstat-no" title="statement not covered" > return true;</span>
849
- <span class="cstat-no" title="statement not covered" > }</span>
850
- &nbsp;
851
- /**
852
- * Renders path of current node mostly for debugging and logging
853
- * purposes.
854
- *
855
- * @returns {string} path name of current node
856
- */
857
- path() {
858
- const prefix = this.parent &amp;&amp; this.parent.path();
859
- &nbsp;
860
- return prefix ? prefix + "." + this.name : this.name;
861
- }
862
- &nbsp;
863
- /**
864
- * Generates string describing current tree of authorizations in a
865
- * human-readable form.
866
- *
867
- * @return {string} rendered description of current tree of authorizations
868
- */
869
- <span class="fstat-no" title="function not covered" > dump() {</span>
870
- <span class="cstat-no" title="statement not covered" > // TODO implement code for dumping current node to log</span>
871
- <span class="cstat-no" title="statement not covered" > return "tbd.";</span>
872
- <span class="cstat-no" title="statement not covered" > }</span>
873
- &nbsp;
874
- /**
875
- * Transfer every valuable information to a clone of current node and
876
- * return it.
877
- *
878
- * @returns {AuthorizationNode} clone of current node limited to currently valuable data, undefined if node isn't required anymore
879
- */
880
- gc() {
881
- const children = this.children;
882
- const childrenNames = Object.keys( children );
883
- const numChildren = childrenNames.length;
884
- let clone;
885
- &nbsp;
886
- for ( let i = 0; i &lt; numChildren; i++ ) {
887
- const childName = childrenNames[i];
888
- const child = children[childName];
889
- &nbsp;
890
- if ( child ) {
891
- const cleared = child.gc();
892
- &nbsp;
893
- if ( cleared ) {
894
- if ( !clone ) {
895
- clone = new this.constructor( this.name, this.parent );
896
- }
897
- &nbsp;
898
- clone.children[childName] = cleared;
899
- }
900
- }
901
- }
902
- &nbsp;
903
- for ( const type of [ "roles", "users" ] ) {
904
- for ( const mode of [ "accept", "reject" ] ) {
905
- const list = this[type][mode];
906
- const keys = Object.keys( list );
907
- const numKeys = keys.length;
908
- &nbsp;
909
- for ( let i = 0; i &lt; numKeys; i++ ) {
910
- const key = keys[i];
911
- const count = list[key];
912
- &nbsp;
913
- if ( count &gt; 0 ) {
914
- if ( !clone ) {
915
- clone = new this.constructor( this.name, this.parent );
916
- }
917
- &nbsp;
918
- clone[type][mode][key] = count;
919
- }
920
- }
921
- }
922
- }
923
- &nbsp;
924
- return clone;
925
- }
926
- }
927
- &nbsp;
928
- return AuthorizationNode;
929
- };
930
- &nbsp;</pre></td></tr></table></pre>
931
-
932
- <div class='push'></div><!-- for sticky footer -->
933
- </div><!-- /wrapper -->
934
- <div class='footer quiet pad2 space-top1 center small'>
935
- Code coverage generated by
936
- <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
937
- at Mon May 30 2022 17:10:50 GMT+0200 (Mitteleuropäische Sommerzeit)
938
- </div>
939
- <script src="../../../../prettify.js"></script>
940
- <script>
941
- window.onload = function () {
942
- prettyPrint();
943
- };
944
- </script>
945
- <script src="../../../../sorter.js"></script>
946
- <script src="../../../../block-navigation.js"></script>
947
- </body>
948
- </html>
949
-