DAST Site profile - add remaining options
## Summary
This is the second iteration for building the **DAST site profile** form MVC. At this point, we should have a basic form already done, and we're going to add the **Website/API** selection, **Authentication** section, **Request headers** field, and **Excluded URLs** field.
## Designs
- Figma file: https://www.figma.com/file/7CaJqOTOpPEOzkYkoU5bs5/DAST-Ondemand-Profile
| Site profile options | Values shown on scan page |
| ------ | ------ |
|  |  |
## Implementation plan
~frontend
- [x] Add the **Website/API** radio buttons
- [x] Add the **Authentication** section to the form with the following fields:
- [x] **Enable authentication**: radio buttons, if `true`:
- [x] **Authenticated Site**: the URL where the login form can be found
- [x] **Password**
- [x] **Username Form Field**: name of the username field in the sign-in form
- [x] **Password Form Field**: name of the password field in the sign-in form
- [x] Add the **Request Headers** field: textarea, optional.
- [x] Add the **Excluded URLs** field: textarea, optional
- [ ] Extend the GraphQL mutation[2] to include the new fields.
~backend
- [x] add support for website/api selection
- [x] add support for request headers
- [x] add support for authentication
- [x] add support for excluded URLs
## Proposed GraphQL mutation:
```diff
--- proposal_iteration1.graphql 2020-06-26 17:17:14.000000000 -0400
+++ proposal_iteration2.graphql 2020-06-26 17:13:12.000000000 -0400
@@ -2,6 +2,11 @@
$fullPath: ID!
$profileName: String!
$targetUrl: String
+ $authUrl: String
+ $authUsernameField: String
+ $authPasswordField: String
+ $authPassword: String
+ $requestHeaders: String
$draft: Boolean
) {
project(fullPath: $fullPath) {
@@ -9,6 +14,13 @@
input: {
profileName: $profileName
targetUrl: $targetUrl
+ auth: {
+ url: $url
+ usernameField: $usernameField
+ passwordField: $passwordField
+ password: $password
+ }
+ requestHeaders: $requestHeaders
draft: $draft
}
) {
```
epic