Update docs.
This commit is contained in:
@@ -78,10 +78,14 @@
|
||||
<a href="#mutableKeyStore">mutableKeyStore</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#sessionLoginCount">sessionLoginCount</a>
|
||||
<a href="#trustedUsers">trustedUsers</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#sessionToken">sessionToken</a>
|
||||
<span class="modifier">Private</span>
|
||||
<a href="#trustedUsersList">trustedUsersList</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#trustedUsersSubject">trustedUsersSubject</a>
|
||||
</li>
|
||||
</ul>
|
||||
</td>
|
||||
@@ -95,16 +99,25 @@
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<ul class="index-list">
|
||||
<li>
|
||||
<a href="#addTrustedUser">addTrustedUser</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#getChallenge">getChallenge</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#getPrivateKey">getPrivateKey</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#getPrivateKeyInfo">getPrivateKeyInfo</a>
|
||||
</li>
|
||||
<li>
|
||||
<span class="modifier">Async</span>
|
||||
<a href="#getPublicKeys">getPublicKeys</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#getSessionToken">getSessionToken</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#getTrustedUsers">getTrustedUsers</a>
|
||||
</li>
|
||||
@@ -115,12 +128,9 @@
|
||||
<span class="modifier">Async</span>
|
||||
<a href="#init">init</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#login">login</a>
|
||||
</li>
|
||||
<li>
|
||||
<span class="modifier">Async</span>
|
||||
<a href="#loginResponse">loginResponse</a>
|
||||
<a href="#login">login</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#loginView">loginView</a>
|
||||
@@ -129,12 +139,15 @@
|
||||
<a href="#logout">logout</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#sendResponse">sendResponse</a>
|
||||
<a href="#sendSignedChallenge">sendSignedChallenge</a>
|
||||
</li>
|
||||
<li>
|
||||
<span class="modifier">Async</span>
|
||||
<a href="#setKey">setKey</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#setSessionToken">setSessionToken</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#setState">setState</a>
|
||||
</li>
|
||||
@@ -161,7 +174,7 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="17" class="link-to-prism">src/app/_services/auth.service.ts:17</a></div>
|
||||
<div class="io-line">Defined in <a href="" data-line="22" class="link-to-prism">src/app/_services/auth.service.ts:22</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -228,6 +241,76 @@
|
||||
<h3 id="methods">
|
||||
Methods
|
||||
</h3>
|
||||
<table class="table table-sm table-bordered">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<a name="addTrustedUser"></a>
|
||||
<span class="name">
|
||||
<b>
|
||||
addTrustedUser
|
||||
</b>
|
||||
<a href="#addTrustedUser"><span class="icon ion-ios-link"></span></a>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<code>addTrustedUser(user: <a href="../interfaces/Staff.html">Staff</a>)</code>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="173"
|
||||
class="link-to-prism">src/app/_services/auth.service.ts:173</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
|
||||
<div class="io-description">
|
||||
<b>Parameters :</b>
|
||||
<table class="params">
|
||||
<thead>
|
||||
<tr>
|
||||
<td>Name</td>
|
||||
<td>Type</td>
|
||||
<td>Optional</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>user</td>
|
||||
<td>
|
||||
<code><a href="../interfaces/Staff.html" target="_self" >Staff</a></code>
|
||||
</td>
|
||||
|
||||
<td>
|
||||
No
|
||||
</td>
|
||||
|
||||
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div>
|
||||
</div>
|
||||
<div class="io-description">
|
||||
<b>Returns : </b> <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code>
|
||||
|
||||
</div>
|
||||
<div class="io-description">
|
||||
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<table class="table table-sm table-bordered">
|
||||
<tbody>
|
||||
<tr>
|
||||
@@ -250,8 +333,8 @@
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="84"
|
||||
class="link-to-prism">src/app/_services/auth.service.ts:84</a></div>
|
||||
<div class="io-line">Defined in <a href="" data-line="85"
|
||||
class="link-to-prism">src/app/_services/auth.service.ts:85</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -260,7 +343,7 @@
|
||||
<td class="col-md-4">
|
||||
|
||||
<div class="io-description">
|
||||
<b>Returns : </b> <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code>
|
||||
<b>Returns : </b> <code>Promise<any></code>
|
||||
|
||||
</div>
|
||||
</td>
|
||||
@@ -289,8 +372,47 @@
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="210"
|
||||
class="link-to-prism">src/app/_services/auth.service.ts:210</a></div>
|
||||
<div class="io-line">Defined in <a href="" data-line="203"
|
||||
class="link-to-prism">src/app/_services/auth.service.ts:203</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
|
||||
<div class="io-description">
|
||||
<b>Returns : </b> <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >any</a></code>
|
||||
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<table class="table table-sm table-bordered">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<a name="getPrivateKeyInfo"></a>
|
||||
<span class="name">
|
||||
<b>
|
||||
getPrivateKeyInfo
|
||||
</b>
|
||||
<a href="#getPrivateKeyInfo"><span class="icon ion-ios-link"></span></a>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<code>getPrivateKeyInfo()</code>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="207"
|
||||
class="link-to-prism">src/app/_services/auth.service.ts:207</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -330,8 +452,8 @@
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="200"
|
||||
class="link-to-prism">src/app/_services/auth.service.ts:200</a></div>
|
||||
<div class="io-line">Defined in <a href="" data-line="191"
|
||||
class="link-to-prism">src/app/_services/auth.service.ts:191</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -347,6 +469,45 @@
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<table class="table table-sm table-bordered">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<a name="getSessionToken"></a>
|
||||
<span class="name">
|
||||
<b>
|
||||
getSessionToken
|
||||
</b>
|
||||
<a href="#getSessionToken"><span class="icon ion-ios-link"></span></a>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<code>getSessionToken()</code>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="39"
|
||||
class="link-to-prism">src/app/_services/auth.service.ts:39</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
|
||||
<div class="io-description">
|
||||
<b>Returns : </b> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
|
||||
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<table class="table table-sm table-bordered">
|
||||
<tbody>
|
||||
<tr>
|
||||
@@ -369,8 +530,8 @@
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="194"
|
||||
class="link-to-prism">src/app/_services/auth.service.ts:194</a></div>
|
||||
<div class="io-line">Defined in <a href="" data-line="185"
|
||||
class="link-to-prism">src/app/_services/auth.service.ts:185</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -379,7 +540,7 @@
|
||||
<td class="col-md-4">
|
||||
|
||||
<div class="io-description">
|
||||
<b>Returns : </b> <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >any</a></code>
|
||||
<b>Returns : </b> <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code>
|
||||
|
||||
</div>
|
||||
</td>
|
||||
@@ -408,8 +569,8 @@
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="42"
|
||||
class="link-to-prism">src/app/_services/auth.service.ts:42</a></div>
|
||||
<div class="io-line">Defined in <a href="" data-line="51"
|
||||
class="link-to-prism">src/app/_services/auth.service.ts:51</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -418,7 +579,7 @@
|
||||
<td class="col-md-4">
|
||||
|
||||
<div class="io-description">
|
||||
<b>Returns : </b> <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code>
|
||||
<b>Returns : </b> <code>Promise<boolean></code>
|
||||
|
||||
</div>
|
||||
</td>
|
||||
@@ -449,8 +610,8 @@
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="27"
|
||||
class="link-to-prism">src/app/_services/auth.service.ts:27</a></div>
|
||||
<div class="io-line">Defined in <a href="" data-line="32"
|
||||
class="link-to-prism">src/app/_services/auth.service.ts:32</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -473,6 +634,7 @@
|
||||
<a name="login"></a>
|
||||
<span class="name">
|
||||
<b>
|
||||
<span class="modifier">Async</span>
|
||||
login
|
||||
</b>
|
||||
<a href="#login"><span class="icon ion-ios-link"></span></a>
|
||||
@@ -481,56 +643,16 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<code>login()</code>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="98"
|
||||
class="link-to-prism">src/app/_services/auth.service.ts:98</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
|
||||
<div class="io-description">
|
||||
<b>Returns : </b> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/boolean" target="_blank" >boolean</a></code>
|
||||
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<table class="table table-sm table-bordered">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<a name="loginResponse"></a>
|
||||
<span class="name">
|
||||
<b>
|
||||
<span class="modifier">Async</span>
|
||||
loginResponse
|
||||
</b>
|
||||
<a href="#loginResponse"><span class="icon ion-ios-link"></span></a>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<span class="modifier-icon icon ion-ios-reset"></span>
|
||||
<code>loginResponse(o: literal type)</code>
|
||||
<code>login()</code>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="116"
|
||||
class="link-to-prism">src/app/_services/auth.service.ts:116</a></div>
|
||||
<div class="io-line">Defined in <a href="" data-line="94"
|
||||
class="link-to-prism">src/app/_services/auth.service.ts:94</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -539,39 +661,8 @@
|
||||
<td class="col-md-4">
|
||||
|
||||
<div class="io-description">
|
||||
<b>Parameters :</b>
|
||||
<table class="params">
|
||||
<thead>
|
||||
<tr>
|
||||
<td>Name</td>
|
||||
<td>Type</td>
|
||||
<td>Optional</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>o</td>
|
||||
<td>
|
||||
<code>literal type</code>
|
||||
</td>
|
||||
<b>Returns : </b> <code>Promise<boolean></code>
|
||||
|
||||
<td>
|
||||
No
|
||||
</td>
|
||||
|
||||
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div>
|
||||
</div>
|
||||
<div class="io-description">
|
||||
<b>Returns : </b> <code>Promise<any></code>
|
||||
|
||||
</div>
|
||||
<div class="io-description">
|
||||
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -599,8 +690,8 @@
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="150"
|
||||
class="link-to-prism">src/app/_services/auth.service.ts:150</a></div>
|
||||
<div class="io-line">Defined in <a href="" data-line="129"
|
||||
class="link-to-prism">src/app/_services/auth.service.ts:129</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -638,8 +729,8 @@
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="188"
|
||||
class="link-to-prism">src/app/_services/auth.service.ts:188</a></div>
|
||||
<div class="io-line">Defined in <a href="" data-line="167"
|
||||
class="link-to-prism">src/app/_services/auth.service.ts:167</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -659,26 +750,26 @@
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<a name="sendResponse"></a>
|
||||
<a name="sendSignedChallenge"></a>
|
||||
<span class="name">
|
||||
<b>
|
||||
sendResponse
|
||||
sendSignedChallenge
|
||||
</b>
|
||||
<a href="#sendResponse"><span class="icon ion-ios-link"></span></a>
|
||||
<a href="#sendSignedChallenge"><span class="icon ion-ios-link"></span></a>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<code>sendResponse(hobaResponseEncoded: <a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank">any</a>)</code>
|
||||
<code>sendSignedChallenge(hobaResponseEncoded: <a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank">any</a>)</code>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="61"
|
||||
class="link-to-prism">src/app/_services/auth.service.ts:61</a></div>
|
||||
<div class="io-line">Defined in <a href="" data-line="73"
|
||||
class="link-to-prism">src/app/_services/auth.service.ts:73</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -715,7 +806,7 @@
|
||||
<div>
|
||||
</div>
|
||||
<div class="io-description">
|
||||
<b>Returns : </b> <code>Promise<boolean></code>
|
||||
<b>Returns : </b> <code>Promise<any></code>
|
||||
|
||||
</div>
|
||||
<div class="io-description">
|
||||
@@ -749,8 +840,8 @@
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="160"
|
||||
class="link-to-prism">src/app/_services/auth.service.ts:160</a></div>
|
||||
<div class="io-line">Defined in <a href="" data-line="139"
|
||||
class="link-to-prism">src/app/_services/auth.service.ts:139</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -800,6 +891,72 @@
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<table class="table table-sm table-bordered">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<a name="setSessionToken"></a>
|
||||
<span class="name">
|
||||
<b>
|
||||
setSessionToken
|
||||
</b>
|
||||
<a href="#setSessionToken"><span class="icon ion-ios-link"></span></a>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<code>setSessionToken(token)</code>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="43"
|
||||
class="link-to-prism">src/app/_services/auth.service.ts:43</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
|
||||
<div class="io-description">
|
||||
<b>Parameters :</b>
|
||||
<table class="params">
|
||||
<thead>
|
||||
<tr>
|
||||
<td>Name</td>
|
||||
<td>Optional</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>token</td>
|
||||
|
||||
<td>
|
||||
No
|
||||
</td>
|
||||
|
||||
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div>
|
||||
</div>
|
||||
<div class="io-description">
|
||||
<b>Returns : </b> <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code>
|
||||
|
||||
</div>
|
||||
<div class="io-description">
|
||||
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<table class="table table-sm table-bordered">
|
||||
<tbody>
|
||||
<tr>
|
||||
@@ -822,8 +979,8 @@
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="38"
|
||||
class="link-to-prism">src/app/_services/auth.service.ts:38</a></div>
|
||||
<div class="io-line">Defined in <a href="" data-line="47"
|
||||
class="link-to-prism">src/app/_services/auth.service.ts:47</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -903,28 +1060,28 @@
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<a name="sessionLoginCount"></a>
|
||||
<a name="trustedUsers"></a>
|
||||
<span class="name">
|
||||
<b>
|
||||
sessionLoginCount</b>
|
||||
<a href="#sessionLoginCount"><span class="icon ion-ios-link"></span></a>
|
||||
trustedUsers</b>
|
||||
<a href="#trustedUsers"><span class="icon ion-ios-link"></span></a>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<i>Type : </i> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/number" target="_blank" >number</a></code>
|
||||
<i>Type : </i> <code><a href="../interfaces/Staff.html" target="_self" >Array<Staff></a></code>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<i>Default value : </i><code>0</code>
|
||||
<i>Default value : </i><code>[]</code>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="16" class="link-to-prism">src/app/_services/auth.service.ts:16</a></div>
|
||||
<div class="io-line">Defined in <a href="" data-line="18" class="link-to-prism">src/app/_services/auth.service.ts:18</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -935,23 +1092,63 @@
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<a name="sessionToken"></a>
|
||||
<a name="trustedUsersList"></a>
|
||||
<span class="name">
|
||||
<b>
|
||||
sessionToken</b>
|
||||
<a href="#sessionToken"><span class="icon ion-ios-link"></span></a>
|
||||
<span class="modifier">Private</span>
|
||||
trustedUsersList</b>
|
||||
<a href="#trustedUsersList"><span class="icon ion-ios-link"></span></a>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<i>Type : </i> <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >any</a></code>
|
||||
<i>Type : </i> <code><a href="../interfaces/Staff.html" target="_self" >BehaviorSubject<Array<Staff>></a></code>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<i>Default value : </i><code>new BehaviorSubject<Array<Staff>>(
|
||||
this.trustedUsers
|
||||
)</code>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="15" class="link-to-prism">src/app/_services/auth.service.ts:15</a></div>
|
||||
<div class="io-line">Defined in <a href="" data-line="19" class="link-to-prism">src/app/_services/auth.service.ts:19</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
<table class="table table-sm table-bordered">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<a name="trustedUsersSubject"></a>
|
||||
<span class="name">
|
||||
<b>
|
||||
trustedUsersSubject</b>
|
||||
<a href="#trustedUsersSubject"><span class="icon ion-ios-link"></span></a>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<i>Type : </i> <code><a href="../interfaces/Staff.html" target="_self" >Observable<Array<Staff>></a></code>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<i>Default value : </i><code>this.trustedUsersList.asObservable()</code>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="22" class="link-to-prism">src/app/_services/auth.service.ts:22</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -972,15 +1169,20 @@ import { LoggingService } from '@app/_services/logging.service';
|
||||
import { MutableKeyStore, MutablePgpKeyStore } from '@app/_pgp';
|
||||
import { ErrorDialogService } from '@app/_services/error-dialog.service';
|
||||
import { HttpClient } from '@angular/common/http';
|
||||
import { HttpError } from '@app/_helpers/global-error-handler';
|
||||
import { HttpError, rejectBody } from '@app/_helpers/global-error-handler';
|
||||
import { Staff } from '@app/_models';
|
||||
import { BehaviorSubject, Observable } from 'rxjs';
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root',
|
||||
})
|
||||
export class AuthService {
|
||||
sessionToken: any;
|
||||
sessionLoginCount: number = 0;
|
||||
mutableKeyStore: MutableKeyStore;
|
||||
trustedUsers: Array<Staff> = [];
|
||||
private trustedUsersList: BehaviorSubject<Array<Staff>> = new BehaviorSubject<Array<Staff>>(
|
||||
this.trustedUsers
|
||||
);
|
||||
trustedUsersSubject: Observable<Array<Staff>> = this.trustedUsersList.asObservable();
|
||||
|
||||
constructor(
|
||||
private httpClient: HttpClient,
|
||||
@@ -992,127 +1194,101 @@ export class AuthService {
|
||||
|
||||
async init(): Promise<void> {
|
||||
await this.mutableKeyStore.loadKeyring();
|
||||
// TODO setting these together should be atomic
|
||||
if (sessionStorage.getItem(btoa('CICADA_SESSION_TOKEN'))) {
|
||||
this.sessionToken = sessionStorage.getItem(btoa('CICADA_SESSION_TOKEN'));
|
||||
}
|
||||
if (localStorage.getItem(btoa('CICADA_PRIVATE_KEY'))) {
|
||||
await this.mutableKeyStore.importPrivateKey(localStorage.getItem(btoa('CICADA_PRIVATE_KEY')));
|
||||
}
|
||||
}
|
||||
|
||||
getSessionToken(): string {
|
||||
return sessionStorage.getItem(btoa('CICADA_SESSION_TOKEN'));
|
||||
}
|
||||
|
||||
setSessionToken(token): void {
|
||||
sessionStorage.setItem(btoa('CICADA_SESSION_TOKEN'), token);
|
||||
}
|
||||
|
||||
setState(s): void {
|
||||
document.getElementById('state').innerHTML = s;
|
||||
}
|
||||
|
||||
getWithToken(): void {
|
||||
const xhr: XMLHttpRequest = new XMLHttpRequest();
|
||||
xhr.responseType = 'text';
|
||||
xhr.open('GET', environment.cicMetaUrl + window.location.search.substring(1));
|
||||
xhr.setRequestHeader('Authorization', 'Bearer ' + this.sessionToken);
|
||||
xhr.setRequestHeader('Content-Type', 'application/json');
|
||||
xhr.setRequestHeader('x-cic-automerge', 'none');
|
||||
xhr.addEventListener('load', (e) => {
|
||||
if (xhr.status === 401) {
|
||||
throw new Error('login rejected');
|
||||
getWithToken(): Promise<boolean> {
|
||||
const headers = {
|
||||
Authorization: 'Bearer ' + this.getSessionToken,
|
||||
'Content-Type': 'application/json;charset=utf-8',
|
||||
'x-cic-automerge': 'none',
|
||||
};
|
||||
const options = {
|
||||
headers,
|
||||
};
|
||||
return fetch(environment.cicMetaUrl, options).then((response) => {
|
||||
if (!response.ok) {
|
||||
this.loggingService.sendErrorLevelMessage('failed to get with auth token.', this, {
|
||||
error: '',
|
||||
});
|
||||
|
||||
return false;
|
||||
}
|
||||
this.sessionLoginCount++;
|
||||
this.setState('Click button to log in');
|
||||
return;
|
||||
return true;
|
||||
});
|
||||
xhr.send();
|
||||
}
|
||||
|
||||
// TODO rename to send signed challenge and set session. Also separate these responsibilities
|
||||
sendResponse(hobaResponseEncoded: any): Promise<boolean> {
|
||||
return new Promise((resolve, reject) => {
|
||||
const xhr: XMLHttpRequest = new XMLHttpRequest();
|
||||
xhr.responseType = 'text';
|
||||
xhr.open('GET', environment.cicMetaUrl + window.location.search.substring(1));
|
||||
xhr.setRequestHeader('Authorization', 'HOBA ' + hobaResponseEncoded);
|
||||
xhr.setRequestHeader('Content-Type', 'application/json');
|
||||
xhr.setRequestHeader('x-cic-automerge', 'none');
|
||||
xhr.addEventListener('load', (e) => {
|
||||
if (xhr.status !== 200) {
|
||||
const error = new HttpError(xhr.statusText, xhr.status);
|
||||
return reject(error);
|
||||
}
|
||||
this.sessionToken = xhr.getResponseHeader('Token');
|
||||
sessionStorage.setItem(btoa('CICADA_SESSION_TOKEN'), this.sessionToken);
|
||||
this.sessionLoginCount++;
|
||||
this.setState('Click button to log in');
|
||||
return resolve(true);
|
||||
});
|
||||
xhr.send();
|
||||
});
|
||||
}
|
||||
|
||||
getChallenge(): void {
|
||||
const xhr: XMLHttpRequest = new XMLHttpRequest();
|
||||
xhr.responseType = 'arraybuffer';
|
||||
xhr.open('GET', environment.cicMetaUrl + window.location.search.substring(1));
|
||||
xhr.onload = async (e) => {
|
||||
if (xhr.status === 401) {
|
||||
const authHeader = xhr.getResponseHeader('WWW-Authenticate');
|
||||
const o = hobaParseChallengeHeader(authHeader);
|
||||
this.loginResponse(o);
|
||||
}
|
||||
sendSignedChallenge(hobaResponseEncoded: any): Promise<any> {
|
||||
const headers = {
|
||||
Authorization: 'HOBA ' + hobaResponseEncoded,
|
||||
'Content-Type': 'application/json;charset=utf-8',
|
||||
'x-cic-automerge': 'none',
|
||||
};
|
||||
xhr.send();
|
||||
const options = {
|
||||
headers,
|
||||
};
|
||||
return fetch(environment.cicMetaUrl, options);
|
||||
}
|
||||
|
||||
login(): boolean {
|
||||
if (this.sessionToken !== undefined) {
|
||||
try {
|
||||
this.getWithToken();
|
||||
return true;
|
||||
} catch (e) {
|
||||
this.loggingService.sendErrorLevelMessage('Login token failed', this, { error: e });
|
||||
}
|
||||
} else {
|
||||
try {
|
||||
this.getChallenge();
|
||||
} catch (e) {
|
||||
this.loggingService.sendErrorLevelMessage('Login challenge failed', this, { error: e });
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
async loginResponse(o: { challenge: string; realm: any }): Promise<any> {
|
||||
return new Promise(async (resolve, reject) => {
|
||||
try {
|
||||
const r = await signChallenge(
|
||||
o.challenge,
|
||||
o.realm,
|
||||
environment.cicMetaUrl,
|
||||
this.mutableKeyStore
|
||||
);
|
||||
const sessionTokenResult: boolean = await this.sendResponse(r);
|
||||
} catch (error) {
|
||||
if (error instanceof HttpError) {
|
||||
if (error.status === 403) {
|
||||
this.errorDialogService.openDialog({
|
||||
message: 'You are not authorized to use this system',
|
||||
});
|
||||
}
|
||||
if (error.status === 401) {
|
||||
this.errorDialogService.openDialog({
|
||||
message:
|
||||
'Unable to authenticate with the service. ' +
|
||||
'Please speak with the staff at Grassroots ' +
|
||||
'Economics for requesting access ' +
|
||||
'staff@grassrootseconomics.net.',
|
||||
});
|
||||
}
|
||||
}
|
||||
// TODO define this error
|
||||
this.errorDialogService.openDialog({ message: 'Incorrect key passphrase.' });
|
||||
resolve(false);
|
||||
getChallenge(): Promise<any> {
|
||||
return fetch(environment.cicMetaUrl).then((response) => {
|
||||
if (response.status === 401) {
|
||||
const authHeader: string = response.headers.get('WWW-Authenticate');
|
||||
return hobaParseChallengeHeader(authHeader);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
async login(): Promise<boolean> {
|
||||
if (this.getSessionToken()) {
|
||||
sessionStorage.removeItem(btoa('CICADA_SESSION_TOKEN'));
|
||||
} else {
|
||||
const o = await this.getChallenge();
|
||||
|
||||
const r = await signChallenge(
|
||||
o.challenge,
|
||||
o.realm,
|
||||
environment.cicMetaUrl,
|
||||
this.mutableKeyStore
|
||||
);
|
||||
|
||||
const tokenResponse = await this.sendSignedChallenge(r).then((response) => {
|
||||
const token = response.headers.get('Token');
|
||||
if (token) {
|
||||
return token;
|
||||
}
|
||||
if (response.status === 401) {
|
||||
throw new HttpError('You are not authorized to use this system', response.status);
|
||||
}
|
||||
if (!response.ok) {
|
||||
throw new HttpError('Unknown error from authentication server', response.status);
|
||||
}
|
||||
});
|
||||
|
||||
if (tokenResponse) {
|
||||
this.setSessionToken(tokenResponse);
|
||||
this.setState('Click button to log in');
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
loginView(): void {
|
||||
document.getElementById('one').style.display = 'none';
|
||||
document.getElementById('two').style.display = 'block';
|
||||
@@ -1153,29 +1329,47 @@ export class AuthService {
|
||||
|
||||
logout(): void {
|
||||
sessionStorage.removeItem(btoa('CICADA_SESSION_TOKEN'));
|
||||
this.sessionToken = undefined;
|
||||
localStorage.removeItem(btoa('CICADA_PRIVATE_KEY'));
|
||||
window.location.reload();
|
||||
}
|
||||
|
||||
getTrustedUsers(): any {
|
||||
const trustedUsers: Array<any> = [];
|
||||
this.mutableKeyStore.getPublicKeys().forEach((key) => trustedUsers.push(key.users[0].userId));
|
||||
return trustedUsers;
|
||||
addTrustedUser(user: Staff): void {
|
||||
const savedIndex = this.trustedUsers.findIndex((staff) => staff.userid === user.userid);
|
||||
if (savedIndex === 0) {
|
||||
return;
|
||||
}
|
||||
if (savedIndex > 0) {
|
||||
this.trustedUsers.splice(savedIndex, 1);
|
||||
}
|
||||
this.trustedUsers.unshift(user);
|
||||
this.trustedUsersList.next(this.trustedUsers);
|
||||
}
|
||||
|
||||
getTrustedUsers(): void {
|
||||
this.mutableKeyStore.getPublicKeys().forEach((key) => {
|
||||
this.addTrustedUser(key.users[0].userId);
|
||||
});
|
||||
}
|
||||
|
||||
async getPublicKeys(): Promise<any> {
|
||||
return await fetch(environment.publicKeysUrl).then((res) => {
|
||||
if (!res.ok) {
|
||||
// TODO does angular recommend an error interface?
|
||||
throw Error(`${res.statusText} - ${res.status}`);
|
||||
}
|
||||
return res.text();
|
||||
return new Promise((resolve, reject) => {
|
||||
fetch(environment.publicKeysUrl).then((res) => {
|
||||
if (!res.ok) {
|
||||
// TODO does angular recommend an error interface?
|
||||
return reject(rejectBody(res));
|
||||
}
|
||||
return resolve(res.text());
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
getPrivateKey(): any {
|
||||
return this.mutableKeyStore.getPrivateKey();
|
||||
}
|
||||
|
||||
getPrivateKeyInfo(): any {
|
||||
return this.getPrivateKey().users[0].userId;
|
||||
}
|
||||
}
|
||||
</code></pre>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user