AIS - Firebase User
This sub-module to takes care of user related requirements such as :
- Authentication
- Session management (ToDo)
Installation
- Import and provide the module and the primary auth guard to your module:
import { AngularFireModule } from 'angularfire2'; // Needs one per AIS App
import * as firebaseConfig from '../../firebase'; // Needs one per AIS App
import { FirebaseUserModule, AuthenticatedGuard } from 'ais-firebase-user';
export const APP_IMPORTS = [
...
AngularFireModule.initializeApp(firebaseConfig.common,firebaseConfig.auth),
FirebaseUserModule
];
export const APP_PROVIDERS = [
...
AuthenticatedGuard
];
Note: Firebase config file must contain the following information:
import { AuthProviders, AuthMethods } from 'angularfire2';
export const common = {
apiKey: 'xyzABC',
authDomain: 'aaa.firebaseapp.com',
databaseURL: 'https://aaa.firebaseio.com',
storageBucket: 'aaa.appspot.com',
messagingSenderId: '0123456789'
};
export const auth = {
provider: AuthProviders.Password,
method: AuthMethods.Password
};
- Add the primary auth guard to your routing as follows. Login related pages (login, forgot-password, change-password etc.) are automaticall imported with the FirebaseUserModule in the previous step
import { AuthenticatedGuard } from 'ais-firebase-user';
export const routes: Routes = [
{ path: '', component: DashboardPage, canActivate: [AuthenticatedGuard], pathMatch: 'full' },
{ path: 'about', component: AboutPage, canActivate: [AuthenticatedGuard] },
{ path: '**', component: NotFoundPage }
];
- Import user store components to your root reducer:
import { UserReducer, UserState } from 'ais-firebase-user';
export interface AppState {
router: RouterState;
system: SystemState;
user: UserState;
};
const reducers = {
router: routerReducer,
system: SystemReducer,
user: UserReducer
};
- Provide a simple logout button anywhere in your application. All you need to call is this method:
import { Store } from '@ngrx/store';
import { AppState } from '../../store/root.reducer';
import { UserActions } from 'ais-firebase-user';
...
constructor(..., private store: Store<AppState>) {}
...
this.store.dispatch(new UserActions.Logout({}));
Requirements
- The Host app must have a valid AngularFire2 connection
NPM Dependencies
- firebase
- angularfire2
- @ngrx/store, @ngrx/effects
Exported components
- FirebaseUserModule (to be imported to host app module)
- AuthenticatedGuard service, to be used in host app's routing to prevent unauthorized users' access
- ngrx components:
- UserReducer, UserState, UserStateInitial
- UserActions
- UserEffects
- User (Model)
- Page components (and routes) to control the user interactions with auth. These components are imported implicitly with routing.
- LoginPage (/login route)
- ForgotPasswordPage (/forgot-password route)
Details
- Starting AIS Version: v0.0.3