0.0.4 • Published 3 years ago

@reflaunt/auth-client-sdk v0.0.4

Weekly downloads
-
License
-
Repository
-
Last release
3 years ago

Auth Client Sdk

Reflaunt angular client sdk that is used to perform authentication to reflaunt via cognito with a fallback to legacy token management

Publishing

After your library is build, go to the dist folder cd ../../dist/auth-client-sdk and run npm publish.

Publish locally

  • After your library is build, go to the dist folder cd ../../dist/auth-client-sdk and run npm link.
  • In your application project, run npm @reflaunt/link auth-client-sdk

Running unit tests

Run ng test auth-client-sdk to execute the unit tests via Karma.

Usage

  • Imports the ReflauntAuthModule in your AppModule
  • Provide configurations of COGNITO_CONFIGURATION, AUTH_API_CONFIGURATION, LEGACY_CONFIGURATION
@NgModule({
   imports: [
     ...
     ReflauntAuthModule
   ],
   declarations: [...],
   providers: [
    {
      provide: COGNITO_CONFIGURATION,
      useValue: {
         userPoolId: 'ap-southeast-1_pool id',
         userPoolWebClientId: 'pool web client id',
         domainPrefix: 'pool domain prefix',
         region: 'ap-southeast-1',
         loginRedirect: 'https://client-local.reflaunt.com/login',
         logoutRedirect: 'https://client-local.reflaunt.com',
         resetPasswordRedirect: 'https://client-local.reflaunt.com/reset-password'
      }
    },
    {
      provide: AUTH_API_CONFIGURATION,
      useValue: {
        apiUrl: 'https://api-local.reflaunt.com'
      }
    },
    {
      provide: LEGACY_CONFIGURATION,
      useValue: {
        tokenKeyName: 'token key'
      }
    }    
   ],
   bootstrap: [AppComponent]
})
export class AppModule {}
  • ideally in the component we can just import the public reflauntAuthService: ReflauntAuthService

Configuration

COGNITO_CONFIGURATION

KeyDescription
userPoolIdcognito user pool id
userPoolWebClientIdcognito web client id
domainPrefixcognito auth API domain prefix
regioncognito region
loginRedirectwhere to redirect the page after login by identity provider
logoutRedirectwhere to redirect the page after logout
resetPasswordRedirectwhere to redirect the page reset password

AUTH_API_CONFIGURATION

KeyDescription
apiUrlurl of the Reflaunt API

LEGACY_CONFIGURATION

KeyDescription
tokenKeyNameCookies name where token is going to be stored

Common practices

listening for authentication state changes

  constructor(
    private reflauntAuthService: ReflauntAuthService
  ) {
    reflauntAuthService.listenToStateChanges().subscribe((authState: AuthState) => {
      if (authState.shouldLogout) {
        return reflauntAuthService.logout();
      }
      if (authState.isAuthenticated) {
        // fetch login details
      } else {
        if (authState.shouldRedirectToConfirmSignUp && authState.confirmSignUpParams) {
          // redirect to confirm sign up page
        }
      }
    });
  }

Getting authentication state as observable

  constructor(
    private reflauntAuthService: ReflauntAuthService
  ) {
    reflauntAuthService.isAuthenticated()
      .subscribe((authState: AuthState) => {
        // do somehting with authentication state
      }));
  }

Getting current access token as observable

  constructor(
    private reflauntAuthService: ReflauntAuthService
  ) {
    reflauntAuthService.getAccessToken()
      .subscribe((token: string) => {
            // do somehting with access token
      }));
  }

Current state

Current state can also be get real-timely by using

  constructor(
    private reflauntAuthService: ReflauntAuthService
  ) {
    console.log(reflauntAuthService.authState);
  }

Get current profile

  constructor(
    private reflauntAuthService: ReflauntAuthService
  ) {
    reflauntAuthService.getUserProfile().then(res => {
        console.log(res.data);
        // res will be the raw data from get user profile API of Reflaunt
    });
  }