17.3.8 • Published 1 year ago

@devlearning/jwt-auth v17.3.8

Weekly downloads
-
License
MIT
Repository
-
Last release
1 year ago

JwtAuth

Jwt Angular Authentication manager with automatic Refresh Token management.

Installation

npm i @devlearning/jwt-auth

Configuration

add to app.module this import:

    JwtAuthModule.forRoot({
        tokenUrl: environment.jwtAuthToken,
        refreshUrl: environment.jwtAuthRefreshToken,
    })

jwtAuthToken is the url to otain bearer token. Server response must the same of this class: Example

export const environment = {
  ...
  jwtAuthToken: '/api/v1/jwtauth/token',
  jwtAuthRefreshToken: '/api/v1/jwtauth/refreshToken',
};
export class JwtToken {
    username: string;
    email: string;
    token: string;                        
    expires: moment.Moment;               
    refreshToken: string;                 
    refreshTokenExpiration: moment.Moment;
}

jwtAuthRefreshToken is the url to refresh the bearer token. Server response must the same of previous class.

Usage

to make a login call method "token" of service "JwtAuthService"

    import { JwtAuthService } from '@devlearning/jwt-auth';
    
    ...

    constructor(
        ...
        private readonly _jwtAuth: JwtAuthService
    ) {

    }

    login() {
        ...
        this._jwtAuth.token({username: 'usernameOrEmail field value', password: 'password'})
            .pipe(
                ...
            ).subscribe(x=> {
                ...
            });
        ...
    }

In JwtAuthService is available two Observable for monitoring loggedin status: - isLoggedIn$ - jwtToken$ or property with current value - isLoggedIn - jwtToken

to use the JwtAuthGuard in canActivate route parameter: - create auth.guard.ts - extends JwtAuthguard class - call method canActivate of base class

import { Injectable } from '@angular/core';
import { Router, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';
import { JwtAuthGuard, JwtAuthService } from '@devlearning/jwt-auth';
import { Observable } from 'rxjs';


@Injectable()
export class AuthGuard extends JwtAuthGuard implements CanActivate {

    constructor(
        private readonly _router: Router,
        private readonly _jwtAuth: JwtAuthService
    ) { 
        super(_jwtAuth);
    }

    canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {
        return this.canActivateBase(route, state)
            .pipe(
                map(x => {
                    if (x) {
                        return true;
                    } else {
                        this._router.navigateByUrl('/login'); //your login url
                        return false;
                    }
                }),
                catchError(e => {
                    this._router.navigateByUrl('/login');  //your login url
                    return of(false);
                })
            );
    }
}
17.3.8

1 year ago

17.3.7

1 year ago

1.4.6

2 years ago

1.4.5

2 years ago

1.4.4

2 years ago

1.4.3

2 years ago

1.4.1

2 years ago

1.4.9

2 years ago

1.4.11

2 years ago

1.4.8

2 years ago

1.4.10

2 years ago

1.4.7

2 years ago

1.4.13

2 years ago

1.4.12

2 years ago

1.4.14

2 years ago

1.3.1

2 years ago

1.3.0

2 years ago

1.2.0

3 years ago

1.2.5

3 years ago

1.2.4

3 years ago

1.2.2

3 years ago

1.2.1

3 years ago

1.1.1

4 years ago

1.1.3

4 years ago

1.1.2

4 years ago

1.1.0

4 years ago

1.0.19

4 years ago

1.0.20

4 years ago

1.0.18

4 years ago

1.0.17

5 years ago

1.0.16

5 years ago

1.0.15

5 years ago

1.0.14

5 years ago

1.0.11

5 years ago

1.0.13

5 years ago

1.0.12

5 years ago

1.0.10

5 years ago

1.0.9

5 years ago

1.0.8

5 years ago

1.0.7

5 years ago

1.0.6

5 years ago

1.0.5

5 years ago

1.0.4

5 years ago

1.0.3

5 years ago

1.0.2

5 years ago

1.0.1

5 years ago

1.0.0

5 years ago

0.0.9

5 years ago

0.0.8

5 years ago

0.0.7

5 years ago

0.0.6

5 years ago

0.0.5

5 years ago

0.0.4

5 years ago

0.0.3

5 years ago

0.0.2

5 years ago

0.0.1

5 years ago