@@ -6,6 +6,7 @@ if (process.env.NEW_RELIC_ENABLED === 'true') require('newrelic');
6
6
7
7
var config = require ( './config/config.js' ) ( ) ;
8
8
var seneca = require ( 'seneca' ) ( config ) ;
9
+ var _ = require ( 'lodash' ) ;
9
10
var store = require ( 'seneca-postgresql-store' ) ;
10
11
var log = require ( 'cp-logs-lib' ) ( { name : 'cp-users-service' , level : 'warn' } ) ;
11
12
config . log = log . log ;
@@ -70,4 +71,40 @@ require('./migrate-psql-db.js')(function (err) {
70
71
. client ( { type : 'web' , port : 10304 , pin : { role : 'cd-salesforce' , cmd : '*' } } )
71
72
. client ( { type : 'web' , port : 10301 , pin : 'role:cd-dojos,cmd:*' } )
72
73
. client ( { type : 'web' , port : 10305 , pin : { role : 'cd-badges' , cmd : '*' } } ) ;
74
+
75
+ seneca . ready ( function ( ) {
76
+ var escape = require ( 'seneca-postgresql-store/lib/relational-util' ) . escapeStr ;
77
+ [ 'load' , 'list' ] . forEach ( function ( cmd ) {
78
+ seneca . wrap ( 'role: entity, cmd: ' + cmd , function filterFields ( args , cb ) {
79
+ try {
80
+ [ 'limit$' , 'skip$' ] . forEach ( function ( field ) {
81
+ if ( args . q [ field ] && args . q [ field ] !== 'NULL' && ! / ^ [ 0 - 9 ] + $ / g. test ( args . q [ field ] + '' ) ) {
82
+ throw new Error ( 'Expect limit$, skip$ to be a number' ) ;
83
+ }
84
+ } ) ;
85
+ if ( args . q . sort$ ) {
86
+ if ( args . q . sort$ && typeof args . q . sort$ === 'object' ) {
87
+ var order = args . q . sort$ ;
88
+ _ . each ( order , function ( ascdesc , column ) {
89
+ if ( ! / ^ [ a - z A - Z 0 - 9 _ ] + $ / g. test ( column ) ) {
90
+ throw new Error ( 'Unexpect characters in sort$' ) ;
91
+ }
92
+ } ) ;
93
+ } else {
94
+ throw new Error ( 'Expect sort$ to be an object' ) ;
95
+ }
96
+ }
97
+ if ( args . q . fields$ ) {
98
+ args . q . fields$ . forEach ( function ( field , index ) {
99
+ args . q . fields$ [ index ] = '\"' + escape ( field ) + '\"' ;
100
+ } ) ;
101
+ }
102
+ this . prior ( args , cb ) ;
103
+ } catch ( err ) {
104
+ // cb to avoid seneca-transport to hang while waiting for timeout error
105
+ return cb ( err ) ;
106
+ }
107
+ } ) ;
108
+ } ) ;
109
+ } ) ;
73
110
} ) ;
0 commit comments