mirror of
https://github.com/zhigang1992/firebase-tools.git
synced 2026-04-29 04:15:24 +08:00
ensure that database.rules.json has rules key (#196)
This commit is contained in:
@@ -15,6 +15,8 @@ var parseBoltRules = require('./parseBoltRules');
|
||||
var prompt = require('./prompt');
|
||||
var resolveProjectPath = require('./resolveProjectPath');
|
||||
var utils = require('./utils');
|
||||
var validateJsonRules = require('./validateJsonRules');
|
||||
var logger = require('./logger');
|
||||
|
||||
var Config = function(src, options) {
|
||||
this.options = options || {};
|
||||
@@ -117,7 +119,13 @@ Config.prototype._parseFile = function(target, filePath) {
|
||||
if (target === 'database') {
|
||||
this.notes.databaseRules = 'json';
|
||||
} else if (target === 'database.rules') {
|
||||
return fs.readFileSync(fullPath, 'utf8');
|
||||
var rules = fs.readFileSync(fullPath, 'utf8');
|
||||
if (validateJsonRules(rules)) {
|
||||
return rules;
|
||||
}
|
||||
utils.logWarning(chalk.bold.yellow('database: ') + chalk.bold(filePath) + ' must have an outer ' + chalk.bold('rules') + ' key, for example:');
|
||||
logger.warn('\n{\n\t"rules": {".read": false, ".write": false}\n}');
|
||||
throw new FirebaseError('Database security rules are not correctly formatted', {exit: 1});
|
||||
}
|
||||
return loadCJSON(fullPath);
|
||||
/* istanbul ignore-next */
|
||||
|
||||
9
lib/validateJsonRules.js
Normal file
9
lib/validateJsonRules.js
Normal file
@@ -0,0 +1,9 @@
|
||||
'use strict';
|
||||
|
||||
var cjson = require('cjson');
|
||||
var _ = require('lodash');
|
||||
|
||||
module.exports = function(rules) {
|
||||
var parsed = cjson.parse(rules);
|
||||
return _.has(parsed, 'rules');
|
||||
};
|
||||
Reference in New Issue
Block a user