@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,988 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for plugin-auth/api/service/authorization/tree.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> tree.js</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">87.04% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>262/301</span>
29
- </div>
30
-
31
-
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">85.71% </span>
34
- <span class="quiet">Branches</span>
35
- <span class='fraction'>48/56</span>
36
- </div>
37
-
38
-
39
- <div class='fl pad1y space-right2'>
40
- <span class="strong">100% </span>
41
- <span class="quiet">Functions</span>
42
- <span class='fraction'>13/13</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">87.04% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>262/301</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>
355
- <a name='L290'></a><a href='#L290'>290</a>
356
- <a name='L291'></a><a href='#L291'>291</a>
357
- <a name='L292'></a><a href='#L292'>292</a>
358
- <a name='L293'></a><a href='#L293'>293</a>
359
- <a name='L294'></a><a href='#L294'>294</a>
360
- <a name='L295'></a><a href='#L295'>295</a>
361
- <a name='L296'></a><a href='#L296'>296</a>
362
- <a name='L297'></a><a href='#L297'>297</a>
363
- <a name='L298'></a><a href='#L298'>298</a>
364
- <a name='L299'></a><a href='#L299'>299</a>
365
- <a name='L300'></a><a href='#L300'>300</a>
366
- <a name='L301'></a><a href='#L301'>301</a>
367
- <a name='L302'></a><a href='#L302'>302</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
368
- <span class="cline-any cline-yes">1x</span>
369
- <span class="cline-any cline-yes">1x</span>
370
- <span class="cline-any cline-yes">19x</span>
371
- <span class="cline-any cline-yes">19x</span>
372
- <span class="cline-any cline-yes">19x</span>
373
- <span class="cline-any cline-yes">19x</span>
374
- <span class="cline-any cline-yes">19x</span>
375
- <span class="cline-any cline-yes">19x</span>
376
- <span class="cline-any cline-yes">19x</span>
377
- <span class="cline-any cline-yes">19x</span>
378
- <span class="cline-any cline-yes">19x</span>
379
- <span class="cline-any cline-yes">19x</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">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">112x</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">112x</span>
396
- <span class="cline-any cline-yes">112x</span>
397
- <span class="cline-any cline-yes">112x</span>
398
- <span class="cline-any cline-yes">19x</span>
399
- <span class="cline-any cline-yes">19x</span>
400
- <span class="cline-any cline-yes">19x</span>
401
- <span class="cline-any cline-yes">19x</span>
402
- <span class="cline-any cline-yes">19x</span>
403
- <span class="cline-any cline-yes">19x</span>
404
- <span class="cline-any cline-yes">19x</span>
405
- <span class="cline-any cline-yes">19x</span>
406
- <span class="cline-any cline-yes">19x</span>
407
- <span class="cline-any cline-yes">19x</span>
408
- <span class="cline-any cline-yes">19x</span>
409
- <span class="cline-any cline-yes">19x</span>
410
- <span class="cline-any cline-yes">19x</span>
411
- <span class="cline-any cline-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">337x</span>
417
- <span class="cline-any cline-no">&nbsp;</span>
418
- <span class="cline-any cline-no">&nbsp;</span>
419
- <span class="cline-any cline-yes">337x</span>
420
- <span class="cline-any cline-yes">337x</span>
421
- <span class="cline-any cline-yes">337x</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">19x</span>
428
- <span class="cline-any cline-yes">19x</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">337x</span>
434
- <span class="cline-any cline-yes">337x</span>
435
- <span class="cline-any cline-yes">337x</span>
436
- <span class="cline-any cline-yes">337x</span>
437
- <span class="cline-any cline-yes">832x</span>
438
- <span class="cline-any cline-yes">832x</span>
439
- <span class="cline-any cline-yes">832x</span>
440
- <span class="cline-any cline-yes">832x</span>
441
- <span class="cline-any cline-yes">832x</span>
442
- <span class="cline-any cline-yes">94x</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-yes">94x</span>
446
- <span class="cline-any cline-yes">832x</span>
447
- <span class="cline-any cline-yes">331x</span>
448
- <span class="cline-any cline-yes">331x</span>
449
- <span class="cline-any cline-yes">337x</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">42x</span>
458
- <span class="cline-any cline-yes">42x</span>
459
- <span class="cline-any cline-yes">42x</span>
460
- <span class="cline-any cline-yes">42x</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">19x</span>
464
- <span class="cline-any cline-yes">19x</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">105x</span>
470
- <span class="cline-any cline-yes">105x</span>
471
- <span class="cline-any cline-yes">105x</span>
472
- <span class="cline-any cline-yes">105x</span>
473
- <span class="cline-any cline-yes">105x</span>
474
- <span class="cline-any cline-yes">105x</span>
475
- <span class="cline-any cline-yes">105x</span>
476
- <span class="cline-any cline-yes">52x</span>
477
- <span class="cline-any cline-yes">52x</span>
478
- <span class="cline-any cline-yes">105x</span>
479
- <span class="cline-any cline-yes">105x</span>
480
- <span class="cline-any cline-yes">53x</span>
481
- <span class="cline-any cline-yes">53x</span>
482
- <span class="cline-any cline-yes">105x</span>
483
- <span class="cline-any cline-yes">105x</span>
484
- <span class="cline-any cline-yes">105x</span>
485
- <span class="cline-any cline-yes">19x</span>
486
- <span class="cline-any cline-yes">19x</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">1x</span>
494
- <span class="cline-any cline-yes">1x</span>
495
- <span class="cline-any cline-yes">1x</span>
496
- <span class="cline-any cline-yes">1x</span>
497
- <span class="cline-any cline-yes">1x</span>
498
- <span class="cline-any cline-yes">1x</span>
499
- <span class="cline-any cline-yes">1x</span>
500
- <span class="cline-any cline-yes">1x</span>
501
- <span class="cline-any cline-no">&nbsp;</span>
502
- <span class="cline-any cline-no">&nbsp;</span>
503
- <span class="cline-any cline-yes">1x</span>
504
- <span class="cline-any cline-yes">1x</span>
505
- <span class="cline-any cline-yes">1x</span>
506
- <span class="cline-any cline-yes">1x</span>
507
- <span class="cline-any cline-yes">1x</span>
508
- <span class="cline-any cline-yes">1x</span>
509
- <span class="cline-any cline-yes">1x</span>
510
- <span class="cline-any cline-yes">1x</span>
511
- <span class="cline-any cline-yes">1x</span>
512
- <span class="cline-any cline-yes">1x</span>
513
- <span class="cline-any cline-yes">1x</span>
514
- <span class="cline-any cline-yes">1x</span>
515
- <span class="cline-any cline-yes">19x</span>
516
- <span class="cline-any cline-yes">19x</span>
517
- <span class="cline-any cline-yes">19x</span>
518
- <span class="cline-any cline-yes">19x</span>
519
- <span class="cline-any cline-yes">19x</span>
520
- <span class="cline-any cline-yes">19x</span>
521
- <span class="cline-any cline-yes">19x</span>
522
- <span class="cline-any cline-yes">19x</span>
523
- <span class="cline-any cline-yes">19x</span>
524
- <span class="cline-any cline-yes">19x</span>
525
- <span class="cline-any cline-yes">19x</span>
526
- <span class="cline-any cline-yes">19x</span>
527
- <span class="cline-any cline-yes">48x</span>
528
- <span class="cline-any cline-yes">48x</span>
529
- <span class="cline-any cline-yes">48x</span>
530
- <span class="cline-any cline-yes">48x</span>
531
- <span class="cline-any cline-yes">94x</span>
532
- <span class="cline-any cline-yes">94x</span>
533
- <span class="cline-any cline-yes">94x</span>
534
- <span class="cline-any cline-yes">18x</span>
535
- <span class="cline-any cline-yes">18x</span>
536
- <span class="cline-any cline-yes">48x</span>
537
- <span class="cline-any cline-yes">48x</span>
538
- <span class="cline-any cline-yes">6x</span>
539
- <span class="cline-any cline-yes">6x</span>
540
- <span class="cline-any cline-yes">6x</span>
541
- <span class="cline-any cline-yes">42x</span>
542
- <span class="cline-any cline-yes">48x</span>
543
- <span class="cline-any cline-yes">7x</span>
544
- <span class="cline-any cline-yes">7x</span>
545
- <span class="cline-any cline-yes">35x</span>
546
- <span class="cline-any cline-yes">48x</span>
547
- <span class="cline-any cline-yes">9x</span>
548
- <span class="cline-any cline-yes">9x</span>
549
- <span class="cline-any cline-yes">26x</span>
550
- <span class="cline-any cline-yes">26x</span>
551
- <span class="cline-any cline-yes">48x</span>
552
- <span class="cline-any cline-yes">19x</span>
553
- <span class="cline-any cline-yes">19x</span>
554
- <span class="cline-any cline-yes">19x</span>
555
- <span class="cline-any cline-yes">19x</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">3x</span>
562
- <span class="cline-any cline-yes">2x</span>
563
- <span class="cline-any cline-yes">2x</span>
564
- <span class="cline-any cline-yes">2x</span>
565
- <span class="cline-any cline-yes">2x</span>
566
- <span class="cline-any cline-yes">2x</span>
567
- <span class="cline-any cline-yes">3x</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">18x</span>
576
- <span class="cline-any cline-yes">18x</span>
577
- <span class="cline-any cline-yes">18x</span>
578
- <span class="cline-any cline-no">&nbsp;</span>
579
- <span class="cline-any cline-no">&nbsp;</span>
580
- <span class="cline-any cline-no">&nbsp;</span>
581
- <span class="cline-any cline-no">&nbsp;</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-no">&nbsp;</span>
586
- <span class="cline-any cline-no">&nbsp;</span>
587
- <span class="cline-any cline-no">&nbsp;</span>
588
- <span class="cline-any cline-no">&nbsp;</span>
589
- <span class="cline-any cline-no">&nbsp;</span>
590
- <span class="cline-any cline-no">&nbsp;</span>
591
- <span class="cline-any cline-no">&nbsp;</span>
592
- <span class="cline-any cline-no">&nbsp;</span>
593
- <span class="cline-any cline-no">&nbsp;</span>
594
- <span class="cline-any cline-no">&nbsp;</span>
595
- <span class="cline-any cline-no">&nbsp;</span>
596
- <span class="cline-any cline-no">&nbsp;</span>
597
- <span class="cline-any cline-no">&nbsp;</span>
598
- <span class="cline-any cline-no">&nbsp;</span>
599
- <span class="cline-any cline-no">&nbsp;</span>
600
- <span class="cline-any cline-no">&nbsp;</span>
601
- <span class="cline-any cline-no">&nbsp;</span>
602
- <span class="cline-any cline-no">&nbsp;</span>
603
- <span class="cline-any cline-no">&nbsp;</span>
604
- <span class="cline-any cline-no">&nbsp;</span>
605
- <span class="cline-any cline-no">&nbsp;</span>
606
- <span class="cline-any cline-no">&nbsp;</span>
607
- <span class="cline-any cline-no">&nbsp;</span>
608
- <span class="cline-any cline-no">&nbsp;</span>
609
- <span class="cline-any cline-yes">18x</span>
610
- <span class="cline-any cline-yes">19x</span>
611
- <span class="cline-any cline-yes">19x</span>
612
- <span class="cline-any cline-yes">19x</span>
613
- <span class="cline-any cline-yes">19x</span>
614
- <span class="cline-any cline-yes">19x</span>
615
- <span class="cline-any cline-yes">19x</span>
616
- <span class="cline-any cline-yes">19x</span>
617
- <span class="cline-any cline-yes">19x</span>
618
- <span class="cline-any cline-yes">46x</span>
619
- <span class="cline-any cline-yes">46x</span>
620
- <span class="cline-any cline-yes">46x</span>
621
- <span class="cline-any cline-yes">46x</span>
622
- <span class="cline-any cline-yes">46x</span>
623
- <span class="cline-any cline-yes">83x</span>
624
- <span class="cline-any cline-yes">83x</span>
625
- <span class="cline-any cline-yes">83x</span>
626
- <span class="cline-any cline-yes">55x</span>
627
- <span class="cline-any cline-yes">55x</span>
628
- <span class="cline-any cline-yes">55x</span>
629
- <span class="cline-any cline-yes">55x</span>
630
- <span class="cline-any cline-yes">55x</span>
631
- <span class="cline-any cline-yes">330x</span>
632
- <span class="cline-any cline-yes">330x</span>
633
- <span class="cline-any cline-yes">275x</span>
634
- <span class="cline-any cline-yes">275x</span>
635
- <span class="cline-any cline-yes">55x</span>
636
- <span class="cline-any cline-yes">55x</span>
637
- <span class="cline-any cline-yes">55x</span>
638
- <span class="cline-any cline-yes">330x</span>
639
- <span class="cline-any cline-yes">91x</span>
640
- <span class="cline-any cline-yes">91x</span>
641
- <span class="cline-any cline-yes">91x</span>
642
- <span class="cline-any cline-yes">91x</span>
643
- <span class="cline-any cline-yes">91x</span>
644
- <span class="cline-any cline-yes">91x</span>
645
- <span class="cline-any cline-yes">91x</span>
646
- <span class="cline-any cline-yes">91x</span>
647
- <span class="cline-any cline-yes">91x</span>
648
- <span class="cline-any cline-yes">91x</span>
649
- <span class="cline-any cline-yes">91x</span>
650
- <span class="cline-any cline-yes">91x</span>
651
- <span class="cline-any cline-no">&nbsp;</span>
652
- <span class="cline-any cline-no">&nbsp;</span>
653
- <span class="cline-any cline-yes">91x</span>
654
- <span class="cline-any cline-yes">55x</span>
655
- <span class="cline-any cline-yes">55x</span>
656
- <span class="cline-any cline-yes">55x</span>
657
- <span class="cline-any cline-yes">37x</span>
658
- <span class="cline-any cline-yes">37x</span>
659
- <span class="cline-any cline-yes">55x</span>
660
- <span class="cline-any cline-yes">46x</span>
661
- <span class="cline-any cline-yes">46x</span>
662
- <span class="cline-any cline-yes">46x</span>
663
- <span class="cline-any cline-yes">46x</span>
664
- <span class="cline-any cline-yes">19x</span>
665
- <span class="cline-any cline-yes">19x</span>
666
- <span class="cline-any cline-yes">19x</span>
667
- <span class="cline-any cline-yes">1x</span>
668
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">"use strict";
669
- &nbsp;
670
- module.exports = function() {
671
- const api = this;
672
- const { services, models } = api.runtime;
673
- &nbsp;
674
- const logAlert = api.log( "hitchy:plugin:auth:alert" );
675
- const logDebug = api.log( "hitchy:plugin:auth:debug" );
676
- &nbsp;
677
- let cachedTree;
678
- &nbsp;
679
- /**
680
- * Implements hierarchy of authorization nodes for caching complex
681
- * authorizations rules.
682
- *
683
- * @name AuthorizationTree
684
- */
685
- class AuthorizationTree {
686
- /**
687
- * Fetches root node of current tree used to cache authorizations at
688
- * runtime.
689
- *
690
- * @returns {AuthorizationTree} tree of authorizations
691
- */
692
- static get current() {
693
- if ( !cachedTree ) {
694
- cachedTree = new this();
695
- }
696
- &nbsp;
697
- return cachedTree;
698
- }
699
- &nbsp;
700
- /** */
701
- constructor() {
702
- Object.defineProperties( this, {
703
- node: { value: new services.AuthorizationNode(), configurable: true },
704
- } );
705
- &nbsp;
706
- this._gcCounter = 0;
707
- }
708
- &nbsp;
709
- /**
710
- * Converts provided authorization selector into its sequences of names
711
- * suitable for descending into hierarchy of authorization nodes.
712
- *
713
- * @param {string} selector raw selector addressing node of hierarchy
714
- * @returns {string[]} sequence of segments each naming another child to pick on descending into hierarchy
715
- */
716
- static selectorToSegments( selector ) {
717
- if ( !selector || typeof selector !== "string" || !/^(?:\s*[^.\s]+\s*\.)*\s*[^.\s]+\s*$/.test( selector ) ) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
718
- <span class="cstat-no" title="statement not covered" > throw new TypeError( `invalid authorization selector: ${selector}` );</span>
719
- <span class="cstat-no" title="statement not covered" > }</span>
720
- &nbsp;
721
- return selector.trim().split( /\s*\.\s*/ );
722
- }
723
- &nbsp;
724
- /**
725
- * Descends into current tree's hierarchy looking for the node named by
726
- * provided selector.
727
- *
728
- * @param {string} selector full-stop-separated list of names each selecting another child node
729
- * @param {boolean} addIfMissing true if missing nodes should be added implicitly
730
- * @param {function(AuthorizationNode, string, number, string[]): (false|undefined)} callback function invoked on every node while descending
731
- * @returns {AuthorizationNode} found node, undefined on addressing missing node while disabling implicit addition
732
- */
733
- selectNode( selector, addIfMissing = true, callback = undefined ) {
734
- const segments = this.constructor.selectorToSegments( selector );
735
- let node = this.node;
736
- &nbsp;
737
- for ( let i = 0, length = segments.length; node &amp;&amp; i &lt; length; i++ ) {
738
- const segment = segments[i];
739
- &nbsp;
740
- node = node.getChild( segment, addIfMissing );
741
- &nbsp;
742
- if ( node &amp;&amp; typeof callback === "function" ) {
743
- if ( callback( node, segment, i, segments ) === false ) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
744
- <span class="cstat-no" title="statement not covered" > break;</span>
745
- <span class="cstat-no" title="statement not covered" > }</span>
746
- }
747
- }
748
- &nbsp;
749
- return node;
750
- }
751
- &nbsp;
752
- /**
753
- * Drops all nodes of tree implicitly removing any previously added rule.
754
- *
755
- * @returns {AuthorizationTree} fluent interface
756
- */
757
- clear() {
758
- this.node.clear();
759
- &nbsp;
760
- return this;
761
- }
762
- &nbsp;
763
- /**
764
- * Adds authorization rule to this tree.
765
- *
766
- * @param {AuthorizationRule} rule rule to be added
767
- * @returns {AuthorizationTree} fluent interface
768
- */
769
- addRule( rule ) {
770
- const { selector, role, user, accept } = rule;
771
- &nbsp;
772
- logDebug( "adding authorization rule", { selector, role, user, accept } );
773
- &nbsp;
774
- const node = this.selectNode( selector );
775
- &nbsp;
776
- if ( role ) {
777
- node.addRole( role, accept );
778
- }
779
- &nbsp;
780
- if ( user ) {
781
- node.addUser( user, accept );
782
- }
783
- &nbsp;
784
- return this;
785
- }
786
- &nbsp;
787
- /**
788
- * Removes authorization rule from this tree.
789
- *
790
- * @param {AuthorizationRule} rule rule to be removed
791
- * @returns {AuthorizationTree} fluent interface
792
- */
793
- removeRule( rule ) {
794
- const { selector, role, user, accept } = rule;
795
- &nbsp;
796
- logDebug( "removing authorization rule", { selector, role, user, accept } );
797
- &nbsp;
798
- const node = this.selectNode( selector, false );
799
- &nbsp;
800
- if ( node ) {
801
- if ( role ) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
802
- <span class="cstat-no" title="statement not covered" > node.removeRole( role, accept );</span>
803
- <span class="cstat-no" title="statement not covered" > }</span>
804
- &nbsp;
805
- if ( user ) {
806
- node.removeUser( user, accept );
807
- }
808
- &nbsp;
809
- if ( role || user ) {
810
- this.gc();
811
- }
812
- }
813
- &nbsp;
814
- return this;
815
- }
816
- &nbsp;
817
- /**
818
- * Tests if selected authorization is granted to or revoked from
819
- * provided user(s) and/or role(s).
820
- *
821
- * @param {string} selector selector of authorization, full-stop-separated sequence of names
822
- * @param {string|string[]} user names(s) of zero or more users to check
823
- * @param {string|string[]} role names of zero or more roles to check
824
- * @param {boolean} acceptByDefault fallback result ro return if neither rule is affecting selected user(s) or role(s)
825
- * @returns {boolean} true if authorization is granted to user(s)/role(s), false if it's rejected
826
- */
827
- isAuthorized( selector, user, role, acceptByDefault = false ) {
828
- let result = 0;
829
- &nbsp;
830
- try {
831
- this.selectNode( selector, false, node =&gt; {
832
- const localResult = node.isAuthorized( user, role, acceptByDefault );
833
- &nbsp;
834
- if ( localResult !== 0 ) {
835
- result = localResult;
836
- }
837
- } );
838
- } catch ( cause ) {
839
- logAlert( cause.message );
840
- return false;
841
- }
842
- &nbsp;
843
- if ( result &gt; 0 ) {
844
- return true;
845
- }
846
- &nbsp;
847
- if ( result &lt; 0 ) {
848
- return false;
849
- }
850
- &nbsp;
851
- return Boolean( acceptByDefault );
852
- }
853
- &nbsp;
854
- /**
855
- * Implements occasional garbage collection.
856
- *
857
- * @protected
858
- * @param {boolean} force set true to force garbage collection
859
- * @returns {void}
860
- */
861
- gc( force = false ) {
862
- if ( force || ++this._gcCounter % 100 === 0 ) {
863
- Object.defineProperty( this, "node", {
864
- value: this.node.gc() || new services.AuthorizationNode(),
865
- configurable: true,
866
- } );
867
- }
868
- }
869
- &nbsp;
870
- /**
871
- * Loads authorization rules from database.
872
- *
873
- * @returns {Promise&lt;void&gt;} promises authorization rules loaded from database
874
- */
875
- async loadFromDatabase() {
876
- const entries = await models.AuthorizationRule.list( { loadProperties: true } );
877
- &nbsp;
878
- if ( entries.length &gt; 0 ) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
879
- <span class="cstat-no" title="statement not covered" > const { User, Role } = models;</span>
880
- <span class="cstat-no" title="statement not covered" > const users = {};</span>
881
- <span class="cstat-no" title="statement not covered" > const roles = {};</span>
882
- <span class="cstat-no" title="statement not covered" ></span>
883
- <span class="cstat-no" title="statement not covered" > logDebug( `restoring ${entries.length} authorization rule(s) from database` );</span>
884
- <span class="cstat-no" title="statement not covered" ></span>
885
- <span class="cstat-no" title="statement not covered" > for ( const entry of entries ) {</span>
886
- <span class="cstat-no" title="statement not covered" > const userKey = entry.user ? entry.user.toString( "hex" ) : undefined;</span>
887
- <span class="cstat-no" title="statement not covered" > const roleKey = entry.role ? entry.role.toString( "hex" ) : undefined;</span>
888
- <span class="cstat-no" title="statement not covered" ></span>
889
- <span class="cstat-no" title="statement not covered" > const user = userKey ? users[userKey] || await new User( entry.user ).load() : undefined; // eslint-disable-line no-await-in-loop</span>
890
- <span class="cstat-no" title="statement not covered" > const role = roleKey ? roles[roleKey] || await new Role( entry.role ).load() : undefined; // eslint-disable-line no-await-in-loop</span>
891
- <span class="cstat-no" title="statement not covered" ></span>
892
- <span class="cstat-no" title="statement not covered" > if ( user ) {</span>
893
- <span class="cstat-no" title="statement not covered" > users[userKey] = user;</span>
894
- <span class="cstat-no" title="statement not covered" > }</span>
895
- <span class="cstat-no" title="statement not covered" ></span>
896
- <span class="cstat-no" title="statement not covered" > if ( role ) {</span>
897
- <span class="cstat-no" title="statement not covered" > roles[roleKey] = role;</span>
898
- <span class="cstat-no" title="statement not covered" > }</span>
899
- <span class="cstat-no" title="statement not covered" ></span>
900
- <span class="cstat-no" title="statement not covered" > if ( user || role ) {</span>
901
- <span class="cstat-no" title="statement not covered" > this.addRule( {</span>
902
- <span class="cstat-no" title="statement not covered" > selector: entry.selector,</span>
903
- <span class="cstat-no" title="statement not covered" > role: role ? role.name : undefined,</span>
904
- <span class="cstat-no" title="statement not covered" > user: user ? user.name : undefined,</span>
905
- <span class="cstat-no" title="statement not covered" > accept: entry.accept,</span>
906
- <span class="cstat-no" title="statement not covered" > } );</span>
907
- <span class="cstat-no" title="statement not covered" > }</span>
908
- <span class="cstat-no" title="statement not covered" > }</span>
909
- <span class="cstat-no" title="statement not covered" > }</span>
910
- }
911
- &nbsp;
912
- /**
913
- * Loads authorization rules from configuration.
914
- *
915
- * @param {{authorizations: object}} configuration auth configuration to load pre-defined authorizations from
916
- * @returns {void}
917
- */
918
- loadFromConfiguration( configuration ) {
919
- const { authorizations = {} } = configuration <span class="branch-0 cbranch-no" title="branch not covered" >|| {};</span>
920
- &nbsp;
921
- logDebug( `loading authorization(s) from configuration` );
922
- &nbsp;
923
- const processLevel = ( source, prefix ) =&gt; {
924
- const names = Object.keys( source );
925
- &nbsp;
926
- for ( const name of names ) {
927
- const sanitized = String( name ).trim().replace( /^\.+|\.+$/g, "" );
928
- const path = prefix === "" ? sanitized <span class="branch-0 cbranch-no" title="branch not covered" >: prefix + "." + sanitized;</span>
929
- const value = source[name];
930
- &nbsp;
931
- for ( const key of [ "users", "roles", "grant", "revoke", "people", "" ] ) {
932
- const items = key ? value[key] : value;
933
- if ( items == null ) {
934
- continue;
935
- }
936
- &nbsp;
937
- const list = String( items ).trim().split( /\s*,[,\s]*/ ).filter( i =&gt; i != null &amp;&amp; i !== "" );
938
- &nbsp;
939
- for ( const who of list ) {
940
- const [ all, mode, role, id ] = /^\s*([+-]?)\s*(@?)\s*([^\s@,+-][^\s@,]*)\s*$/.exec( who ) <span class="branch-0 cbranch-no" title="branch not covered" >|| [];</span>
941
- &nbsp;
942
- if ( all ) {
943
- const isGranting = mode ? mode !== "-" : key !== "revoke";
944
- const isRole = role || key === "roles";
945
- &nbsp;
946
- this.addRule( {
947
- selector: path,
948
- accept: isGranting,
949
- [isRole ? "role" : "user"]: id,
950
- } );
951
- }<span class="branch-0 cbranch-no" title="branch not covered" > else {</span>
952
- <span class="cstat-no" title="statement not covered" > logAlert( `invalid user/role selector in ${key || "rule"} on ${name}` );</span>
953
- <span class="cstat-no" title="statement not covered" > }</span>
954
- }
955
- }
956
- &nbsp;
957
- if ( value.sub &amp;&amp; !Array.isArray( value.sub ) ) {
958
- processLevel( value.sub, path );
959
- }
960
- }
961
- };
962
- &nbsp;
963
- processLevel( authorizations, "" );
964
- }
965
- }
966
- &nbsp;
967
- return AuthorizationTree;
968
- };
969
- &nbsp;</pre></td></tr></table></pre>
970
-
971
- <div class='push'></div><!-- for sticky footer -->
972
- </div><!-- /wrapper -->
973
- <div class='footer quiet pad2 space-top1 center small'>
974
- Code coverage generated by
975
- <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
976
- at Mon May 30 2022 17:10:50 GMT+0200 (Mitteleuropäische Sommerzeit)
977
- </div>
978
- <script src="../../../../prettify.js"></script>
979
- <script>
980
- window.onload = function () {
981
- prettyPrint();
982
- };
983
- </script>
984
- <script src="../../../../sorter.js"></script>
985
- <script src="../../../../block-navigation.js"></script>
986
- </body>
987
- </html>
988
-