grid-cms
Version:
The easiest way to manage data in Firestore.
56 lines (39 loc) • 1.74 kB
Markdown
# 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;
}
}
}
```