Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mikkopaderes/ember-firebaseui
Ember implementation of FirebaseUI for Web
https://github.com/mikkopaderes/ember-firebaseui
ember-addon firebase
Last synced: 2 months ago
JSON representation
Ember implementation of FirebaseUI for Web
- Host: GitHub
- URL: https://github.com/mikkopaderes/ember-firebaseui
- Owner: mikkopaderes
- License: mit
- Created: 2017-08-31T07:40:01.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2018-05-13T14:12:10.000Z (over 6 years ago)
- Last Synced: 2024-10-13T12:29:42.816Z (3 months ago)
- Topics: ember-addon, firebase
- Language: JavaScript
- Size: 233 KB
- Stars: 5
- Watchers: 1
- Forks: 2
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
ember-firebaseui
==============================================================================Ember implementation of FirebaseUI for Web
Installation
------------------------------------------------------------------------------```
npm install [email protected] --save-dev
ember install ember-firebaseui
```### Configuration
Add a `firebase` and `torii` property in your `config/environment.js`.
```javascript
let ENV = {
...firebase: {
apiKey: '',
authDomain: '',
databaseURL: '',
projectId: '',
storageBucket: '',
messagingSenderId: ''
},
torii: { sessionServiceName: 'session' },...
}
```Usage
------------------------------------------------------------------------------### Auth
#### Torii
Authentication will make use of [Torii](https://github.com/Vestorly/torii) to manage our session.
Create a Torii adapter file in `app/torii-adapters/application.js`. It should contain the following codes.
```javascript
import ToriiFirebaseUiAdapter from 'ember-firebaseui/torii-adapters/firebaseui';export default ToriiFirebaseUiAdapter.extend({
});
```#### `{{firebaseui-auth}}`
`{{firebaseui-auth}}` component is provided for rendering FirebaseUI Auth. Here's how:
First setup your `uiConfig` which is exactly the same with [FirebaseUI Auth](https://github.com/firebase/firebaseui-web).
```javascript
import { inject } from '@ember/service';
import Component from '@ember/component';import firebase from 'firebase';
import firebaseui from 'firebaseui';export default Component.extend({
session: inject(),init(...args) {
this._super(...args);const uiConfig = {
credentialHelper: firebaseui.auth.CredentialHelper.NONE,
callbacks: {
signInSuccessWithAuthResult: () => {
this.get('session').fetch();
},
},
signInOptions: [
firebase.auth.GoogleAuthProvider.PROVIDER_ID,
firebase.auth.FacebookAuthProvider.PROVIDER_ID,
firebase.auth.TwitterAuthProvider.PROVIDER_ID,
firebase.auth.GithubAuthProvider.PROVIDER_ID,
firebase.auth.EmailAuthProvider.PROVIDER_ID
]
};this.set('uiConfig', uiConfig);
}
});
```Then pass that `uiConfig` into the `{{firebaseui-auth}}` component.
```javascript
{{firebaseui-auth uiConfig=uiConfig}}
```In our application route, we can setup our session if the user's already signed in by calling `this.get('session').fetch()` in the `beforeModel()` hook.
```javascript
import { inject } from '@ember/service';
import Route from '@ember/routing/route';export default Route.extend({
session: inject(),beforeModel() {
return this.get('session').fetch().catch(() => {});
}
});
```Contributing
------------------------------------------------------------------------------### Installation
* `git clone `
* `cd ember-firebaseui`
* `npm install`### Linting
* `npm run lint:js`
* `npm run lint:js -- --fix`### Running tests
* `ember test` – Runs the test suite on the current Ember version
* `ember test --server` – Runs the test suite in "watch mode"
* `npm test` – Runs `ember try:each` to test your addon against multiple Ember versions### Running the dummy application
* `ember serve`
* Visit the dummy application at [http://localhost:4200](http://localhost:4200).For more information on using ember-cli, visit [https://ember-cli.com/](https://ember-cli.com/).
License
------------------------------------------------------------------------------This project is licensed under the [MIT License](LICENSE.md).