Skip to content

Commit

Permalink
Deploying to gh-pages from @ 8eb5e1b 🚀
Browse files Browse the repository at this point in the history
  • Loading branch information
mkreuzkam-cap committed May 24, 2024
1 parent 86034d0 commit a3cd4e4
Show file tree
Hide file tree
Showing 147 changed files with 4,467 additions and 4,299 deletions.
2 changes: 1 addition & 1 deletion classes/BruteForceError.html
Original file line number Diff line number Diff line change
Expand Up @@ -585,7 +585,7 @@ <h3 id="methods">

constructor(timeToWait: number, message: string) {
super(
{ type: &#x27;ENTITY_NOT_FOUND&#x27;, title: &#x27;Entity Not Found&#x27;, defaultMessage: message },
{ type: &#x27;TOO_MANY_REQUESTS&#x27;, title: &#x27;Too many requests&#x27;, defaultMessage: message },
HttpStatus.TOO_MANY_REQUESTS,
{
timeToWait,
Expand Down
4 changes: 2 additions & 2 deletions classes/JwtExtractor.html
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@
<h3>File</h3>
</p>
<p class="comment">
<code>apps/server/src/modules/authentication/strategy/jwt-extractor.ts</code>
<code>apps/server/src/modules/authentication/helper/jwt-extractor.ts</code>
</p>


Expand Down Expand Up @@ -184,7 +184,7 @@ <h3 id="methods">
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="6"
class="link-to-prism">apps/server/src/modules/authentication/strategy/jwt-extractor.ts:6</a></div>
class="link-to-prism">apps/server/src/modules/authentication/helper/jwt-extractor.ts:6</a></div>
</td>
</tr>

Expand Down
15 changes: 9 additions & 6 deletions controllers/LoginController.html
Original file line number Diff line number Diff line change
Expand Up @@ -224,8 +224,8 @@ <h3 id="methods">

<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="31"
class="link-to-prism">apps/server/src/modules/authentication/controllers/login.controller.ts:31</a></div>
<div class="io-line">Defined in <a href="" data-line="32"
class="link-to-prism">apps/server/src/modules/authentication/controllers/login.controller.ts:32</a></div>
</td>
</tr>

Expand Down Expand Up @@ -319,8 +319,8 @@ <h3 id="methods">

<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="47"
class="link-to-prism">apps/server/src/modules/authentication/controllers/login.controller.ts:47</a></div>
<div class="io-line">Defined in <a href="" data-line="49"
class="link-to-prism">apps/server/src/modules/authentication/controllers/login.controller.ts:49</a></div>
</td>
</tr>

Expand Down Expand Up @@ -414,8 +414,8 @@ <h3 id="methods">

<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="62"
class="link-to-prism">apps/server/src/modules/authentication/controllers/login.controller.ts:62</a></div>
<div class="io-line">Defined in <a href="" data-line="64"
class="link-to-prism">apps/server/src/modules/authentication/controllers/login.controller.ts:64</a></div>
</td>
</tr>

Expand Down Expand Up @@ -506,6 +506,7 @@ <h3 id="methods">
@ApiResponse({ status: 200, type: LoginResponse, description: &#x27;Login was successful.&#x27; })
@ApiResponse({ status: 400, type: ValidationError, description: &#x27;Request data has invalid format.&#x27; })
@ApiResponse({ status: 403, type: ForbiddenOperationError, description: &#x27;Invalid user credentials.&#x27; })
// Body is not used, but validated and used in the strategy implementation
// eslint-disable-next-line @typescript-eslint/no-unused-vars
async loginLdap(@CurrentUser() user: ICurrentUser, @Body() _: LdapAuthorizationBodyParams): Promise&lt;LoginResponse&gt; {
const loginDto: LoginDto &#x3D; await this.loginUc.getLoginData(user);
Expand All @@ -522,6 +523,7 @@ <h3 id="methods">
@ApiResponse({ status: 200, type: LoginResponse, description: &#x27;Login was successful.&#x27; })
@ApiResponse({ status: 400, type: ValidationError, description: &#x27;Request data has invalid format.&#x27; })
@ApiResponse({ status: 403, type: ForbiddenOperationError, description: &#x27;Invalid user credentials.&#x27; })
// Body is not used, but validated and used in the strategy implementation
// eslint-disable-next-line @typescript-eslint/no-unused-vars
async loginLocal(@CurrentUser() user: ICurrentUser, @Body() _: LocalAuthorizationBodyParams): Promise&lt;LoginResponse&gt; {
const loginDto: LoginDto &#x3D; await this.loginUc.getLoginData(user);
Expand All @@ -540,6 +542,7 @@ <h3 id="methods">
@ApiResponse({ status: 403, type: ForbiddenOperationError, description: &#x27;Invalid user credentials.&#x27; })
async loginOauth2(
@CurrentUser() user: OauthCurrentUser,
// Body is not used, but validated and used in the strategy implementation
// eslint-disable-next-line @typescript-eslint/no-unused-vars
@Body() _: Oauth2AuthorizationBodyParams
): Promise&lt;OauthLoginResponse&gt; {
Expand Down
62 changes: 37 additions & 25 deletions coverage.html
Original file line number Diff line number Diff line change
Expand Up @@ -5156,6 +5156,30 @@
<span class="coverage-count">(0/2)</span>
</td>
</tr>
<tr class="low">
<td>
<!-- miscellaneous -->
<a href="./classes/JwtExtractor.html">apps/server/src/modules/authentication/helper/jwt-extractor.ts</a>
</td>
<td>class</td>
<td>JwtExtractor</td>
<td align="right" data-sort="0">
<span class="coverage-percent">0 %</span>
<span class="coverage-count">(0/2)</span>
</td>
</tr>
<tr class="low">
<td>
<!-- miscellaneous -->
<a href="./injectables/JwtValidationAdapter.html">apps/server/src/modules/authentication/helper/jwt-validation.adapter.ts</a>
</td>
<td>injectable</td>
<td>JwtValidationAdapter</td>
<td align="right" data-sort="20">
<span class="coverage-percent">20 %</span>
<span class="coverage-count">(1/5)</span>
</td>
</tr>
<tr class="low">
<td>
<!-- miscellaneous -->
Expand Down Expand Up @@ -5204,6 +5228,18 @@
<span class="coverage-count">(7/8)</span>
</td>
</tr>
<tr class="low">
<td>
<!-- miscellaneous -->
<a href="./miscellaneous/functions.html#isICurrentUser">apps/server/src/modules/authentication/interface/user.ts</a>
</td>
<td>function</td>
<td>isICurrentUser</td>
<td align="right" data-sort="0">
<span class="coverage-percent">0 %</span>
<span class="coverage-count">(0/1)</span>
</td>
</tr>
<tr class="low">
<td>
<!-- miscellaneous -->
Expand Down Expand Up @@ -5285,7 +5321,7 @@
<td>AuthenticationService</td>
<td align="right" data-sort="0">
<span class="coverage-percent">0 %</span>
<span class="coverage-count">(0/9)</span>
<span class="coverage-count">(0/10)</span>
</td>
</tr>
<tr class="low">
Expand All @@ -5300,30 +5336,6 @@
<span class="coverage-count">(0/4)</span>
</td>
</tr>
<tr class="low">
<td>
<!-- miscellaneous -->
<a href="./classes/JwtExtractor.html">apps/server/src/modules/authentication/strategy/jwt-extractor.ts</a>
</td>
<td>class</td>
<td>JwtExtractor</td>
<td align="right" data-sort="0">
<span class="coverage-percent">0 %</span>
<span class="coverage-count">(0/2)</span>
</td>
</tr>
<tr class="low">
<td>
<!-- miscellaneous -->
<a href="./injectables/JwtValidationAdapter.html">apps/server/src/modules/authentication/strategy/jwt-validation.adapter.ts</a>
</td>
<td>injectable</td>
<td>JwtValidationAdapter</td>
<td align="right" data-sort="20">
<span class="coverage-percent">20 %</span>
<span class="coverage-count">(1/5)</span>
</td>
</tr>
<tr class="low">
<td>
<!-- miscellaneous -->
Expand Down
97 changes: 87 additions & 10 deletions injectables/AuthenticationService.html
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,10 @@ <h6><b>Methods</b></h6>
<span class="modifier">Async</span>
<a href="#generateJwt" >generateJwt</a>
</li>
<li>
<span class="modifier">Private</span>
<a href="#isValidJwt" >isValidJwt</a>
</li>
<li>
<span class="modifier">Async</span>
<a href="#loadAccount" >loadAccount</a>
Expand Down Expand Up @@ -280,8 +284,8 @@ <h3 id="methods">

<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="67"
class="link-to-prism">apps/server/src/modules/authentication/services/authentication.service.ts:67</a></div>
<div class="io-line">Defined in <a href="" data-line="71"
class="link-to-prism">apps/server/src/modules/authentication/services/authentication.service.ts:71</a></div>
</td>
</tr>

Expand Down Expand Up @@ -396,6 +400,75 @@ <h3 id="methods">
</tr>
</tbody>
</table>
<table class="table table-sm table-bordered">
<tbody>
<tr>
<td class="col-md-4">
<a name="isValidJwt"></a>
<span class="name">
<span class="modifier">Private</span>
<span ><b>isValidJwt</b></span>
<a href="#isValidJwt"><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>isValidJwt(decodedJwt: <a href="../interfaces/JwtPayload.html" target="_self">JwtPayload | null</a>)</code>
</td>
</tr>


<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="67"
class="link-to-prism">apps/server/src/modules/authentication/services/authentication.service.ts:67</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>decodedJwt</td>
<td>
<code><a href="../interfaces/JwtPayload.html" target="_self" >JwtPayload | null</a></code>
</td>

<td>
No
</td>


</tr>
</tbody>
</table>
</div>
<div class="io-description">
<b>Returns : </b> <code>literal type</code>

</div>
<div class="io-description">

</div>
</td>
</tr>
</tbody>
</table>
<table class="table table-sm table-bordered">
<tbody>
<tr>
Expand Down Expand Up @@ -497,8 +570,8 @@ <h3 id="methods">

<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="86"
class="link-to-prism">apps/server/src/modules/authentication/services/authentication.service.ts:86</a></div>
<div class="io-line">Defined in <a href="" data-line="90"
class="link-to-prism">apps/server/src/modules/authentication/services/authentication.service.ts:90</a></div>
</td>
</tr>

Expand Down Expand Up @@ -564,8 +637,8 @@ <h3 id="methods">

<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="82"
class="link-to-prism">apps/server/src/modules/authentication/services/authentication.service.ts:82</a></div>
<div class="io-line">Defined in <a href="" data-line="86"
class="link-to-prism">apps/server/src/modules/authentication/services/authentication.service.ts:86</a></div>
</td>
</tr>

Expand Down Expand Up @@ -702,8 +775,8 @@ <h3 id="methods">

<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="78"
class="link-to-prism">apps/server/src/modules/authentication/services/authentication.service.ts:78</a></div>
<div class="io-line">Defined in <a href="" data-line="82"
class="link-to-prism">apps/server/src/modules/authentication/services/authentication.service.ts:82</a></div>
</td>
</tr>

Expand Down Expand Up @@ -765,7 +838,7 @@ <h3 id="methods">
import jwt, { JwtPayload } from &#x27;jsonwebtoken&#x27;;
import { BruteForceError, UnauthorizedLoggableException } from &#x27;../errors&#x27;;
import { CreateJwtPayload } from &#x27;../interface/jwt-payload&#x27;;
import { JwtValidationAdapter } from &#x27;../strategy/jwt-validation.adapter&#x27;;
import { JwtValidationAdapter } from &#x27;../helper/jwt-validation.adapter&#x27;;
import { LoginDto } from &#x27;../uc/dto&#x27;;
import { UserAccountDeactivatedLoggableException } from &#x27;../loggable/user-account-deactivated-exception&#x27;;

Expand Down Expand Up @@ -816,11 +889,15 @@ <h3 id="methods">
async removeJwtFromWhitelist(jwtToken: string): Promise&lt;void&gt; {
const decodedJwt: JwtPayload | null &#x3D; jwt.decode(jwtToken, { json: true });

if (decodedJwt &amp;&amp; decodedJwt.jti &amp;&amp; decodedJwt.accountId &amp;&amp; typeof decodedJwt.accountId &#x3D;&#x3D;&#x3D; &#x27;string&#x27;) {
if (this.isValidJwt(decodedJwt)) {
await this.jwtValidationAdapter.removeFromWhitelist(decodedJwt.accountId, decodedJwt.jti);
}
}

private isValidJwt(decodedJwt: JwtPayload | null): decodedJwt is { accountId: string; jti: string } {
return typeof decodedJwt?.jti &#x3D;&#x3D;&#x3D; &#x27;string&#x27; &amp;&amp; typeof decodedJwt?.accountId &#x3D;&#x3D;&#x3D; &#x27;string&#x27;;
}

checkBrutForce(account: Account): void {
if (account.lasttriedFailedLogin) {
const timeDifference &#x3D; (new Date().getTime() - account.lasttriedFailedLogin.getTime()) / 1000;
Expand Down
4 changes: 2 additions & 2 deletions injectables/JwtStrategy.html
Original file line number Diff line number Diff line change
Expand Up @@ -291,8 +291,8 @@ <h3 id="methods">
import { ICurrentUser } from &#x27;../interface&#x27;;
import { JwtPayload } from &#x27;../interface/jwt-payload&#x27;;
import { CurrentUserMapper } from &#x27;../mapper&#x27;;
import { JwtExtractor } from &#x27;./jwt-extractor&#x27;;
import { JwtValidationAdapter } from &#x27;./jwt-validation.adapter&#x27;;
import { JwtExtractor } from &#x27;../helper/jwt-extractor&#x27;;
import { JwtValidationAdapter } from &#x27;../helper/jwt-validation.adapter&#x27;;

@Injectable()
export class JwtStrategy extends PassportStrategy(Strategy) {
Expand Down
15 changes: 7 additions & 8 deletions injectables/JwtValidationAdapter.html
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@
<h3>File</h3>
</p>
<p class="comment">
<code>apps/server/src/modules/authentication/strategy/jwt-validation.adapter.ts</code>
<code>apps/server/src/modules/authentication/helper/jwt-validation.adapter.ts</code>
</p>


Expand Down Expand Up @@ -168,7 +168,7 @@ <h3 id="constructor">Constructor</h3>
</tr>
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="13" class="link-to-prism">apps/server/src/modules/authentication/strategy/jwt-validation.adapter.ts:13</a></div>
<div class="io-line">Defined in <a href="" data-line="13" class="link-to-prism">apps/server/src/modules/authentication/helper/jwt-validation.adapter.ts:13</a></div>
</td>
</tr>

Expand Down Expand Up @@ -245,8 +245,8 @@ <h3 id="methods">

<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="30"
class="link-to-prism">apps/server/src/modules/authentication/strategy/jwt-validation.adapter.ts:30</a></div>
<div class="io-line">Defined in <a href="" data-line="29"
class="link-to-prism">apps/server/src/modules/authentication/helper/jwt-validation.adapter.ts:29</a></div>
</td>
</tr>

Expand Down Expand Up @@ -327,7 +327,7 @@ <h3 id="methods">
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="25"
class="link-to-prism">apps/server/src/modules/authentication/strategy/jwt-validation.adapter.ts:25</a></div>
class="link-to-prism">apps/server/src/modules/authentication/helper/jwt-validation.adapter.ts:25</a></div>
</td>
</tr>

Expand Down Expand Up @@ -419,8 +419,8 @@ <h3 id="methods">

<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="36"
class="link-to-prism">apps/server/src/modules/authentication/strategy/jwt-validation.adapter.ts:36</a></div>
<div class="io-line">Defined in <a href="" data-line="35"
class="link-to-prism">apps/server/src/modules/authentication/helper/jwt-validation.adapter.ts:35</a></div>
</td>
</tr>

Expand Down Expand Up @@ -509,7 +509,6 @@ <h3 id="methods">
* @param jti jwt id (here required to make jwt identifiers identical in redis)
*/
async isWhitelisted(accountId: string, jti: string): Promise&lt;void&gt; {
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
await ensureTokenIsWhitelisted({ accountId, jti, privateDevice: false });
}

Expand Down
Loading

0 comments on commit a3cd4e4

Please sign in to comment.