14
14
15
15
import * as rbac from '../rbac' ;
16
16
import * as ip from 'ip' ;
17
- import * as _ from 'lodash' ;
18
17
import { isMatch } from 'micromatch' ;
19
18
20
19
// regexMatch determines whether key1 matches the pattern of key2 in regular expression.
@@ -40,8 +39,9 @@ function keyMatch(key1: string, key2: string): boolean {
40
39
41
40
// keyMatchFunc is the wrapper for keyMatch.
42
41
function keyMatchFunc ( ...args : any [ ] ) : boolean {
43
- const name1 : string = _ . toString ( args [ 0 ] ) ;
44
- const name2 : string = _ . toString ( args [ 1 ] ) ;
42
+ const [ arg0 , arg1 ] = args ;
43
+ const name1 : string = ( arg0 || '' ) . toString ( ) ;
44
+ const name2 : string = ( arg1 || '' ) . toString ( ) ;
45
45
46
46
return keyMatch ( name1 , name2 ) ;
47
47
}
@@ -54,7 +54,7 @@ function keyMatch2(key1: string, key2: string): boolean {
54
54
55
55
const regexp = new RegExp ( / ( .* ) : [ ^ / ] + ( .* ) / g) ;
56
56
for ( ; ; ) {
57
- if ( ! _ . includes ( key2 , '/:' ) ) {
57
+ if ( ! key2 . includes ( '/:' ) ) {
58
58
break ;
59
59
}
60
60
key2 = key2 . replace ( regexp , '$1[^/]+$2' ) ;
@@ -65,8 +65,9 @@ function keyMatch2(key1: string, key2: string): boolean {
65
65
66
66
// keyMatch2Func is the wrapper for keyMatch2.
67
67
function keyMatch2Func ( ...args : any [ ] ) : boolean {
68
- const name1 : string = _ . toString ( args [ 0 ] ) ;
69
- const name2 : string = _ . toString ( args [ 1 ] ) ;
68
+ const [ arg0 , arg1 ] = args ;
69
+ const name1 : string = ( arg0 || '' ) . toString ( ) ;
70
+ const name2 : string = ( arg1 || '' ) . toString ( ) ;
70
71
71
72
return keyMatch2 ( name1 , name2 ) ;
72
73
}
@@ -78,7 +79,7 @@ function keyMatch3(key1: string, key2: string): boolean {
78
79
79
80
const regexp = new RegExp ( / ( .* ) { [ ^ / ] + } ( .* ) / g) ;
80
81
for ( ; ; ) {
81
- if ( ! _ . includes ( key2 , '/{' ) ) {
82
+ if ( ! key2 . includes ( '/{' ) ) {
82
83
break ;
83
84
}
84
85
key2 = key2 . replace ( regexp , '$1[^/]+$2' ) ;
@@ -89,8 +90,9 @@ function keyMatch3(key1: string, key2: string): boolean {
89
90
90
91
// keyMatch3Func is the wrapper for keyMatch3.
91
92
function keyMatch3Func ( ...args : any [ ] ) : boolean {
92
- const name1 : string = _ . toString ( args [ 0 ] ) ;
93
- const name2 : string = _ . toString ( args [ 1 ] ) ;
93
+ const [ arg0 , arg1 ] = args ;
94
+ const name1 : string = ( arg0 || '' ) . toString ( ) ;
95
+ const name2 : string = ( arg1 || '' ) . toString ( ) ;
94
96
95
97
return keyMatch3 ( name1 , name2 ) ;
96
98
}
@@ -166,16 +168,18 @@ function keyMatch4(key1: string, key2: string): boolean {
166
168
167
169
// keyMatch4Func is the wrapper for keyMatch4.
168
170
function keyMatch4Func ( ...args : any [ ] ) : boolean {
169
- const name1 : string = _ . toString ( args [ 0 ] ) ;
170
- const name2 : string = _ . toString ( args [ 1 ] ) ;
171
+ const [ arg0 , arg1 ] = args ;
172
+ const name1 : string = ( arg0 || '' ) . toString ( ) ;
173
+ const name2 : string = ( arg1 || '' ) . toString ( ) ;
171
174
172
175
return keyMatch4 ( name1 , name2 ) ;
173
176
}
174
177
175
178
// regexMatchFunc is the wrapper for regexMatch.
176
179
function regexMatchFunc ( ...args : any [ ] ) : boolean {
177
- const name1 : string = _ . toString ( args [ 0 ] ) ;
178
- const name2 : string = _ . toString ( args [ 1 ] ) ;
180
+ const [ arg0 , arg1 ] = args ;
181
+ const name1 : string = ( arg0 || '' ) . toString ( ) ;
182
+ const name2 : string = ( arg1 || '' ) . toString ( ) ;
179
183
180
184
return regexMatch ( name1 , name2 ) ;
181
185
}
@@ -203,8 +207,9 @@ function ipMatch(ip1: string, ip2: string): boolean {
203
207
204
208
// ipMatchFunc is the wrapper for ipMatch.
205
209
function ipMatchFunc ( ...args : any [ ] ) : boolean {
206
- const ip1 : string = _ . toString ( args [ 0 ] ) ;
207
- const ip2 : string = _ . toString ( args [ 1 ] ) ;
210
+ const [ arg0 , arg1 ] = args ;
211
+ const ip1 : string = ( arg0 || '' ) . toString ( ) ;
212
+ const ip2 : string = ( arg1 || '' ) . toString ( ) ;
208
213
209
214
return ipMatch ( ip1 , ip2 ) ;
210
215
}
@@ -229,15 +234,16 @@ function globMatch(string: string, pattern: string): boolean {
229
234
// generateGFunction is the factory method of the g(_, _) function.
230
235
function generateGFunction ( rm : rbac . RoleManager ) : any {
231
236
return async function func ( ...args : any [ ] ) : Promise < boolean > {
232
- const name1 : string = _ . toString ( args [ 0 ] ) ;
233
- const name2 : string = _ . toString ( args [ 1 ] ) ;
237
+ const [ arg0 , arg1 ] = args ;
238
+ const name1 : string = ( arg0 || '' ) . toString ( ) ;
239
+ const name2 : string = ( arg1 || '' ) . toString ( ) ;
234
240
235
241
if ( ! rm ) {
236
242
return name1 === name2 ;
237
243
} else if ( args . length === 2 ) {
238
244
return await rm . hasLink ( name1 , name2 ) ;
239
245
} else {
240
- const domain : string = _ . toString ( args [ 2 ] ) ;
246
+ const domain : string = args [ 2 ] . toString ( ) ;
241
247
return await rm . hasLink ( name1 , name2 , domain ) ;
242
248
}
243
249
} ;
0 commit comments