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 runnpm 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 yourAppModule
- 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
Key | Description |
---|---|
userPoolId | cognito user pool id |
userPoolWebClientId | cognito web client id |
domainPrefix | cognito auth API domain prefix |
region | cognito region |
loginRedirect | where to redirect the page after login by identity provider |
logoutRedirect | where to redirect the page after logout |
resetPasswordRedirect | where to redirect the page reset password |
AUTH_API_CONFIGURATION
Key | Description |
---|---|
apiUrl | url of the Reflaunt API |
LEGACY_CONFIGURATION
Key | Description |
---|---|
tokenKeyName | Cookies 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
});
}