Token based authentication service for Angular2 with multiple user support. Angular2-Token works best with the devise token auth gem for Rails.
Angular2-Token is currently in Alpha. Any contribution is much appreciated.
- Installation
- Configuration
- Service Methods
- HTTP Service Wrapper
- Multiple User Types
- Testing
- Credits
- License
-
Install Angular2-Token via NPM with
npm install angular2-token --save
-
Import and add
Angular2TokenServiceto your module.import { Angular2TokenService } from 'angular2-token'; @NgModule({ imports: [ BrowserModule ], declarations: [ AppComponent ], providers: [ Angular2TokenService ], bootstrap: [ AppComponent ] })
-
Inject
Angular2TokenServiceinto your component and call.init().constructor(private _tokenService: Angular2TokenService) { this._tokenService.init(); }
Configuration options can be passed as Angular2TokenOptions via .init().
constructor(private _tokenService: Angular2TokenService) {
this._tokenService.init({
apiPath: null,
signInPath: 'auth/sign_in',
signOutPath: 'auth/sign_out',
validateTokenPath: 'auth/validate_token',
registerAccountPath: 'auth',
deleteAccountPath: 'auth',
emailRegistrationPath: window.location.href,
updatePasswordPath: 'auth/password',
resetPasswordPath: 'auth/password',
emailPasswordPath: window.location.href,
userTypes: null
});
}apiPath?: string- Sets base path all operations are based onsignInPath?: string- Sets path for sign insignOutPath?: string- Sets path for sign outvalidateTokenPath?: string- Sets path for token validationregisterAccountPath?: string- Sets path for account registrationdeleteAccountPath?: string- Sets path for account deletionemailRegistrationPath?: string- Sets the path user are redirected to after email confirmation for registrationupdatePasswordPath?: string- Sets path for password updateresetPasswordPath?: string- Sets path for password resetemailPasswordPath?: string- Sets the path user are redirected to after email confirmation for password resetuserTypes?: UserTypes[]- Allows the configuration of multiple user types
Further information on paths/routes can be found at devise token auth
Once initialized Angular2TokenService offers methods for session management.
The signIn method is used to sign in the user with email address and password.
The optional parameter type specifies the name of UserType used for this session.
signIn(email: string, password: string, userType?: string): Observable<Response>
this._tokenService.signIn(
'example@example.org',
'password'
).subscribe(
res => console.log(res),
error => console.log(error)
);The signOut method destroys session and browsers session storage.
signOut(): Observable<Response>
this._tokenService.signOut().subscribe(
res => console.log(res),
error => console.log(error)
);Sends a new user registration request to the Server.
registerAccount(email: string, password: string, passwordConfirmation: string, userType?: string): Observable<Response>
this._tokenService.registerAccount(
'example@example.org',
'password',
'password'
).subscribe(
res => console.log(res),
error => console.log(error)
);Deletes the account for the signed in user.
deleteAccount(): Observable<Response>
this._tokenService.deleteAccount().subscribe(
res => console.log(res),
error => console.log(error)
);Validates the current token with the server.
validateToken(): Observable<Response>
this._tokenService.validateToken().subscribe(
res => console.log(res),
error => console.log(error)
);Updates the password for the logged in user.
updatePassword(currentPassword: string, password: string, passwordConfirmation: string): Observable<Response>
this._tokenService.updatePassword(
'oldPassword',
'newPassword',
'newPassword'
).subscribe(
res => console.log(res),
error => console.log(error)
);Angular2TokenService wraps all standard Angular2 Http Service calls for authentication and token processing.
get(path: string, data?: any): Observable<Response>post(path: string, data: any): Observable<Response>put(path: string, data: any): Observable<Response>delete(path: string, data?: any): Observable<Response>patch(path: string, data: any): Observable<Response>
this._tokenService.get('my-resource/1').map(res => res.json()).subscribe(
res => console.log(res),
error => console.log(error)
);An Array of UserType can be passed in Angular2TokenOptions during init().
The user type is selected during sign in and persists until sign out.
.currentUser returns the currently logged in user.
this._tokenService.init({
userTypes: [
{ name: 'ADMIN', path: 'admin' },
{ name: 'USER', path: 'user' }
]
});
this._tokenService.signIn(
'example@example.com',
'secretPassword',
'ADMIN'
)
this._tokenService.currentUser; // ADMINnpm testTest config files based on Angular2 Webpack Starter by AngularClass
The MIT License (see the LICENSE file for the full text)