@@ -200,7 +200,7 @@ func CreateInstanceAuditPlan(c echo.Context) error {
200
200
return controller .JSONBaseErrorReq (c , err )
201
201
}
202
202
// generate token , 生成ID后根据ID生成token
203
- err = GenerateInstanceAuditPlanToken (ap .GetIDStr ())
203
+ err = HandleAuditPlanToken (ap .GetIDStr ())
204
204
if err != nil {
205
205
return controller .JSONBaseErrorReq (c , err )
206
206
}
@@ -214,7 +214,7 @@ func CreateInstanceAuditPlan(c echo.Context) error {
214
214
})
215
215
}
216
216
217
- func GenerateInstanceAuditPlanToken (instanceAuditPlanID string ) error {
217
+ func HandleAuditPlanToken (instanceAuditPlanID string ) error {
218
218
s := model .GetStorage ()
219
219
220
220
ap , exist , err := s .GetInstanceAuditPlanDetail (instanceAuditPlanID )
@@ -224,36 +224,50 @@ func GenerateInstanceAuditPlanToken(instanceAuditPlanID string) error {
224
224
if ! exist {
225
225
return errors .NewInstanceAuditPlanNotExistErr ()
226
226
}
227
- return generateAndUpdateAuditPlanToken (ap , tokenExpire )
227
+
228
+ return UpdateInstanceAuditPlanToken (ap , tokenExpire )
228
229
}
229
230
230
- func generateAndUpdateAuditPlanToken (ap * model.InstanceAuditPlan , tokenExpire time.Duration ) ( err error ) {
231
- var needGenerateToken bool
232
- for _ , v := range ap . AuditPlans {
233
- if _ , ok := auditplan . GetSupportedScannerAuditPlanType ()[ v . Type ]; ok {
234
- needGenerateToken = true
235
- }
236
- }
237
- var t string
238
- if needGenerateToken {
239
- t , err = dmsCommonJwt . GenJwtToken ( dmsCommonJwt . WithExpiredTime ( tokenExpire ), dmsCommonJwt . WithAuditPlanName ( utils . Md5 ( ap . GetIDStr ())) )
231
+ func UpdateInstanceAuditPlanToken (ap * model.InstanceAuditPlan , tokenExpire time.Duration ) error {
232
+ // 存在scanner依赖的任务类型时候,重新生成token
233
+ needGenerate := HasScannerTypeSubPlans ( ap )
234
+ // 当前token是否为为空
235
+ currentTokenEmpty := ap . Token == ""
236
+
237
+ var token string
238
+ var err error
239
+ if needGenerate {
240
+ token , err = newAuditPlanToken ( ap , tokenExpire )
240
241
if err != nil {
241
242
return errors .New (errors .DataConflict , err )
242
243
}
243
244
}
244
245
245
- // 更新token的条件
246
- // 1. 需要生成token,并且现在token为空
247
- // 2. 不需要生成token(移除token),并且现在token不为空
248
- if needGenerateToken == (ap .Token == "" ) {
249
- err = model .GetStorage ().UpdateInstanceAuditPlanByID (ap .ID , map [string ]interface {}{"token" : t })
250
- if err != nil {
251
- return err
252
- }
246
+ // 1. 添加token: 存在scanner类型任务并且原本token为空
247
+ // 2. 删除token: 不存在scanner类型任务并且原本token不为空
248
+ if needGenerate == currentTokenEmpty {
249
+ return model .GetStorage ().UpdateInstanceAuditPlanByID (ap .ID , map [string ]interface {}{"token" : token })
253
250
}
254
251
return nil
255
252
}
256
253
254
+ func HasScannerTypeSubPlans (ap * model.InstanceAuditPlan ) bool {
255
+ supportedTypes := auditplan .GetSupportedScannerAuditPlanType ()
256
+ for _ , plan := range ap .AuditPlans {
257
+ if _ , ok := supportedTypes [plan .Type ]; ok {
258
+ return true
259
+ }
260
+ }
261
+ return false
262
+ }
263
+
264
+ func newAuditPlanToken (ap * model.InstanceAuditPlan , tokenExpire time.Duration ) (string , error ) {
265
+ return dmsCommonJwt .GenJwtToken (
266
+ dmsCommonJwt .WithExpiredTime (tokenExpire ),
267
+ dmsCommonJwt .WithAuditPlanName (utils .Md5 (ap .GetIDStr ())),
268
+ )
269
+ }
270
+
257
271
// @Summary 删除实例扫描任务
258
272
// @Description delete instance audit plan
259
273
// @Id deleteInstanceAuditPlanV1
@@ -413,7 +427,7 @@ func UpdateInstanceAuditPlan(c echo.Context) error {
413
427
if err != nil {
414
428
return controller .JSONBaseErrorReq (c , err )
415
429
}
416
- err = GenerateInstanceAuditPlanToken (instanceAuditPlanID )
430
+ err = HandleAuditPlanToken (instanceAuditPlanID )
417
431
if err != nil {
418
432
return controller .JSONBaseErrorReq (c , err )
419
433
}
@@ -792,7 +806,7 @@ func DeleteAuditPlanById(c echo.Context) error {
792
806
if err != nil {
793
807
return controller .JSONBaseErrorReq (c , err )
794
808
}
795
- err = GenerateInstanceAuditPlanToken (instanceAuditPlanID )
809
+ err = HandleAuditPlanToken (instanceAuditPlanID )
796
810
if err != nil {
797
811
return controller .JSONBaseErrorReq (c , err )
798
812
}
@@ -1334,22 +1348,22 @@ func AuditPlanTriggerSqlAudit(c echo.Context) error {
1334
1348
return controller .JSONBaseErrorReq (c , nil )
1335
1349
}
1336
1350
1337
- type GenerateAuditPlanTokenReqV1 struct {
1351
+ type RefreshAuditPlanTokenReqV1 struct {
1338
1352
ExpiresInDays * int `json:"expires_in_days"`
1339
1353
}
1340
1354
1341
- // @Summary 生成扫描任务token
1342
- // @Description generate audit plan token
1343
- // @Id generateAuditPlanTokenV1
1355
+ // @Summary 重置扫描任务token
1356
+ // @Description refresh audit plan token
1357
+ // @Id refreshAuditPlanTokenV1
1344
1358
// @Tags instance_audit_plan
1345
1359
// @Security ApiKeyAuth
1346
- // @param audit_plan body v1.GenerateAuditPlanTokenReqV1 false "update instance audit plan token"
1360
+ // @param audit_plan body v1.RefreshAuditPlanTokenReqV1 false "update instance audit plan token"
1347
1361
// @Param project_name path string true "project name"
1348
1362
// @Param instance_audit_plan_id path string true "instance audit plan id"
1349
1363
// @Success 200 {object} controller.BaseRes
1350
1364
// @router /v1/projects/{project_name}/instance_audit_plans/{instance_audit_plan_id}/token [patch]
1351
- func GenerateAuditPlanToken (c echo.Context ) error {
1352
- req := new (GenerateAuditPlanTokenReqV1 )
1365
+ func RefreshAuditPlanToken (c echo.Context ) error {
1366
+ req := new (RefreshAuditPlanTokenReqV1 )
1353
1367
if err := controller .BindAndValidateReq (c , req ); err != nil {
1354
1368
return controller .JSONBaseErrorReq (c , err )
1355
1369
}
@@ -1374,10 +1388,22 @@ func GenerateAuditPlanToken(c echo.Context) error {
1374
1388
expireDuration = time .Duration (expiresInDays ) * 24 * time .Hour
1375
1389
}
1376
1390
}
1377
- instanceAuditPlan . Token = ""
1378
- err = generateAndUpdateAuditPlanToken (instanceAuditPlan , expireDuration )
1391
+
1392
+ err = RefreshInstanceAuditPlanToken (instanceAuditPlan , expireDuration )
1379
1393
if err != nil {
1380
1394
return controller .JSONBaseErrorReq (c , err )
1381
1395
}
1382
1396
return controller .JSONBaseErrorReq (c , nil )
1383
1397
}
1398
+
1399
+ func RefreshInstanceAuditPlanToken (ap * model.InstanceAuditPlan , tokenExpire time.Duration ) error {
1400
+ var token string
1401
+ var err error
1402
+ if HasScannerTypeSubPlans (ap ) {
1403
+ token , err = newAuditPlanToken (ap , tokenExpire )
1404
+ if err != nil {
1405
+ return errors .New (errors .DataConflict , err )
1406
+ }
1407
+ }
1408
+ return model .GetStorage ().UpdateInstanceAuditPlanByID (ap .ID , map [string ]interface {}{"token" : token })
1409
+ }
0 commit comments