Flow now works

This commit is contained in:
2024-11-17 20:40:50 +01:00
parent 157896d5d7
commit 6ae65e9169
8 changed files with 144 additions and 276 deletions

View File

@@ -1,6 +1,8 @@
package controllers
import (
"fmt"
"html"
"html/template"
"log"
"net/http"
@@ -9,6 +11,13 @@ import (
)
func Index(w http.ResponseWriter, r *http.Request) {
if r.URL.Path != "/" {
w.WriteHeader(http.StatusNotFound)
fmt.Fprintf(w, "Error: 404 %s not found.", html.EscapeString(r.URL.Path))
return
}
lp := filepath.Join("application", "layouts", "main.html")
fp := filepath.Join("application", "views", "index.html")

View File

@@ -10,7 +10,7 @@ import (
"risklet/db"
)
func Advanced(w http.ResponseWriter, r *http.Request) {
func ThankYou(w http.ResponseWriter, r *http.Request) {
if r.Method == "GET" {
handleAdvancedGet(w, r)
} else if r.Method == "POST" {
@@ -43,12 +43,11 @@ func handleAdvancedPost(w http.ResponseWriter, r *http.Request) {
}
func handleAdvancedGet(w http.ResponseWriter, r *http.Request) {
companyId := r.PathValue("companyId")
lp := filepath.Join("application", "layouts", "main.html")
fp := filepath.Join("application", "views", "advanced.html")
fp := filepath.Join("application", "views", "thankyou.html")
log.Println("Hitting Advanced")
log.Println("Hitting ThankYou")
// Return a 404 if the template doesn't exist
info, err := os.Stat(fp)
@@ -74,7 +73,7 @@ func handleAdvancedGet(w http.ResponseWriter, r *http.Request) {
return
}
err = tmpl.ExecuteTemplate(w, "main.html", companyId)
err = tmpl.ExecuteTemplate(w, "main.html", nil)
if err != nil {
log.Print(err.Error())
http.Error(w, http.StatusText(500), 500)

View File

@@ -9,6 +9,6 @@ func SetupAppServer() {
fs := http.FileServer(http.Dir("./application/static"))
http.Handle("GET /static/", http.StripPrefix("/static/", fs))
http.HandleFunc("/signup/", controllers.Signup)
http.HandleFunc("/advanced/{companyString}", controllers.Advanced)
http.HandleFunc("/thankyou", controllers.ThankYou)
http.HandleFunc("/", controllers.Index)
}

View File

@@ -1,4 +1,9 @@
body {
font-family: 'Jost', sans-serif;
font-size: var(--bs-body-font-size);
}
:root {
--bs-body-font-size: 1.5rem;
}

View File

@@ -0,0 +1,43 @@
<svg width="620" height="89" viewBox="0 0 620 89" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M620 44.1094H76.4492V51.7882H620V44.1094Z" fill="#FDC0C1"/>
<path d="M76.5515 21.9563L57.6448 11.124L38.2165 0L29.0872 5.28213L0 22.1298L0.126466 22.2007L0.22922 66.2553L38.3192 88.0697L38.3271 88.2116L38.4457 88.1407L38.5722 88.2116V88.0697L76.5199 66.0976L76.4646 43.7077L76.4171 22.0431" fill="#FFDFDF"/>
<path d="M57.6049 55.5352L38.5006 66.604L38.4453 44.5688L57.5575 33.5L57.5812 44.3402L57.6049 55.5352Z" fill="#E0ECFF"/>
<path d="M33.8855 25.1176L38.4462 22.4766L48.1683 28.0425L57.6295 33.4587L38.5094 44.5275L19.334 33.5454L33.8855 25.1176Z" fill="white"/>
<path d="M19.3965 33.5703L38.5719 44.5524L38.6272 66.6034L19.4518 55.6212L19.3965 33.5703Z" fill="#5498FF"/>
<path d="M76.4481 44.3481L67.1054 38.995L57.5098 33.5L53.0045 36.1095L38.6348 44.4348L38.698 44.4663L38.7533 66.2256L57.5652 77.0027V77.0737L57.6284 77.0342L57.6916 77.0737V77.0027L76.4323 66.1467L76.4086 55.0937L76.377 44.3875" fill="#FDA7A9"/>
<path d="M57.7721 11.3923L48.3108 5.97611L38.5967 0.410156L34.0281 3.05122L19.4766 11.479L19.5398 11.5184L19.5951 33.5536L38.652 44.4647V44.5357L38.7152 44.5041L38.7705 44.5357V44.4647L57.7563 33.4747L57.7326 22.2798L57.7009 11.4396" fill="#FFDFDF"/>
<path d="M38.5415 44.2048L29.0803 38.7886L19.3661 33.2227L14.7975 35.8637L0.253906 44.2915L0.309235 44.3309L0.364564 66.3661L19.4214 77.2772V77.3482L19.4847 77.3088L19.54 77.3482V77.2772L38.5257 66.2872L38.502 55.0844L38.4704 44.2521" fill="#FDB3B5"/>
<path d="M57.6049 55.5352L38.5006 66.604L38.4453 44.5688L57.5575 33.5L57.5812 44.3402L57.6049 55.5352Z" fill="#FDC0C1"/>
<path d="M33.8855 25.1176L38.4462 22.4766L48.1683 28.0425L57.6295 33.4587L38.5094 44.5275L19.334 33.5454L33.8855 25.1176Z" fill="#FFF1F1"/>
<path d="M19.3965 33.5703L38.5719 44.5524L38.6272 66.6034L19.4518 55.6212L19.3965 33.5703Z" fill="#F87E81"/>
<path d="M257.706 21.9563L238.791 11.124L219.363 0L210.242 5.28213L181.146 22.1298L181.273 22.2007L181.384 66.2553L219.474 88.0697V88.2116L219.592 88.1407L219.719 88.2116V88.0697L257.666 66.0976L257.619 43.7077L257.564 22.0431" fill="#FFDFDF"/>
<path d="M238.759 55.5352L219.655 66.604L219.6 44.5688L238.704 33.5L238.728 44.3402L238.759 55.5352Z" fill="#E0ECFF"/>
<path d="M215.032 25.1176L219.601 22.4766L229.315 28.0425L238.776 33.4587L219.656 44.5275L200.48 33.5454L215.032 25.1176Z" fill="white"/>
<path d="M200.543 33.5703L219.718 44.5524L219.774 66.6034L200.598 55.6212L200.543 33.5703Z" fill="#5498FF"/>
<path d="M257.596 44.3481L248.262 38.995L238.666 33.5L234.161 36.1095L219.791 44.4348L219.854 44.4663L219.902 66.2256L238.714 77.0027L238.721 77.0737L238.777 77.0342L238.84 77.0737V77.0027L257.581 66.1467L257.557 55.0937L257.533 44.3875" fill="#FDA7A9"/>
<path d="M238.926 11.3923L229.465 5.97611L219.743 0.410156L215.182 3.05122L200.631 11.479L200.694 11.5184L200.749 33.5536L219.798 44.4647V44.5357L219.862 44.5041L219.925 44.5357V44.4647L238.903 33.4747L238.879 22.2798L238.855 11.4396" fill="#FFDFDF"/>
<path d="M219.696 44.2048L210.235 38.7886L200.513 33.2227L195.952 35.8637L181.4 44.2915L181.464 44.3309L181.519 66.3661L200.568 77.2772V77.3482L200.631 77.3088L200.694 77.3482V77.2772L219.672 66.2872L219.648 55.0844L219.625 44.2521" fill="#FDB3B5"/>
<path d="M238.759 55.5352L219.655 66.604L219.6 44.5688L238.704 33.5L238.728 44.3402L238.759 55.5352Z" fill="#FDC0C1"/>
<path d="M215.032 25.1176L219.601 22.4766L229.315 28.0425L238.776 33.4587L219.656 44.5275L200.48 33.5454L215.032 25.1176Z" fill="#FFF1F1"/>
<path d="M200.543 33.5703L219.718 44.5524L219.774 66.6034L200.598 55.6212L200.543 33.5703Z" fill="#F87E81"/>
<path d="M438.852 22.7454L419.946 11.9131L400.517 0.789062L391.388 6.0712L362.301 22.9188L362.427 22.9898L362.53 67.0444L400.62 88.8588V89.0007L400.746 88.9297L400.873 89.0007L400.865 88.8588L438.821 66.8867L438.765 44.4967L438.71 22.8321" fill="#FFDFDF"/>
<path d="M419.908 56.3203L400.803 67.3892L400.748 45.354L419.852 34.2852L419.884 45.1254L419.908 56.3203Z" fill="#E0ECFF"/>
<path d="M396.186 25.9067L400.747 23.2656L410.469 28.8316L419.922 34.2477L400.81 45.3166L381.635 34.3345L396.186 25.9067Z" fill="white"/>
<path d="M381.699 34.3594L400.875 45.3415L400.93 67.3924L381.747 56.4103L381.699 34.3594Z" fill="#5498FF"/>
<path d="M438.751 45.1332L429.408 39.7801L419.813 34.2852L415.307 36.8947L400.938 45.22L401.001 45.2515L401.056 67.0107L419.868 77.7879V77.8588L419.931 77.8194L419.986 77.8588V77.7879L438.735 66.9319L438.703 55.8788L438.68 45.1727" fill="#FDA7A9"/>
<path d="M420.073 12.1813L410.612 6.76517L400.897 1.19922L396.329 3.84029L381.777 12.268L381.841 12.3075L381.896 34.3426L400.945 45.2538L400.953 45.3247L401.008 45.2932L401.071 45.3247V45.2538L420.057 34.2638L420.025 23.0688L420.002 12.2286" fill="#FFDFDF"/>
<path d="M400.842 44.9938L391.381 39.5777L381.667 34.0117L377.098 36.6528L362.547 45.0805L362.61 45.12L362.665 67.1551L381.722 78.0663V78.1372L381.778 78.0978L381.841 78.1372V78.0663L400.827 67.0763L400.795 55.8734L400.771 45.0411" fill="#FDB3B5"/>
<path d="M419.908 56.3203L400.803 67.3892L400.748 45.354L419.852 34.2852L419.884 45.1254L419.908 56.3203Z" fill="#FDC0C1"/>
<path d="M396.186 25.9067L400.747 23.2656L410.469 28.8316L419.922 34.2477L400.81 45.3166L381.635 34.3345L396.186 25.9067Z" fill="#FFF1F1"/>
<path d="M381.699 34.3594L400.875 45.3415L400.93 67.3924L381.747 56.4103L381.699 34.3594Z" fill="#F87E81"/>
<path d="M620.001 22.7454L601.094 11.9131L581.666 0.789062L572.536 6.0712L543.449 22.9188L543.576 22.9898L543.678 67.0444L581.776 88.8588V89.0007L581.895 88.9297L582.021 89.0007V88.8588L619.969 66.8867L619.914 44.4967L619.866 22.8321" fill="#FFDFDF"/>
<path d="M601.062 56.3203L581.95 67.3892L581.902 45.354L601.007 34.2852L601.03 45.1254L601.062 56.3203Z" fill="#E0ECFF"/>
<path d="M577.333 25.9067L581.893 23.2656L591.616 28.8316L601.077 34.2477L581.957 45.3166L562.781 34.3345L577.333 25.9067Z" fill="white"/>
<path d="M562.846 34.3594L582.021 45.3415L582.076 67.3924L562.901 56.4103L562.846 34.3594Z" fill="#5498FF"/>
<path d="M619.897 45.1332L610.563 39.7801L600.967 34.2852L596.454 36.8947L582.084 45.22L582.147 45.2515L582.203 67.0107L601.014 77.7879V77.8588L601.078 77.8194L601.141 77.8588V77.7879L619.882 66.9319L619.858 55.8788L619.834 45.1727" fill="#FDA7A9"/>
<path d="M601.219 12.1813L591.766 6.76517L582.044 1.19922L577.483 3.84029L562.932 12.268L562.995 12.3075L563.042 34.3426L582.099 45.2538V45.3247L582.162 45.2932L582.226 45.3247L582.218 45.2538L601.203 34.2638L601.18 23.0688L601.148 12.2286" fill="#FFDFDF"/>
<path d="M581.989 44.9938L572.535 39.5777L562.813 34.0117L558.253 36.6528L543.701 45.0805L543.764 45.12L543.812 67.1551L562.869 78.0663V78.1372L562.932 78.0978L562.995 78.1372V78.0663L581.973 67.0763L581.949 55.8734L581.918 45.0411" fill="#FDB3B5"/>
<path d="M601.062 56.3203L581.95 67.3892L581.902 45.354L601.007 34.2852L601.03 45.1254L601.062 56.3203Z" fill="#FDC0C1"/>
<path d="M577.333 25.9067L581.893 23.2656L591.616 28.8316L601.077 34.2477L581.957 45.3166L562.781 34.3345L577.333 25.9067Z" fill="#FFF1F1"/>
<path d="M562.846 34.3594L582.021 45.3415L582.076 67.3924L562.901 56.4103L562.846 34.3594Z" fill="#F87E81"/>
</svg>

After

Width:  |  Height:  |  Size: 7.0 KiB

View File

@@ -1,198 +0,0 @@
{{define "content"}}
<div class="container">
<div class="row">
<div class="col">
<h1 class="pt-4 mt-5 mb-4">Advanced Risk Assessment</h1>
<hr>
<form method="post">
<!-- Geographic Operational Scope -->
<div class="mb-3 question" id="q1">
<label for="geo-scope" class="form-label mt-3">What is your organization's geographic operational scope?</label>
<hr>
<select class="form-select" id="geo-scope" name="GeoScope" required>
<option value="single-country">Single country</option>
<option value="single-region">Multiple countries - Single region</option>
<option value="multiple-regions">Multiple countries - Multiple regions</option>
<option value="global">Global operations</option>
</select>
<small class="form-text text-muted py-3">Determines exposure to different cybersecurity regulations.</small>
</div>
<!-- Customer Base Distribution -->
<div class="mb-3 question" id="q2">
<label for="customer-base" class="form-label mt-3">How would you characterize your customer base distribution?</label>
<hr>
<select class="form-select" id="customer-base" name="CustomerBase" required>
<option value="few-key">Few key clients (1-5)</option>
<option value="moderate">Moderate concentration (6-20)</option>
<option value="diverse">Diverse customer base (20+)</option>
</select>
<small class="form-text text-muted py-3">Assesses potential impact of data breaches.</small>
</div>
<!-- Primary Customer Type -->
<div class="mb-3 question" id="q3">
<label for="customer-type" class="form-label mt-3">What is your primary customer type?</label>
<hr>
<select class="form-select" id="customer-type" name="CustomerType" required>
<option value="b2b">Primarily B2B</option>
<option value="b2c">Primarily B2C</option>
<option value="mixed">Mixed B2B/B2C</option>
</select>
<small class="form-text text-muted py-3">Defines data protection requirements.</small>
</div>
<!-- Product/Service Portfolio -->
<div class="mb-3 question" id="q4">
<label for="product-portfolio" class="form-label mt-3">How diversified is your product/service portfolio?</label>
<hr>
<select class="form-select" id="product-portfolio" name="ProductPortfolio" required>
<option value="single">Single product/service</option>
<option value="2-5">2-5 products/services</option>
<option value="more-than-5">More than 5 products/services</option>
</select>
<small class="form-text text-muted py-3">Indicates the variety of systems requiring protection.</small>
</div>
<!-- Supplier Base Structure -->
<div class="mb-3 question" id="q5">
<label for="supplier-base" class="form-label mt-3">What is your supplier base structure?</label>
<hr>
<select class="form-select" id="supplier-base" name="SupplierBase" required>
<option value="single-critical">Single/few critical suppliers</option>
<option value="moderate">Moderate supplier base</option>
<option value="highly-diverse">Highly diverse supplier base</option>
</select>
<small class="form-text text-muted py-3">Assesses third-party cybersecurity risks.</small>
</div>
<!-- IT Infrastructure Model -->
<div class="mb-3 question" id="q6">
<label class="form-label mt-3">What is your primary IT infrastructure model?</label>
<hr>
<div>
<div class="form-check">
<input class="form-check-input" type="checkbox" name="ITInfrastructure" id="it-on-prem" value="on-premises">
<label class="form-check-label" for="it-on-prem">On-premises systems</label>
</div>
<div class="form-check">
<input class="form-check-input" type="checkbox" name="ITInfrastructure" id="it-cloud" value="cloud-based">
<label class="form-check-label" for="it-cloud">Cloud-based systems</label>
</div>
<div class="form-check">
<input class="form-check-input" type="checkbox" name="ITInfrastructure" id="it-hybrid" value="hybrid">
<label class="form-check-label" for="it-hybrid">Hybrid infrastructure</label>
</div>
<div class="form-check">
<input class="form-check-input" type="checkbox" name="ITInfrastructure" id="it-legacy" value="legacy">
<label class="form-check-label" for="it-legacy">Legacy systems</label>
</div>
<div class="form-check">
<input class="form-check-input" type="checkbox" name="ITInfrastructure" id="it-modern" value="modern">
<label class="form-check-label" for="it-modern">Modern architecture</label>
</div>
</div>
<small class="form-text text-muted py-3">Determines specific cybersecurity controls.</small>
</div>
<!-- Intellectual Property Protection -->
<div class="mb-3 question" id="q7">
<label class="form-label mt-3">How does your organization protect and manage intellectual property?</label>
<hr>
<div>
<div class="form-check">
<input class="form-check-input" type="checkbox" name="IPProtection" id="ip-patents" value="patents">
<label class="form-check-label" for="ip-patents">Patents owned</label>
</div>
<div class="form-check">
<input class="form-check-input" type="checkbox" name="IPProtection" id="ip-licensed" value="licensed-ip">
<label class="form-check-label" for="ip-licensed">Licensed IP from others</label>
</div>
<div class="form-check">
<input class="form-check-input" type="checkbox" name="IPProtection" id="ip-trade-secrets" value="trade-secrets">
<label class="form-check-label" for="ip-trade-secrets">Trade secrets</label>
</div>
<div class="form-check">
<input class="form-check-input" type="checkbox" name="IPProtection" id="ip-joint" value="joint-ip">
<label class="form-check-label" for="ip-joint">Joint IP ownership</label>
</div>
<div class="form-check">
<input class="form-check-input" type="checkbox" name="IPProtection" id="ip-none" value="no-ip">
<label class="form-check-label" for="ip-none">No significant IP</label>
</div>
</div>
<small class="form-text text-muted py-3">Evaluates cybersecurity needs based on IP ownership.</small>
</div>
<!-- Sensitive Data -->
<div class="mb-3 question" id="q8">
<label class="form-label mt-3">What type of sensitive data does your organization handle?</label>
<hr>
<div>
<div class="form-check">
<input class="form-check-input" type="checkbox" name="SensitiveData" id="data-personal" value="personal">
<label class="form-check-label" for="data-personal">Personal customer data</label>
</div>
<div class="form-check">
<input class="form-check-input" type="checkbox" name="SensitiveData" id="data-financial" value="financial">
<label class="form-check-label" for="data-financial">Financial records</label>
</div>
<div class="form-check">
<input class="form-check-input" type="checkbox" name="SensitiveData" id="data-healthcare" value="healthcare">
<label class="form-check-label" for="data-healthcare">Healthcare information</label>
</div>
<div class="form-check">
<input class="form-check-input" type="checkbox" name="SensitiveData" id="data-ip" value="ip">
<label class="form-check-label" for="data-ip">Intellectual property</label>
</div>
<div class="form-check">
<input class="form-check-input" type="checkbox" name="SensitiveData" id="data-gov" value="government">
<label class="form-check-label" for="data-gov">Government data</label>
</div>
<div class="form-check">
<input class="form-check-input" type="checkbox" name="SensitiveData" id="data-payment" value="payment">
<label class="form-check-label" for="data-payment">Payment card data</label>
</div>
</div>
<small class="form-text text-muted py-3">Identifies required compliance frameworks.</small>
</div>
<!-- Critical Business Systems -->
<div class="mb-3 question" id="q9">
<label for="integration-level" class="form-label mt-3">How integrated are your critical business systems?</label>
<hr>
<select class="form-select" id="integration-level" name="IntegrationLevel" required>
<option value="fully-integrated">Fully integrated</option>
<option value="partially-integrated">Partially integrated</option>
<option value="mostly-separate">Mostly separate</option>
<option value="completely-isolated">Completely isolated</option>
</select>
<small class="form-text text-muted py-3">Evaluates potential for cascade failures.</small>
</div>
<!-- Remote Work Policy -->
<div class="mb-3 question" id="q10">
<label for="remote-policy" class="form-label mt-3">What is your organization's remote work policy?</label>
<hr>
<select class="form-select" id="remote-policy" name="RemotePolicy" required>
<option value="no-remote">No remote work allowed</option>
<option value="limited-remote">Limited remote work options</option>
<option value="hybrid">Hybrid work model</option>
<option value="fully-remote">Fully remote operations available</option>
</select>
<small class="form-text text-muted py-3">Determines the scope of remote access security requirements.</small>
</div>
<div class="d-flex justify-content-end mt-4">
<button type="button" class="btn btn-lg btn-outline-secondary me-3" id="back">Back</button>
<button type="submit" class="btn btn-primary btn-lg" id="submit">Next</button>
</div>
</form>
</div>
</div>
</div>
{{end}}
{{define "bottom"}}
<script src="/static/js/formHandling.js"></script>
{{end}}

View File

@@ -2,14 +2,19 @@
<div class="container">
<div class="row">
<div class="col">
<h1 class="pt-4 mt-5 mb-4">Risk Assessment Questions</h1>
<div class="text-center">
<img src="/static/img/steps-line.svg" class="img-fluid mt-3" alt="Steps image">
</div>
<h1 class="pt-4 mb-4">Risk Assessment Questions</h1>
<hr>
<form method="post">
<!-- Organization Name -->
<div class="mb-3 question" id="q0">
<label for="name" class="form-label mt-3">What is the name of your organization?</label>
<hr>
<input type="text" class="form-control" id="name" name="Name" required>
<div class="pb-3">
<input type="text" class="form-control" id="name" name="Name" required>
</div>
<small class="form-text text-muted py-3">Name of the Organization that will appear in the
report.</small>
</div>
@@ -18,8 +23,11 @@
<div class="mb-3 question" id="q1">
<label for="email" class="form-label mt-3">What is your email?</label>
<hr>
<input type="email" class="form-control" id="email" name="Email" required>
<small class="form-text text-muted py-3">Email of the person responsible for using Risklet. Report
<div class="pb-3">
<input type="email" class="form-control" id="email" name="Email" required>
</div>
<small class="form-text text-muted py-3">Email of the person responsible for using Risklet.
Report
and
magic link for login will be sent to this email.</small>
</div>
@@ -28,7 +36,7 @@
<div class="mb-3 question" id="q2">
<label class="form-label mt-3">What is your organization's current employee headcount?</label>
<hr>
<div>
<div class="pb-3">
<div class="form-check">
<input class="form-check-input" type="radio" name="Employees" id="employees-1-10"
value="1-10" required>
@@ -58,7 +66,7 @@
<div class="mb-3 question" id="q3">
<label class="form-label mt-3">What is your organization's annual revenue range?</label>
<hr>
<div>
<div class="pb-3">
<div class="form-check">
<input class="form-check-input" type="radio" name="Revenue" id="revenue-under-1m"
value="under-1m" required>
@@ -90,7 +98,7 @@
<label class="form-label mt-3">How many critical business applications do your employees use
daily?</label>
<hr>
<div>
<div class="pb-3">
<div class="form-check">
<input class="form-check-input" type="radio" name="Applications" id="apps-1-5" value="1-5"
required>
@@ -121,7 +129,7 @@
<label class="form-label mt-3">Which regulatory frameworks is your organization required to comply
with?</label>
<hr>
<div>
<div class="pb-3">
<div class="form-check">
<input class="form-check-input" type="checkbox" name="Compliance" id="compliance-gdpr"
value="gdpr">
@@ -216,8 +224,8 @@
<input type="range" class="form-range" id="it-dependency" name="ITDependency" min="1" max="10"
required>
<div class="d-flex justify-content-between">
<span>Not dependent at all</span>
<span>Heavily dependent</span>
<span class="text-muted">Not dependent at all</span>
<span class="text-muted text-end">Heavily dependent</span>
</div>
<small class="form-text text-muted py-3">Measures the potential business impact of IT disruptions
and
@@ -228,7 +236,7 @@
<div class="mb-3 question" id="q8">
<label class="form-label mt-3">What level of sensitive data does your organization process?</label>
<hr>
<div>
<div class="pb-3">
<div class="form-check">
<input class="form-check-input" type="radio" name="DataSensitivity" id="data-public"
value="public" required>
@@ -265,7 +273,7 @@
<label class="form-label mt-3">What best describes your organization's network infrastructure
model?</label>
<hr>
<div>
<div class="pb-3">
<div class="form-check">
<input class="form-check-input" type="radio" name="NetworkSegmentation" id="network-flat"
value="flat" required>
@@ -296,7 +304,7 @@
<div class="mb-3 question" id="q10">
<label class="form-label mt-3">What percentage of your workforce operates remotely?</label>
<hr>
<div>
<div class="pb-3">
<div class="form-check">
<input class="form-check-input" type="radio" name="RemoteWork" id="remote-none" value="none"
required>
@@ -326,7 +334,7 @@
<div class="mb-3 question" id="q11">
<label class="form-label mt-3">How many third-party vendors have access to your systems?</label>
<hr>
<div>
<div class="pb-3">
<div class="form-check">
<input class="form-check-input" type="radio" name="VendorAccess" id="vendor-none"
value="none" required>
@@ -357,7 +365,7 @@
<label class="form-label mt-3">What is the extent of your internal software development
activities?</label>
<hr>
<div>
<div class="pb-3">
<div class="form-check">
<input class="form-check-input" type="radio" name="InternalDev" id="dev-none" value="none"
required>
@@ -384,16 +392,37 @@
</div>
<div class="mb-3 question" id="q13">
<label class="form-label mt-3">We have enough information for a basic report. Would you like to
provide more
details ?</label>
<hr>
<div class="text-center">
<div class="text-center pb-3">
<input class="btn btn-warning btn-lg" type="submit" name="HalfSubmit" id="halfsubmit"
value="Generate report with basic data. ">
</div>
</div>
<small class="form-text text-muted py-3">Click Next if you want to provide more details. Each
question is
optional.</small>
</div>
<!-- skip rest if needed -->
<!-- Geographic Operational Scope -->
<div class="mb-3 question" id="q13">
<div class="mb-3 question" id="q14">
<label class="form-label mt-3">What is your organization's geographic operational scope?</label>
<hr>
<div>
<div class="pb-3">
<div class="form-check">
<input class="form-check-input" type="radio" name="GeoScope" id="geo-single-country"
value="single-country" required>
value="single-country">
<label class="form-check-label" for="geo-single-country">Single country</label>
</div>
<div class="form-check">
@@ -418,13 +447,13 @@
</div>
<div class="mb-3 question" id="q14">
<div class="mb-3 question" id="q15">
<label class="form-label mt-3">How would you characterize your customer base distribution?</label>
<hr>
<div>
<div class="pb-3">
<div class="form-check">
<input class="form-check-input" type="radio" name="CustomerBase" id="customer-few-key"
value="few-key" required>
value="few-key">
<label class="form-check-label" for="customer-few-key">Few key clients (1-5)</label>
</div>
<div class="form-check">
@@ -444,13 +473,13 @@
<!-- Primary Customer Type -->
<div class="mb-3 question" id="q15">
<div class="mb-3 question" id="q16">
<label class="form-label mt-3">What is your primary customer type?</label>
<hr>
<div>
<div class="pb-3">
<div class="form-check">
<input class="form-check-input" type="radio" name="CustomerType" id="customer-b2b"
value="b2b" required>
value="b2b">
<label class="form-check-label" for="customer-b2b">Primarily B2B</label>
</div>
<div class="form-check">
@@ -469,13 +498,13 @@
<!-- Product/Service Portfolio -->
<div class="mb-3 question" id="q16">
<div class="mb-3 question" id="q17">
<label class="form-label mt-3">How diversified is your product/service portfolio?</label>
<hr>
<div>
<div class="pb-3">
<div class="form-check">
<input class="form-check-input" type="radio" name="ProductPortfolio" id="portfolio-single"
value="single" required>
value="single">
<label class="form-check-label" for="portfolio-single">Single product/service</label>
</div>
<div class="form-check">
@@ -495,13 +524,13 @@
</div>
<!-- Supplier Base Structure -->
<div class="mb-3 question" id="q17">
<div class="mb-3 question" id="q18">
<label class="form-label mt-3">What is your supplier base structure?</label>
<hr>
<div>
<div class="pb-3">
<div class="form-check">
<input class="form-check-input" type="radio" name="SupplierBase"
id="supplier-single-critical" value="single-critical" required>
id="supplier-single-critical" value="single-critical">
<label class="form-check-label" for="supplier-single-critical">Single/few critical
suppliers</label>
</div>
@@ -521,10 +550,10 @@
</div>
<!-- IT Infrastructure Model -->
<div class="mb-3 question" id="q18">
<div class="mb-3 question" id="q19">
<label class="form-label mt-3">What is your primary IT infrastructure model?</label>
<hr>
<div>
<div class="pb-3">
<div class="form-check">
<input class="form-check-input" type="checkbox" name="ITInfrastructure" id="it-on-prem"
value="on-premises">
@@ -555,11 +584,11 @@
</div>
<!-- Intellectual Property Protection -->
<div class="mb-3 question" id="q19">
<div class="mb-3 question" id="q20">
<label class="form-label mt-3">How does your organization protect and manage intellectual
property?</label>
<hr>
<div>
<div class="pb-3">
<div class="form-check">
<input class="form-check-input" type="checkbox" name="IPProtection" id="ip-patents"
value="patents">
@@ -591,10 +620,10 @@
</div>
<!-- Sensitive Data -->
<div class="mb-3 question" id="q20">
<div class="mb-3 question" id="q21">
<label class="form-label mt-3">What type of sensitive data does your organization handle?</label>
<hr>
<div>
<div class="pb-3">
<div class="form-check">
<input class="form-check-input" type="checkbox" name="SensitiveData" id="data-personal"
value="personal">
@@ -626,17 +655,17 @@
<label class="form-check-label" for="data-payment">Payment card data</label>
</div>
</div>
<small class="form-text text-muted py-3">Identifies required compliance frameworks.</small>
<small class="form-text text-muted py-3">Identifies compliance frameworks.</small>
</div>
<!-- Critical Business Systems -->
<div class="mb-3 question" id="q21">
<div class="mb-3 question" id="q22">
<label class="form-label mt-3">How integrated are your critical business systems?</label>
<hr>
<div>
<div class="pb-3">
<div class="form-check">
<input class="form-check-input" type="radio" name="IntegrationLevel"
id="integration-fully-integrated" value="fully-integrated" required>
id="integration-fully-integrated" value="fully-integrated">
<label class="form-check-label" for="integration-fully-integrated">Fully integrated</label>
</div>
<div class="form-check">
@@ -660,38 +689,6 @@
<small class="form-text text-muted py-3">Evaluates potential for cascade failures.</small>
</div>
<!-- Remote Work Policy -->
<div class="mb-3 question" id="q22">
<label class="form-label mt-3">What is your organization's remote work policy?</label>
<hr>
<div>
<div class="form-check">
<input class="form-check-input" type="radio" name="RemotePolicy" id="remote-no-remote"
value="no-remote" required>
<label class="form-check-label" for="remote-no-remote">No remote work allowed</label>
</div>
<div class="form-check">
<input class="form-check-input" type="radio" name="RemotePolicy" id="remote-limited-remote"
value="limited-remote">
<label class="form-check-label" for="remote-limited-remote">Limited remote work
options</label>
</div>
<div class="form-check">
<input class="form-check-input" type="radio" name="RemotePolicy" id="remote-hybrid"
value="hybrid">
<label class="form-check-label" for="remote-hybrid">Hybrid work model</label>
</div>
<div class="form-check">
<input class="form-check-input" type="radio" name="RemotePolicy" id="remote-fully-remote"
value="fully-remote">
<label class="form-check-label" for="remote-fully-remote">Fully remote operations
available</label>
</div>
</div>
<small class="form-text text-muted py-3">Determines the scope of remote access security
requirements.</small>
</div>
<div class="d-flex justify-content-end mt-4">
<button type="button" class="btn btn-lg btn-outline-secondary me-3" id="back">Back</button>
<button type="submit" class="btn btn-primary btn-lg" id="submit">Next</button>

View File

@@ -0,0 +1,13 @@
{{define "content"}}
<div class="container">
<div class="row">
<div class="col">
<h1 class="pt-4 mt-5 mb-4">Thank you</h1>
</div>
</div>
</div>
{{end}}
{{define "bottom"}}
<script src="/static/js/formHandling.js"></script>
{{end}}