UNPKG

grid-cms

Version:

The easiest way to manage data in Firestore.

56 lines (39 loc) 1.74 kB
# GRID/CMS The easiest way to manage data in Firestore. Integrates with Firebase Hosting to provide a simple self-updating CMS with zero maintenance. ## Getting started 1. Go to firebase project (or `firebase init` in a blank folder) and make sure hosting and Firestore is setup. 2. Then run `npm init cms` and follow instructions. 3. Login and define what data you want exposed in the CMS. ### Hosting and config GRID/CMS will automatically read the firebaseConfig from the hosting environment, unless specifically defined. This makes it easy to have `prod`, `dev` and `testing` environments without a bunch of `.env` files. ### Permissions The schema will be saved in Firestore (`/_CMS_/schema`) and the current user will therefore need read/write access. - If write access is given the user will be able to extend the schema. - If only read access is given, the user will be able to login and manage data but not extend the schema. An example of admin access for specific user: ```js rules_version = '2'; service cloud.firestore { match /databases/{database}/documents { match /{col}/{doc=**} { allow read, write: if request.auth.token.email == 'admin@e-corp.com'; } } } ``` A more detailed example of full admin and editor access using [Custom Claims](https://firebase.google.com/docs/auth/admin/custom-claims): ```js rules_version = '2'; service cloud.firestore { match /databases/{database}/documents { match /{col}/{doc=**} { allow read: if hasRole(['admin','editor']); allow write: if hasRole(['admin']) || (col != '_CMS_' && hasRole(['editor'])); } function hasRole(roles) { return request.auth != null && request.auth.token.get("role", null) in roles; } } } ```