@@ -10,17 +10,27 @@ const axios = require('../../libs/ajax');
1010const assign = require ( 'object-assign' ) ;
1111
1212const ConfigUtils = require ( '../../utils/ConfigUtils' ) ;
13-
13+ const EMPTY_RULE = {
14+ constraints : { } ,
15+ ipaddress : "" ,
16+ layer : "" ,
17+ request : "" ,
18+ rolename : "" ,
19+ service : "" ,
20+ username : "" ,
21+ workspace : ""
22+ } ;
1423var Api = {
1524
16- loadRules : function ( rulesPage , rulesFiltersValues ) {
17- const options = {
18- 'params' : {
19- 'page' : rulesPage - 1 ,
20- 'entries' : 10
21- }
25+ loadRules : function ( page , rulesFiltersValues , entries = 10 ) {
26+ const params = {
27+ page,
28+ entries,
29+ ...this . assignFiltersValue ( rulesFiltersValues )
2230 } ;
23- this . assignFiltersValue ( rulesFiltersValues , options ) ;
31+ const options = { params, 'headers' : {
32+ 'Content' : 'application/json'
33+ } } ;
2434 return axios . get ( 'geofence/rest/rules' , this . addBaseUrl ( options ) )
2535 . then ( function ( response ) {
2636 return response . data ;
@@ -30,9 +40,8 @@ var Api = {
3040
3141 getRulesCount : function ( rulesFiltersValues ) {
3242 const options = {
33- 'params' : { }
43+ 'params' : this . assignFiltersValue ( rulesFiltersValues )
3444 } ;
35- this . assignFiltersValue ( rulesFiltersValues , options ) ;
3645 return axios . get ( 'geofence/rest/rules/count' , this . addBaseUrl ( options ) ) . then ( function ( response ) {
3746 return response . data ;
3847 } ) ;
@@ -55,40 +64,50 @@ var Api = {
5564 } ,
5665
5766 addRule : function ( rule ) {
58- if ( ! rule . access ) {
59- rule . access = "ALLOW" ;
67+ const newRule = { ...rule } ;
68+ if ( ! newRule . instance ) {
69+ const { id : instanceId } = ConfigUtils . getDefaults ( ) . geoFenceGeoServerInstance ;
70+ newRule . instance = { id : instanceId } ;
71+ }
72+ if ( ! newRule . grant ) {
73+ newRule . grant = "ALLOW" ;
6074 }
61- return axios . post ( 'geofence/rest/rules' , rule , this . addBaseUrl ( {
75+ return axios . post ( 'geofence/rest/rules' , newRule , this . addBaseUrl ( {
6276 'headers' : {
6377 'Content' : 'application/json'
6478 }
6579 } ) ) ;
6680 } ,
6781
6882 updateRule : function ( rule ) {
69- return axios . post ( 'geofence/rest/rules/id/' + rule . id , rule , this . addBaseUrl ( {
83+ // id, priority and grant aren't updatable
84+ const { id, priority, grant, position, ...others } = rule ;
85+ const newRule = { ...EMPTY_RULE , ...others } ;
86+ return axios . put ( `geofence/rest/rules/id/${ id } ` , newRule , this . addBaseUrl ( {
7087 'headers' : {
7188 'Content' : 'application/json'
7289 }
7390 } ) ) ;
7491 } ,
7592
76- assignFiltersValue : function ( rulesFiltersValues , options ) {
77- if ( rulesFiltersValues ) {
78- assign ( options . params , { "userName" : this . normalizeFilterValue ( rulesFiltersValues . userName ) } ) ;
79- assign ( options . params , { "roleName" : this . normalizeFilterValue ( rulesFiltersValues . roleName ) } ) ;
80- assign ( options . params , { "service" : this . normalizeFilterValue ( rulesFiltersValues . service ) } ) ;
81- assign ( options . params , { "request" : this . normalizeFilterValue ( rulesFiltersValues . request ) } ) ;
82- assign ( options . params , { "workspace" : this . normalizeFilterValue ( rulesFiltersValues . workspace ) } ) ;
83- assign ( options . params , { "layer" : this . normalizeFilterValue ( rulesFiltersValues . layer ) } ) ;
84- }
85- return options ;
93+ assignFiltersValue : function ( rulesFiltersValues = { } ) {
94+ return Object . keys ( rulesFiltersValues ) . map ( key => ( { key, normKey : this . normalizeKey ( key ) } ) )
95+ . reduce ( ( params , { key, normKey} ) => ( { ...params , [ normKey ] : this . normalizeFilterValue ( rulesFiltersValues [ key ] ) } ) , { } ) ;
8696 } ,
8797
8898 normalizeFilterValue ( value ) {
8999 return value === "*" ? undefined : value ;
90100 } ,
91-
101+ normalizeKey ( key ) {
102+ switch ( key ) {
103+ case 'username' :
104+ return 'userName' ;
105+ case 'rolename' :
106+ return 'groupName' ;
107+ default :
108+ return key ;
109+ }
110+ } ,
92111 assignFilterValue : function ( queryParameters , filterName , filterAny , filterValue ) {
93112 if ( ! filterValue ) {
94113 return ;
@@ -99,29 +118,52 @@ var Api = {
99118 assign ( queryParameters , { [ filterName ] : filterValue } ) ;
100119 }
101120 } ,
102-
103- getGroups : function ( ) {
104- return axios . get ( 'security /rest/roles' , this . addBaseUrl ( {
121+ getGroupsCount : function ( filter = " " ) {
122+ const encodedFilter = encodeURIComponent ( `% ${ filter } %` ) ;
123+ return axios . get ( `geofence /rest/groups/count/ ${ encodedFilter } ` , this . addBaseUrl ( {
105124 'headers' : {
106- 'Accept' : 'application/json '
125+ 'Accept' : 'text/plain '
107126 }
108127 } ) ) . then ( function ( response ) {
109128 return response . data ;
110129 } ) ;
111130 } ,
112-
113- getUsers : function ( ) {
114- return axios . get ( 'security/rest/usergroup/users' , this . addBaseUrl ( {
131+ getGroups : function ( filter , page , entries = 10 ) {
132+ const params = {
133+ page,
134+ entries,
135+ nameLike : `%${ filter } %`
136+ } ;
137+ const options = { params} ;
138+ return axios . get ( `geofence/rest/groups` , this . addBaseUrl ( options ) ) . then ( function ( response ) {
139+ return response . data ;
140+ } ) ;
141+ } ,
142+ getUsersCount : function ( filter = " " ) {
143+ const encodedFilter = encodeURIComponent ( `%${ filter } %` ) ;
144+ return axios . get ( `geofence/rest/users/count/${ encodedFilter } ` , this . addBaseUrl ( {
115145 'headers' : {
116- 'Accept' : 'application/json '
146+ 'Accept' : 'text/plain '
117147 }
118148 } ) ) . then ( function ( response ) {
119149 return response . data ;
120150 } ) ;
121151 } ,
122152
153+ getUsers : function ( filter , page , entries = 10 ) {
154+ const params = {
155+ page,
156+ entries,
157+ nameLike : `%${ filter } %`
158+ } ;
159+ const options = { params} ;
160+ return axios . get ( `geofence/rest/users` , this . addBaseUrl ( options ) ) . then ( function ( response ) {
161+ return response . data ;
162+ } ) ;
163+ } ,
164+
123165 getWorkspaces : function ( ) {
124- return axios . get ( 'rest/workspaces' , this . addBaseUrl ( {
166+ return axios . get ( 'rest/workspaces' , this . addBaseUrlGS ( {
125167 'headers' : {
126168 'Accept' : 'application/json'
127169 }
@@ -134,8 +176,12 @@ var Api = {
134176 return ! value ? '*' : value ;
135177 } ,
136178
137- addBaseUrl : function ( options ) {
138- return assign ( options , { baseURL : ConfigUtils . getDefaults ( ) . geoServerUrl } ) ;
179+ addBaseUrl : function ( options = { } ) {
180+ return assign ( options , { baseURL : ConfigUtils . getDefaults ( ) . geoFenceUrl } ) ;
181+ } ,
182+ addBaseUrlGS : function ( options = { } ) {
183+ const { url : baseURL } = ConfigUtils . getDefaults ( ) . geoFenceGeoServerInstance || { } ;
184+ return assign ( options , { baseURL} ) ;
139185 }
140186} ;
141187
0 commit comments