@@ -104,7 +104,7 @@ const internalProxyHost = {
104
104
/**
105
105
* @param {Access } access
106
106
* @param {Object } data
107
- * @param {Integer } data.id
107
+ * @param {Number } data.id
108
108
* @return {Promise }
109
109
*/
110
110
update : ( access , data ) => {
@@ -192,7 +192,7 @@ const internalProxyHost = {
192
192
return internalNginx . configure ( proxyHostModel , 'proxy_host' , row )
193
193
. then ( new_meta => {
194
194
row . meta = new_meta ;
195
- row = internalHost . cleanRowCertificateMeta ( row ) ;
195
+ row = internalHost . cleanRowCertificateMeta ( row ) ;
196
196
return _ . omit ( row , omissions ( ) ) ;
197
197
} ) ;
198
198
} ) ;
@@ -202,7 +202,7 @@ const internalProxyHost = {
202
202
/**
203
203
* @param {Access } access
204
204
* @param {Object } data
205
- * @param {Integer } data.id
205
+ * @param {Number } data.id
206
206
* @param {Array } [data.expand]
207
207
* @param {Array } [data.omit]
208
208
* @return {Promise }
@@ -249,7 +249,7 @@ const internalProxyHost = {
249
249
/**
250
250
* @param {Access } access
251
251
* @param {Object } data
252
- * @param {Integer } data.id
252
+ * @param {Number } data.id
253
253
* @param {String } [data.reason]
254
254
* @returns {Promise }
255
255
*/
@@ -291,6 +291,101 @@ const internalProxyHost = {
291
291
} ) ;
292
292
} ,
293
293
294
+ /**
295
+ * @param {Access } access
296
+ * @param {Object } data
297
+ * @param {Number } data.id
298
+ * @param {String } [data.reason]
299
+ * @returns {Promise }
300
+ */
301
+ enable : ( access , data ) => {
302
+ return access . can ( 'proxy_hosts:update' , data . id )
303
+ . then ( ( ) => {
304
+ return internalProxyHost . get ( access , { id : data . id } ) ;
305
+ } )
306
+ . then ( row => {
307
+ if ( ! row ) {
308
+ throw new error . ItemNotFoundError ( data . id ) ;
309
+ } else if ( row . enabled ) {
310
+ throw new error . ValidationError ( 'Host is already enabled' ) ;
311
+ }
312
+
313
+ row . enabled = 1 ;
314
+
315
+ return proxyHostModel
316
+ . query ( )
317
+ . where ( 'id' , row . id )
318
+ . patch ( {
319
+ enabled : 1
320
+ } )
321
+ . then ( ( ) => {
322
+ // Configure nginx
323
+ return internalNginx . configure ( proxyHostModel , 'proxy_host' , row ) ;
324
+ } )
325
+ . then ( ( ) => {
326
+ // Add to audit log
327
+ return internalAuditLog . add ( access , {
328
+ action : 'enabled' ,
329
+ object_type : 'proxy-host' ,
330
+ object_id : row . id ,
331
+ meta : _ . omit ( row , omissions ( ) )
332
+ } ) ;
333
+ } ) ;
334
+ } )
335
+ . then ( ( ) => {
336
+ return true ;
337
+ } ) ;
338
+ } ,
339
+
340
+ /**
341
+ * @param {Access } access
342
+ * @param {Object } data
343
+ * @param {Number } data.id
344
+ * @param {String } [data.reason]
345
+ * @returns {Promise }
346
+ */
347
+ disable : ( access , data ) => {
348
+ return access . can ( 'proxy_hosts:update' , data . id )
349
+ . then ( ( ) => {
350
+ return internalProxyHost . get ( access , { id : data . id } ) ;
351
+ } )
352
+ . then ( row => {
353
+ if ( ! row ) {
354
+ throw new error . ItemNotFoundError ( data . id ) ;
355
+ } else if ( ! row . enabled ) {
356
+ throw new error . ValidationError ( 'Host is already disabled' ) ;
357
+ }
358
+
359
+ row . enabled = 0 ;
360
+
361
+ return proxyHostModel
362
+ . query ( )
363
+ . where ( 'id' , row . id )
364
+ . patch ( {
365
+ enabled : 0
366
+ } )
367
+ . then ( ( ) => {
368
+ // Delete Nginx Config
369
+ return internalNginx . deleteConfig ( 'proxy_host' , row )
370
+ . then ( ( ) => {
371
+ return internalNginx . reload ( ) ;
372
+ } ) ;
373
+ } )
374
+ . then ( ( ) => {
375
+ // Add to audit log
376
+ return internalAuditLog . add ( access , {
377
+ action : 'disabled' ,
378
+ object_type : 'proxy-host' ,
379
+ object_id : row . id ,
380
+ meta : _ . omit ( row , omissions ( ) )
381
+ } ) ;
382
+ } ) ;
383
+ } )
384
+ . then ( ( ) => {
385
+ return true ;
386
+ } ) ;
387
+ } ,
388
+
294
389
/**
295
390
* All Hosts
296
391
*
@@ -339,7 +434,7 @@ const internalProxyHost = {
339
434
/**
340
435
* Report use
341
436
*
342
- * @param {Integer } user_id
437
+ * @param {Number } user_id
343
438
* @param {String } visibility
344
439
* @returns {Promise }
345
440
*/
0 commit comments