diff --git a/src/forge/SecuritySetting/bot/exploit/configuration/compenent/jurisdiction.jsx b/src/forge/SecuritySetting/bot/exploit/configuration/compenent/jurisdiction.jsx index a9a199fcd..c23c8c721 100644 --- a/src/forge/SecuritySetting/bot/exploit/configuration/compenent/jurisdiction.jsx +++ b/src/forge/SecuritySetting/bot/exploit/configuration/compenent/jurisdiction.jsx @@ -1,5 +1,5 @@ import React from "react"; -import { Button, Checkbox, Form, Input, message, Select } from "antd"; +import { Button, Checkbox, Form, Input, message, Select, Row, Col } from "antd"; import { useState } from "react"; import '../../new/index.scss'; import './index.scss'; @@ -13,12 +13,14 @@ function Jurisdiction(props){ const resource = [{value: 2, name: '无权限'}, {value: 0, name: '只读'}, {value: 1, name: '读写'}]; const [codeSelectValue , setCodeSelectValue ] = useState(undefined); const [prSelectValue , setPrSelectValue ] = useState(undefined); + const [ issueSelectValue , setIssueSelectValue ] = useState(undefined); useEffect(()=>{ if(botDetail){ - const {limit_and_events:{juris_diction_code, juris_diction_pr}} = botDetail + const {limit_and_events:{juris_diction_code, juris_diction_pr, juris_diction_issue}} = botDetail setCodeSelectValue(juris_diction_code); setPrSelectValue(juris_diction_pr); + setIssueSelectValue(juris_diction_issue); } }, [botDetail]) @@ -32,6 +34,11 @@ function Jurisdiction(props){ return e; } + function issueControl(e){ + setIssueSelectValue(e); + return e; + } + // 修改注册bot的权限 function submit(e){ e.preventDefault(); @@ -39,15 +46,17 @@ function Jurisdiction(props){ if(err){ return; } - const {juris_diction_code, juris_diction_pr, event_code, event_pr} = fieldsValue; + const {juris_diction_code, juris_diction_pr, event_code, event_pr, event_issue, juris_diction_issue} = fieldsValue; const params = { ...botDetail, bot_id: parseInt(id), limit_and_events: { - event_code: event_code ? event_code.toString() : "", - event_pr: event_pr ? event_pr.toString() : "", + event_code: event_code ? event_code.toString() : '', + event_pr: event_pr ? event_pr.toString() : '', + event_issue: event_issue ? event_issue.toString(): '', juris_diction_code, - juris_diction_pr + juris_diction_pr, + juris_diction_issue }, user_id: current_user && current_user.user_id, } @@ -64,8 +73,8 @@ function Jurisdiction(props){ // 校验仓库访问权限 function jurisDictionPrValidator(rule, value, callback){ - const {juris_diction_code} = getFieldsValue(); - if(juris_diction_code === 2 && value === 2){ + const {juris_diction_code, juris_diction_pr} = getFieldsValue(); + if(juris_diction_code === 2 && value === 2 && juris_diction_pr === 2){ callback('请至少选择一个权限'); return; } @@ -73,21 +82,13 @@ function Jurisdiction(props){ } // 校验用户必选一个订阅事件 - function eventValidator(rule, value, callback, type){ - const {event_code, event_pr} = getFieldsValue(); - const resourceValue = resource[0].value; - const boolPr = (event_code === undefined || (event_code && event_code.length === 0)) && prSelectValue === resourceValue; - const boolCode = (event_pr === undefined || (event_pr && event_pr.length === 0)) && codeSelectValue === resourceValue; - const bool = prSelectValue !== resourceValue && codeSelectValue !== resourceValue && (event_pr === undefined || (event_pr && event_pr.length === 0)) && (event_code === undefined || (event_code && event_code.length === 0)) - if(boolPr || boolCode){ - callback("请至少选择一个订阅"); - return; + function eventValidator(rule, value, callback){ + const {event_code, event_pr, event_issue} = getFieldsValue(); + if(event_code || event_pr || event_issue){ + callback(); + }else{ + callback("请至少选择一个订阅事件"); } - if(bool && type === "pr"){ - callback("请至少选择一个订阅"); - return; - } - callback(); } return
@@ -104,7 +105,16 @@ function Jurisdiction(props){
合并请求的打开、关闭、编辑、分配
- {getFieldDecorator("juris_diction_pr",{rules:[{validator: jurisDictionPrValidator}],initialValue: botDetail.limit_and_events.juris_diction_pr, getValueFromEvent: prControl})( + {getFieldDecorator("juris_diction_pr",{initialValue: botDetail.limit_and_events.juris_diction_pr, getValueFromEvent: prControl})( + + )} +
+
+ +
疑修的打开、关闭、编辑、分配、评论
+ {getFieldDecorator("juris_diction_issue",{rules:[{validator: jurisDictionPrValidator}],initialValue: resource[0].value, getValueFromEvent: issueControl})( @@ -114,12 +124,14 @@ function Jurisdiction(props){ {codeSelectValue !== resource[0].value && {getFieldDecorator("event_code", { initialValue: botDetail.limit_and_events.event_code ? botDetail.limit_and_events.event_code.split(',').map(item=>item = parseInt(item)) : [], - rules:[{validator: (rule, value, callback)=>{eventValidator(rule, value, callback, "code")}}] + rules:[{validator: (rule, value, callback)=>{eventValidator(rule, value, callback)}}] })( - 推送
git推送到存储库
- 创建
创建分支或标签
- 删除
删除分支或标签
+ + 推送
git推送到存储库
+ 创建
创建分支或标签
+ 删除
删除分支或标签
+
)}
} @@ -127,11 +139,29 @@ function Jurisdiction(props){ {prSelectValue !== resource[0].value && {getFieldDecorator("event_pr", { initialValue: botDetail.limit_and_events.event_pr ? botDetail.limit_and_events.event_pr.split(',').map(item=>item = parseInt(item)) : [], - rules:[{validator: (rule, value, callback)=>{eventValidator(rule, value, callback, "pr")}}] + rules:[{validator: (rule, value, callback)=>{eventValidator(rule, value, callback)}}] })( - 合并请求
合并请求被打开、被关闭、被重新打开或被编辑
- 合并请求分配
合并请求被分配或取消分配
+ + 合并请求
合并请求被打开、被关闭、被重新打开或被编辑
+ 合并请求分配
合并请求被分配或取消分配
+ 合并请求被评论
合并请求评论被创建、编辑或删除
+
+
+ )} +
} + {(codeSelectValue !== resource[0].value || prSelectValue !== resource[0].value) && issueSelectValue !== resource[0].value &&
} + {issueSelectValue !== resource[0].value && + {getFieldDecorator("event_issue",{ + rules:[{validator: (rule, value, callback)=>{eventValidator(rule, value, callback)}}] + })( + + + 疑修
疑修已打开、已关闭、已重新打开或编辑
+ 疑修已指派
疑修已被指派或取消指派
+ 已标记疑修
疑修标记被更新或清除
+ 疑修评论
疑修评论被创建、编辑或删除
+
)}
} diff --git a/src/forge/SecuritySetting/bot/exploit/new/index.jsx b/src/forge/SecuritySetting/bot/exploit/new/index.jsx index e18877ddd..b19da5e05 100644 --- a/src/forge/SecuritySetting/bot/exploit/new/index.jsx +++ b/src/forge/SecuritySetting/bot/exploit/new/index.jsx @@ -1,5 +1,5 @@ import React, { forwardRef, useState, useEffect } from "react"; -import { Button, Checkbox, Form, Input, message, Radio, Select } from "antd"; +import { Button, Checkbox, Col, Form, Input, message, Radio, Row, Select } from "antd"; import { Link } from "react-router-dom"; import MDEditor from '../../../../../modules/tpm/challengesnew/tpm-md-editor'; import './index.scss'; @@ -14,7 +14,8 @@ function Disposition(props){ const [ content , setContent ] = useState(undefined); const [ codeSelectValue , setCodeSelectValue ] = useState(resource[0].value); const [ prSelectValue , setPrSelectValue ] = useState(resource[0].value); - + const [ issueSelectValue , setIssueSelectValue ] = useState(resource[0].value); + useEffect(()=>{ document.title='注册新的Bot'; }, []) @@ -33,6 +34,11 @@ function Disposition(props){ return e; } + function issueControl(e){ + setIssueSelectValue(e); + return e; + } + // webhooks校验 function checkAddr(rule, value, callback) { let reg = /(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?/; @@ -47,8 +53,8 @@ function Disposition(props){ // 校验仓库访问权限 function jurisDictionPrValidator(rule, value, callback){ - const {juris_diction_code} = getFieldsValue(); - if(juris_diction_code === 2 && value === 2){ + const {juris_diction_code, juris_diction_pr} = getFieldsValue(); + if(juris_diction_code === 2 && value === 2 && juris_diction_pr === 2){ callback('请至少选择一个权限'); return; } @@ -56,21 +62,13 @@ function Disposition(props){ } // 校验用户必选一个订阅事件 - function eventValidator(rule, value, callback, type){ - const {event_code, event_pr} = getFieldsValue(); - const resourceValue = resource[0].value; - const boolPr = (event_code === undefined || (event_code && event_code.length === 0)) && prSelectValue === resourceValue; - const boolCode = (event_pr === undefined || (event_pr && event_pr.length === 0)) && codeSelectValue === resourceValue; - const bool = prSelectValue !== resourceValue && codeSelectValue !== resourceValue && (event_pr === undefined || (event_pr && event_pr.length === 0)) && (event_code === undefined || (event_code && event_code.length === 0)) - if(boolPr || boolCode){ - callback("请至少选择一个订阅"); - return; + function eventValidator(rule, value, callback){ + const {event_code, event_pr, event_issue} = getFieldsValue(); + if(event_code || event_pr || event_issue){ + callback(); + }else{ + callback("请至少选择一个订阅事件"); } - if(bool && type === "pr"){ - callback("请至少选择一个订阅"); - return; - } - callback(); } // 注册新的bot @@ -80,17 +78,19 @@ function Disposition(props){ if(err){ return; } - const {bot_name, bot_des, webhook, is_public, juris_diction_code, juris_diction_pr, event_code, event_pr, oauth_callback_url} = fieldsValue; + const {bot_name, bot_des, webhook, is_public, juris_diction_code, juris_diction_pr, event_code, event_pr, oauth_callback_url, event_issue, juris_diction_issue} = fieldsValue; const param = { bot_name, bot_des, webhook, is_public, login: current_user && current_user.login, user_id: current_user && current_user.user_id, logo: `/api/attachments/${window.location.host !== 'www.gitlink.org.cn' ? 347246 : 412603}`, limit_and_events: { - event_code: event_code ? event_code.toString() : "", - event_pr: event_pr ? event_pr.toString() : "", + event_code: event_code ? event_code.toString() : '', + event_pr: event_pr ? event_pr.toString() : '', + event_issue: event_issue ? event_issue.toString(): '', juris_diction_code, - juris_diction_pr + juris_diction_pr, + juris_diction_issue }, oauth_callback_url } @@ -157,32 +157,61 @@ function Disposition(props){
合并请求的打开、关闭、编辑、分配
- {getFieldDecorator("juris_diction_pr",{rules:[{validator: jurisDictionPrValidator}],initialValue: resource[0].value, getValueFromEvent: prControl})( + {getFieldDecorator("juris_diction_pr",{initialValue: resource[0].value, getValueFromEvent: prControl})( + + )} +
+
+ +
疑修的打开、关闭、编辑、分配、评论
+ {getFieldDecorator("juris_diction_issue",{rules:[{validator: jurisDictionPrValidator}],initialValue: resource[0].value, getValueFromEvent: issueControl})( )}
{(codeSelectValue !== resource[0].value || prSelectValue !== resource[0].value) &&
订阅事件
} - {codeSelectValue !== resource[0].value && + {codeSelectValue !== resource[0].value && {getFieldDecorator("event_code",{ - rules:[{validator: (rule, value, callback)=>{eventValidator(rule, value, callback, "code")}}] + rules:[{validator: (rule, value, callback)=>{eventValidator(rule, value, callback)}}] })( - 推送
git推送到存储库
- 创建
创建分支或标签
- 删除
删除分支或标签
+ + 推送
git推送到存储库
+ 创建
创建分支或标签
+ 删除
删除分支或标签
+
)}
} {(codeSelectValue !== resource[0].value && prSelectValue !== resource[0].value) &&
} {prSelectValue !== resource[0].value && {getFieldDecorator("event_pr",{ - rules:[{validator: (rule, value, callback)=>{eventValidator(rule, value, callback, "pr")}}] + rules:[{validator: (rule, value, callback)=>{eventValidator(rule, value, callback)}}] })( - 合并请求
合并请求被打开、被关闭、被重新打开或被编辑
- 合并请求分配
合并请求被分配或取消分配
+ + 合并请求
合并请求被打开、被关闭、被重新打开或被编辑
+ 合并请求分配
合并请求被分配或取消分配
+ 合并请求被评论
合并请求评论被创建、编辑或删除
+
+
+ )} +
} + {(codeSelectValue !== resource[0].value || prSelectValue !== resource[0].value) && issueSelectValue !== resource[0].value &&
} + {issueSelectValue !== resource[0].value && + {getFieldDecorator("event_issue",{ + rules:[{validator: (rule, value, callback)=>{eventValidator(rule, value, callback)}}] + })( + + + 疑修
疑修已打开、已关闭、已重新打开或编辑
+ 疑修已指派
疑修已被指派或取消指派
+ 已标记疑修
疑修标记被更新或清除
+ 疑修评论
疑修评论被创建、编辑或删除
+
)}
} diff --git a/src/forge/SecuritySetting/bot/exploit/new/index.scss b/src/forge/SecuritySetting/bot/exploit/new/index.scss index 010ef40f3..84921de72 100644 --- a/src/forge/SecuritySetting/bot/exploit/new/index.scss +++ b/src/forge/SecuritySetting/bot/exploit/new/index.scss @@ -24,7 +24,7 @@ .width50{ width: 60%; &.checkBox{ - width: 68%; + width: 75%; } .height36{ height: 36px; @@ -50,23 +50,15 @@ margin-bottom: 0; } &.checkBox .ant-checkbox-group{ - display: flex; - flex-wrap: wrap; - justify-content: space-between; + width: 100%; + .ant-row{width: 100%;} .color-99{padding-left: 24px;} } - &.three .ant-checkbox-wrapper{ - width: 34%; - margin-left: 0px; - padding-left: 12px; - &:first-child, &:last-child{ - padding-left: 0px; - } - } } .dashedBor{ border-bottom: 1px dashed #e0e6f5; margin-bottom: 12px; + margin-top: -20px; } .resourceBox + .dashedBor{ margin-top: -15px;