@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,757 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for plugin-auth/api/model/user.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/model</a> user.js</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">93.75% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>210/224</span>
29
- </div>
30
-
31
-
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">78.84% </span>
34
- <span class="quiet">Branches</span>
35
- <span class='fraction'>41/52</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'>10/10</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">93.75% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>210/224</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></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
291
- <span class="cline-any cline-yes">1x</span>
292
- <span class="cline-any cline-yes">1x</span>
293
- <span class="cline-any cline-yes">1x</span>
294
- <span class="cline-any cline-yes">1x</span>
295
- <span class="cline-any cline-yes">1x</span>
296
- <span class="cline-any cline-yes">1x</span>
297
- <span class="cline-any cline-yes">1x</span>
298
- <span class="cline-any cline-yes">1x</span>
299
- <span class="cline-any cline-yes">1x</span>
300
- <span class="cline-any cline-yes">19x</span>
301
- <span class="cline-any cline-yes">19x</span>
302
- <span class="cline-any cline-yes">19x</span>
303
- <span class="cline-any cline-yes">19x</span>
304
- <span class="cline-any cline-yes">19x</span>
305
- <span class="cline-any cline-yes">19x</span>
306
- <span class="cline-any cline-yes">19x</span>
307
- <span class="cline-any cline-yes">19x</span>
308
- <span class="cline-any cline-yes">19x</span>
309
- <span class="cline-any cline-yes">19x</span>
310
- <span class="cline-any cline-yes">19x</span>
311
- <span class="cline-any cline-yes">19x</span>
312
- <span class="cline-any cline-yes">19x</span>
313
- <span class="cline-any cline-yes">19x</span>
314
- <span class="cline-any cline-yes">19x</span>
315
- <span class="cline-any cline-yes">19x</span>
316
- <span class="cline-any cline-yes">19x</span>
317
- <span class="cline-any cline-yes">19x</span>
318
- <span class="cline-any cline-yes">19x</span>
319
- <span class="cline-any cline-yes">19x</span>
320
- <span class="cline-any cline-yes">19x</span>
321
- <span class="cline-any cline-yes">19x</span>
322
- <span class="cline-any cline-yes">19x</span>
323
- <span class="cline-any cline-yes">19x</span>
324
- <span class="cline-any cline-yes">19x</span>
325
- <span class="cline-any cline-yes">19x</span>
326
- <span class="cline-any cline-yes">35x</span>
327
- <span class="cline-any cline-yes">35x</span>
328
- <span class="cline-any cline-yes">35x</span>
329
- <span class="cline-any cline-yes">35x</span>
330
- <span class="cline-any cline-yes">35x</span>
331
- <span class="cline-any cline-yes">33x</span>
332
- <span class="cline-any cline-yes">35x</span>
333
- <span class="cline-any cline-yes">35x</span>
334
- <span class="cline-any cline-yes">35x</span>
335
- <span class="cline-any cline-yes">12x</span>
336
- <span class="cline-any cline-yes">12x</span>
337
- <span class="cline-any cline-yes">12x</span>
338
- <span class="cline-any cline-no">&nbsp;</span>
339
- <span class="cline-any cline-no">&nbsp;</span>
340
- <span class="cline-any cline-yes">35x</span>
341
- <span class="cline-any cline-yes">35x</span>
342
- <span class="cline-any cline-yes">35x</span>
343
- <span class="cline-any cline-yes">35x</span>
344
- <span class="cline-any cline-yes">19x</span>
345
- <span class="cline-any cline-yes">19x</span>
346
- <span class="cline-any cline-yes">19x</span>
347
- <span class="cline-any cline-yes">35x</span>
348
- <span class="cline-any cline-yes">23x</span>
349
- <span class="cline-any cline-yes">23x</span>
350
- <span class="cline-any cline-yes">35x</span>
351
- <span class="cline-any cline-yes">35x</span>
352
- <span class="cline-any cline-yes">19x</span>
353
- <span class="cline-any cline-yes">19x</span>
354
- <span class="cline-any cline-yes">19x</span>
355
- <span class="cline-any cline-yes">6x</span>
356
- <span class="cline-any cline-yes">6x</span>
357
- <span class="cline-any cline-yes">6x</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">74x</span>
370
- <span class="cline-any cline-yes">74x</span>
371
- <span class="cline-any cline-yes">1x</span>
372
- <span class="cline-any cline-yes">1x</span>
373
- <span class="cline-any cline-yes">73x</span>
374
- <span class="cline-any cline-yes">74x</span>
375
- <span class="cline-any cline-yes">24x</span>
376
- <span class="cline-any cline-yes">24x</span>
377
- <span class="cline-any cline-yes">24x</span>
378
- <span class="cline-any cline-yes">49x</span>
379
- <span class="cline-any cline-yes">49x</span>
380
- <span class="cline-any cline-yes">74x</span>
381
- <span class="cline-any cline-yes">74x</span>
382
- <span class="cline-any cline-yes">74x</span>
383
- <span class="cline-any cline-yes">74x</span>
384
- <span class="cline-any cline-yes">18x</span>
385
- <span class="cline-any cline-yes">74x</span>
386
- <span class="cline-any cline-yes">31x</span>
387
- <span class="cline-any cline-yes">31x</span>
388
- <span class="cline-any cline-yes">49x</span>
389
- <span class="cline-any cline-yes">74x</span>
390
- <span class="cline-any cline-yes">74x</span>
391
- <span class="cline-any cline-no">&nbsp;</span>
392
- <span class="cline-any cline-no">&nbsp;</span>
393
- <span class="cline-any cline-no">&nbsp;</span>
394
- <span class="cline-any cline-no">&nbsp;</span>
395
- <span class="cline-any cline-no">&nbsp;</span>
396
- <span class="cline-any cline-no">&nbsp;</span>
397
- <span class="cline-any cline-yes">74x</span>
398
- <span class="cline-any cline-yes">74x</span>
399
- <span class="cline-any cline-yes">49x</span>
400
- <span class="cline-any cline-yes">49x</span>
401
- <span class="cline-any cline-yes">49x</span>
402
- <span class="cline-any cline-yes">49x</span>
403
- <span class="cline-any cline-yes">49x</span>
404
- <span class="cline-any cline-yes">49x</span>
405
- <span class="cline-any cline-no">&nbsp;</span>
406
- <span class="cline-any cline-yes">49x</span>
407
- <span class="cline-any cline-yes">49x</span>
408
- <span class="cline-any cline-yes">49x</span>
409
- <span class="cline-any cline-yes">49x</span>
410
- <span class="cline-any cline-yes">74x</span>
411
- <span class="cline-any cline-yes">74x</span>
412
- <span class="cline-any cline-no">&nbsp;</span>
413
- <span class="cline-any cline-yes">74x</span>
414
- <span class="cline-any cline-yes">74x</span>
415
- <span class="cline-any cline-yes">74x</span>
416
- <span class="cline-any cline-yes">74x</span>
417
- <span class="cline-any cline-yes">74x</span>
418
- <span class="cline-any cline-yes">74x</span>
419
- <span class="cline-any cline-yes">74x</span>
420
- <span class="cline-any cline-yes">74x</span>
421
- <span class="cline-any cline-yes">74x</span>
422
- <span class="cline-any cline-yes">122x</span>
423
- <span class="cline-any cline-yes">122x</span>
424
- <span class="cline-any cline-yes">122x</span>
425
- <span class="cline-any cline-yes">91x</span>
426
- <span class="cline-any cline-yes">91x</span>
427
- <span class="cline-any cline-yes">91x</span>
428
- <span class="cline-any cline-yes">42x</span>
429
- <span class="cline-any cline-yes">42x</span>
430
- <span class="cline-any cline-yes">42x</span>
431
- <span class="cline-any cline-yes">42x</span>
432
- <span class="cline-any cline-yes">42x</span>
433
- <span class="cline-any cline-yes">42x</span>
434
- <span class="cline-any cline-yes">42x</span>
435
- <span class="cline-any cline-yes">42x</span>
436
- <span class="cline-any cline-yes">42x</span>
437
- <span class="cline-any cline-yes">42x</span>
438
- <span class="cline-any cline-yes">42x</span>
439
- <span class="cline-any cline-yes">42x</span>
440
- <span class="cline-any cline-no">&nbsp;</span>
441
- <span class="cline-any cline-no">&nbsp;</span>
442
- <span class="cline-any cline-yes">42x</span>
443
- <span class="cline-any cline-yes">42x</span>
444
- <span class="cline-any cline-yes">42x</span>
445
- <span class="cline-any cline-yes">42x</span>
446
- <span class="cline-any cline-yes">91x</span>
447
- <span class="cline-any cline-yes">80x</span>
448
- <span class="cline-any cline-yes">80x</span>
449
- <span class="cline-any cline-yes">122x</span>
450
- <span class="cline-any cline-yes">74x</span>
451
- <span class="cline-any cline-yes">74x</span>
452
- <span class="cline-any cline-yes">74x</span>
453
- <span class="cline-any cline-yes">74x</span>
454
- <span class="cline-any cline-yes">74x</span>
455
- <span class="cline-any cline-yes">74x</span>
456
- <span class="cline-any cline-yes">74x</span>
457
- <span class="cline-any cline-yes">74x</span>
458
- <span class="cline-any cline-yes">74x</span>
459
- <span class="cline-any cline-yes">31x</span>
460
- <span class="cline-any cline-yes">31x</span>
461
- <span class="cline-any cline-no">&nbsp;</span>
462
- <span class="cline-any cline-yes">31x</span>
463
- <span class="cline-any cline-yes">31x</span>
464
- <span class="cline-any cline-yes">31x</span>
465
- <span class="cline-any cline-yes">31x</span>
466
- <span class="cline-any cline-yes">31x</span>
467
- <span class="cline-any cline-yes">74x</span>
468
- <span class="cline-any cline-yes">74x</span>
469
- <span class="cline-any cline-yes">74x</span>
470
- <span class="cline-any cline-yes">74x</span>
471
- <span class="cline-any cline-yes">74x</span>
472
- <span class="cline-any cline-yes">74x</span>
473
- <span class="cline-any cline-yes">74x</span>
474
- <span class="cline-any cline-yes">74x</span>
475
- <span class="cline-any cline-yes">31x</span>
476
- <span class="cline-any cline-yes">31x</span>
477
- <span class="cline-any cline-no">&nbsp;</span>
478
- <span class="cline-any cline-yes">31x</span>
479
- <span class="cline-any cline-yes">31x</span>
480
- <span class="cline-any cline-yes">31x</span>
481
- <span class="cline-any cline-yes">31x</span>
482
- <span class="cline-any cline-yes">31x</span>
483
- <span class="cline-any cline-yes">19x</span>
484
- <span class="cline-any cline-yes">19x</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">25x</span>
493
- <span class="cline-any cline-yes">25x</span>
494
- <span class="cline-any cline-yes">25x</span>
495
- <span class="cline-any cline-yes">25x</span>
496
- <span class="cline-any cline-yes">25x</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">19x</span>
503
- <span class="cline-any cline-yes">19x</span>
504
- <span class="cline-any cline-yes">19x</span>
505
- <span class="cline-any cline-yes">19x</span>
506
- <span class="cline-any cline-yes">19x</span>
507
- <span class="cline-any cline-yes">14x</span>
508
- <span class="cline-any cline-yes">14x</span>
509
- <span class="cline-any cline-yes">14x</span>
510
- <span class="cline-any cline-yes">19x</span>
511
- <span class="cline-any cline-yes">19x</span>
512
- <span class="cline-any cline-yes">19x</span>
513
- <span class="cline-any cline-yes">1x</span>
514
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">"use strict";
515
- &nbsp;
516
- const crypto = require( "crypto" );
517
- &nbsp;
518
- /**
519
- * Defines user model.
520
- *
521
- * @returns {Hitchy.Plugin.Odem.ModelSchema} definition of user model
522
- */
523
- module.exports = function() {
524
- const api = this;
525
- const { services, models } = api.runtime;
526
- &nbsp;
527
- /**
528
- * Implements model of a user suitable for authenticating as.
529
- *
530
- * @property {string} name unique name of user
531
- * @property {string} role name of user's role (user-role relationship is 1:n)
532
- * @property {string} password hash of user's password required for authenticating as
533
- * @property {string} strategy name of passport strategy used for authentication
534
- * @property {string} strategyData additional information specific to strategy used
535
- *
536
- * @name Hitchy.Plugin.Auth.User
537
- */
538
- return {
539
- props: {
540
- name: {
541
- required: true,
542
- unique: true,
543
- },
544
- password: {},
545
- strategy: {},
546
- strategyData: {},
547
- },
548
- hooks: {
549
- afterValidate( errors ) {
550
- if ( !errors.length ) {
551
- const strategy = this.strategy || services.AuthenticationStrategies.defaultStrategy();
552
- &nbsp;
553
- switch ( strategy ) {
554
- case "local" :
555
- if ( this.password ) break;
556
- &nbsp;
557
- // falls through
558
- default :
559
- if ( !api.config.auth.strategies[strategy].passwordRequired <span class="branch-0 cbranch-no" title="branch not covered" >|| this.password </span>) {
560
- break;
561
- }
562
- <span class="cstat-no" title="statement not covered" ><span class="branch-0 cbranch-no" title="branch not covered" ></span></span>
563
- <span class="cstat-no" title="statement not covered" > errors.push( new TypeError( "password required" ) );</span>
564
- }
565
- }
566
- &nbsp;
567
- return errors;
568
- },
569
- &nbsp;
570
- async beforeSave( existsAlready, record ) {
571
- if ( record.password ) {
572
- record.password = await this.hashPassword( record.password ); // eslint-disable-line no-param-reassign
573
- }
574
- &nbsp;
575
- return record;
576
- },
577
- &nbsp;
578
- async afterRemove() {
579
- const associations = await models.UserToRole.find( { eq: { name: "user", value: this.$uuid } } );
580
- &nbsp;
581
- await Promise.all( associations.map( association =&gt; association.remove() ) );
582
- },
583
- },
584
- methods: {
585
- /**
586
- * Derives salted hash from provided password.
587
- *
588
- * @param {Buffer|string} cleartext cleartext password to be hashed
589
- * @param {Buffer|string} previous previously derived hash containing salt to use again for comparing results
590
- * @returns {Promise&lt;string&gt;} promise for salted hash of provided cleartext password
591
- */
592
- async hashPassword( cleartext, previous = null ) {
593
- const normalized = Buffer.isBuffer( cleartext ) <span class="branch-0 cbranch-no" title="branch not covered" >? cleartext.toString( "utf8" ) </span>: typeof cleartext === "string" ? cleartext : null;
594
- if ( !normalized ) {
595
- throw new TypeError( "missing or invalid cleartext password to be hashed" );
596
- }
597
- &nbsp;
598
- if ( parseHashed( cleartext ) ) {
599
- // `cleartext` is actually some previously derived hash already -&gt; pass
600
- return cleartext;
601
- }
602
- &nbsp;
603
- const parsedPrevious = parseHashed( previous );
604
- const algorithmName = parsedPrevious &amp;&amp; parsedPrevious.algorithm;
605
- let salt;
606
- &nbsp;
607
- if ( parsedPrevious &amp;&amp; parsedPrevious.salt ) {
608
- salt = parsedPrevious.salt;
609
- } else {
610
- salt = await randomOctets( await randomNumber( 16, 32 ) );
611
- }
612
- &nbsp;
613
- switch ( algorithmName || "SCRYPT" ) {
614
- <span class="branch-0 cbranch-no" title="branch not covered" > case "SSHA512" : {</span>
615
- <span class="cstat-no" title="statement not covered" > const hash = crypto.createHash( "SHA512" );</span>
616
- <span class="cstat-no" title="statement not covered" > hash.update( normalized );</span>
617
- <span class="cstat-no" title="statement not covered" > hash.update( salt );</span>
618
- <span class="cstat-no" title="statement not covered" ></span>
619
- <span class="cstat-no" title="statement not covered" > return "{SSHA512}" + Buffer.concat( [ hash.digest(), salt ] ).toString( "base64" );</span>
620
- <span class="cstat-no" title="statement not covered" > }</span>
621
- &nbsp;
622
- case "SCRYPT" :
623
- return await new Promise( ( resolve, reject ) =&gt; crypto.scrypt( normalized, salt, 64, {
624
- cost: 16384,
625
- blockSize: 8,
626
- parallelization: 1,
627
- }, ( error, hash ) =&gt; {
628
- if ( error ) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
629
- <span class="cstat-no" title="statement not covered" > reject( error );</span>
630
- } else {
631
- resolve( "{SCRYPT}" + Buffer.concat( [ hash, salt ] ).toString( "base64" ) );
632
- }
633
- } ) );
634
- &nbsp;
635
- <span class="branch-0 cbranch-no" title="branch not covered" > default :</span>
636
- <span class="cstat-no" title="statement not covered" > throw new TypeError( `unsupported keyword hashing algorithm: ${algorithmName}` );</span>
637
- }
638
- &nbsp;
639
- /**
640
- * Extracts elements of provided hash.
641
- *
642
- * @param {string|Buffer} input some hash to be parsed
643
- * @returns {object} extracted elements of provided hash, nullish if extraction failed
644
- */
645
- function parseHashed( input ) {
646
- const _input = Buffer.isBuffer( input ) <span class="branch-0 cbranch-no" title="branch not covered" >? input.toString( "utf8" ) </span>: typeof input === "string" ? input : null;
647
- &nbsp;
648
- if ( _input ) {
649
- const match = /^{([a-z0-9]+)}/i.exec( _input );
650
- &nbsp;
651
- if ( match ) {
652
- const algorithm = match[1].toUpperCase();
653
- const raw = Buffer.from( _input.slice( algorithm.length + 2 ), "base64" );
654
- let hash, salt; // eslint-disable-line no-shadow
655
- &nbsp;
656
- switch ( algorithm ) {
657
- <span class="branch-0 cbranch-no" title="branch not covered" > case "SSHA512" :</span>
658
- case "SCRYPT" :
659
- hash = raw.slice( 0, 64 );
660
- salt = raw.slice( 64 );
661
- break;
662
- &nbsp;
663
- <span class="branch-0 cbranch-no" title="branch not covered" > default :</span>
664
- <span class="cstat-no" title="statement not covered" > hash = raw;</span>
665
- <span class="cstat-no" title="statement not covered" > salt = null;</span>
666
- }
667
- &nbsp;
668
- return { algorithm, raw, hash, salt, compiled: `{${algorithm}` + raw.toString( "base64" ) };
669
- }
670
- }
671
- &nbsp;
672
- return null;
673
- }
674
- &nbsp;
675
- /**
676
- * Promises random integer in selected range.
677
- *
678
- * @param {number} min minimum value (inclusive)
679
- * @param {number} max maximum value (exclusive)
680
- * @returns {Promise&lt;number&gt;} promise for random integer in selected range
681
- */
682
- function randomNumber( min, max ) {
683
- return new Promise( ( resolve, reject ) =&gt; crypto.randomInt( min, max, ( error, number ) =&gt; {
684
- if ( error ) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
685
- <span class="cstat-no" title="statement not covered" > reject( error );</span>
686
- } else {
687
- resolve( number );
688
- }
689
- } ) );
690
- }
691
- &nbsp;
692
- /**
693
- * Promises selected number of octets with random values.
694
- *
695
- * @param {number} size number of octets to generate
696
- * @returns {Promise&lt;Buffer&gt;} promise for selected number of random octets
697
- */
698
- function randomOctets( size ) {
699
- return new Promise( ( resolve, reject ) =&gt; crypto.randomBytes( size, ( error, octets ) =&gt; {
700
- if ( error ) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
701
- <span class="cstat-no" title="statement not covered" > reject( error );</span>
702
- } else {
703
- resolve( octets );
704
- }
705
- } ) );
706
- }
707
- },
708
- &nbsp;
709
- /**
710
- * Derives and saves salted hash from provided password.
711
- *
712
- * @param {string} password cleartext password to be hashed and saved
713
- * @return {Promise&lt;string&gt;} promises derived hash set as password
714
- */
715
- async setPassword( password ) {
716
- const hashed = await this.hashPassword( password );
717
- &nbsp;
718
- this.password = hashed;
719
- &nbsp;
720
- return hashed;
721
- },
722
- &nbsp;
723
- /**
724
- * Derives and compares salted hash from provided password with
725
- * saved password.
726
- *
727
- * @param {string} password cleartext password to be hashed and verified with saved one
728
- * @return {Promise&lt;boolean&gt;} promises true if password hashes match
729
- */
730
- async verifyPassword( password ) {
731
- await this.load();
732
- &nbsp;
733
- return this.password === await this.hashPassword( password, this.password );
734
- },
735
- },
736
- };
737
- };
738
- &nbsp;</pre></td></tr></table></pre>
739
-
740
- <div class='push'></div><!-- for sticky footer -->
741
- </div><!-- /wrapper -->
742
- <div class='footer quiet pad2 space-top1 center small'>
743
- Code coverage generated by
744
- <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
745
- at Mon May 30 2022 17:10:50 GMT+0200 (Mitteleuropäische Sommerzeit)
746
- </div>
747
- <script src="../../../prettify.js"></script>
748
- <script>
749
- window.onload = function () {
750
- prettyPrint();
751
- };
752
- </script>
753
- <script src="../../../sorter.js"></script>
754
- <script src="../../../block-navigation.js"></script>
755
- </body>
756
- </html>
757
-