Temporarily disable anti-forgery validation for HTTPS proxy compatibility

This commit is contained in:
2025-09-19 16:44:37 +01:00
parent 8b0e3e0611
commit bcefd2c6fc
180 changed files with 85605 additions and 2 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,21 @@
{
"runtimeOptions": {
"tfm": "net9.0",
"frameworks": [
{
"name": "Microsoft.NETCore.App",
"version": "9.0.0"
},
{
"name": "Microsoft.AspNetCore.App",
"version": "9.0.0"
}
],
"configProperties": {
"System.GC.Server": true,
"System.Reflection.Metadata.MetadataUpdater.IsSupported": false,
"System.Reflection.NullabilityInfoContext.IsSupported": true,
"System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false
}
}
}

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,31 @@
{
"ProjectPath": "C:\\Production\\Source\\LittleShop\\LittleShop",
"ProjectType": "Project (ASP.NET Core)",
"TotalEndpoints": 115,
"AuthenticatedEndpoints": 78,
"TestableStates": 3,
"IdentifiedGaps": 224,
"SuggestedTests": 190,
"DeadLinks": 0,
"HttpErrors": 97,
"VisualIssues": 0,
"SecurityInsights": 1,
"PerformanceInsights": 1,
"OverallTestCoverage": 16.956521739130434,
"VisualConsistencyScore": 0,
"CriticalRecommendations": [
"CRITICAL: Test coverage is only 17.0% - implement comprehensive test suite",
"HIGH: Address 97 HTTP errors in the application",
"MEDIUM: Improve visual consistency - current score 0.0%",
"HIGH: Address 224 testing gaps for comprehensive coverage"
],
"GeneratedFiles": [
"C:\\Production\\Source\\LittleShop\\LittleShop\\TestAgent_Results\\project_structure.json",
"C:\\Production\\Source\\LittleShop\\LittleShop\\TestAgent_Results\\authentication_analysis.json",
"C:\\Production\\Source\\LittleShop\\LittleShop\\TestAgent_Results\\endpoint_discovery.json",
"C:\\Production\\Source\\LittleShop\\LittleShop\\TestAgent_Results\\coverage_analysis.json",
"C:\\Production\\Source\\LittleShop\\LittleShop\\TestAgent_Results\\error_detection.json",
"C:\\Production\\Source\\LittleShop\\LittleShop\\TestAgent_Results\\visual_testing.json",
"C:\\Production\\Source\\LittleShop\\LittleShop\\TestAgent_Results\\intelligent_analysis.json"
]
}

View File

@@ -0,0 +1,79 @@
{
"BusinessLogicInsights": [
{
"Component": "Claude CLI Integration",
"Insight": "Error analyzing business logic: Failed to execute Claude CLI: An error occurred trying to start process \u0027claude\u0027 with working directory \u0027C:\\Production\\Source\\TestAgent\u0027. The system cannot find the file specified.",
"Complexity": "Unknown",
"PotentialIssues": [],
"TestingRecommendations": [],
"Priority": "Medium"
}
],
"TestScenarioSuggestions": [
{
"ScenarioName": "Claude CLI Integration Error",
"Description": "Error generating test scenarios: Failed to execute Claude CLI: An error occurred trying to start process \u0027claude\u0027 with working directory \u0027C:\\Production\\Source\\TestAgent\u0027. The system cannot find the file specified.",
"TestType": "",
"Steps": [],
"ExpectedOutcomes": [],
"Priority": "Medium",
"RequiredData": [],
"Dependencies": []
}
],
"SecurityInsights": [
{
"VulnerabilityType": "Analysis Error",
"Location": "",
"Description": "Error analyzing security: Failed to execute Claude CLI: An error occurred trying to start process \u0027claude\u0027 with working directory \u0027C:\\Production\\Source\\TestAgent\u0027. The system cannot find the file specified.",
"Severity": "Medium",
"Recommendations": [],
"TestingApproaches": []
}
],
"PerformanceInsights": [
{
"Component": "Analysis Error",
"PotentialBottleneck": "Error analyzing performance: Failed to execute Claude CLI: An error occurred trying to start process \u0027claude\u0027 with working directory \u0027C:\\Production\\Source\\TestAgent\u0027. The system cannot find the file specified.",
"Impact": "Unknown",
"OptimizationSuggestions": [],
"TestingStrategies": []
}
],
"ArchitecturalRecommendations": [
{
"Category": "Analysis Error",
"Recommendation": "Error generating architectural recommendations: Failed to execute Claude CLI: An error occurred trying to start process \u0027claude\u0027 with working directory \u0027C:\\Production\\Source\\TestAgent\u0027. The system cannot find the file specified.",
"Rationale": "",
"Impact": "Unknown",
"ImplementationSteps": []
}
],
"GeneratedTestCases": [
{
"TestName": "Claude CLI Integration Error",
"TestCategory": "Error",
"Description": "Error generating test cases: Failed to execute Claude CLI: An error occurred trying to start process \u0027claude\u0027 with working directory \u0027C:\\Production\\Source\\TestAgent\u0027. The system cannot find the file specified.",
"TestCode": "",
"TestData": [],
"ExpectedOutcome": "",
"Reasoning": ""
}
],
"Summary": {
"TotalInsights": 4,
"HighPriorityItems": 0,
"GeneratedTestCases": 1,
"SecurityIssuesFound": 1,
"PerformanceOptimizations": 1,
"KeyFindings": [
"Performance optimization opportunities identified"
],
"NextSteps": [
"Review and prioritize security recommendations",
"Implement generated test cases",
"Address high-priority business logic testing gaps",
"Consider architectural improvements for better testability"
]
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,17 @@
{
"ConsistencyTests": [],
"AuthStateComparisons": [],
"ResponsiveTests": [],
"ComponentTests": [],
"Regressions": [],
"Summary": {
"TotalTests": 0,
"PassedTests": 0,
"FailedTests": 0,
"ConsistencyViolations": 0,
"ResponsiveIssues": 0,
"VisualRegressions": 0,
"OverallScore": 0,
"Recommendations": []
}
}

Binary file not shown.

View File

@@ -0,0 +1,26 @@
{
"Logging": {
"LogLevel": {
"Default": "Debug",
"Microsoft.AspNetCore": "Debug",
"LittleShop": "Debug"
}
},
"Security": {
"AllowInsecureSSL": true,
"EnableDetailedErrors": true
},
"CORS": {
"AllowedOrigins": [
"http://localhost:3000",
"http://localhost:5173",
"http://localhost:5000",
"http://localhost:5001",
"https://localhost:5001"
]
},
"TeleBot": {
"ApiUrl": "http://localhost:8080",
"ApiKey": "development-key-replace-in-production"
}
}

View File

@@ -0,0 +1,46 @@
{
"ConnectionStrings": {
"DefaultConnection": "Data Source=/app/data/littleshop.db"
},
"Jwt": {
"Key": "YourSuperSecretKeyThatIsAtLeast32CharactersLong!",
"Issuer": "LittleShop",
"Audience": "LittleShop",
"ExpiryInHours": 24
},
"BTCPayServer": {
"BaseUrl": "https://thebankofdebbie.giize.com",
"ApiKey": "db920209c0101efdbd1c6b6d1c99a48e3ba9d0de",
"StoreId": "CvdvHoncGLM7TdMYRAG6Z15YuxQfxeMWRYwi9gvPhh5R",
"WebhookSecret": "your-webhook-secret-here"
},
"RoyalMail": {
"ClientId": "",
"ClientSecret": "",
"BaseUrl": "https://api.royalmail.net/",
"SenderAddress1": "SilverLabs Ltd, 123 Business Street",
"SenderCity": "London",
"SenderPostCode": "SW1A 1AA",
"SenderCountry": "United Kingdom"
},
"WebPush": {
"VapidPublicKey": "BMc6fFJZ8oIQKQzcl3kMnP9tTsjrm3oI_VxLt3lAGYUMWGInzDKn7jqclEoZzjvXy1QXGFb3dIun8mVBwh-QuS4",
"VapidPrivateKey": "dYuuagbz2CzCnPDFUpO_qkGLBgnN3MEFZQnjXNkc1MY",
"Subject": "mailto:admin@littleshop.local"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning",
"BTCPayServer": "Debug"
}
},
"AllowedHosts": "*",
"Kestrel": {
"Endpoints": {
"Http": {
"Url": "http://0.0.0.0:8080"
}
}
}
}

View File

@@ -0,0 +1,56 @@
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning",
"Microsoft.EntityFrameworkCore": "Warning"
}
},
"ConnectionStrings": {
"DefaultConnection": "Data Source=littleshop.db"
},
"Jwt": {
"Key": "${JWT_SECRET_KEY}",
"Issuer": "LittleShop",
"Audience": "LittleShop-API",
"ExpiryMinutes": 60
},
"BTCPayServer": {
"ServerUrl": "${BTCPAY_SERVER_URL}",
"StoreId": "${BTCPAY_STORE_ID}",
"ApiKey": "${BTCPAY_API_KEY}",
"WebhookSecret": "${BTCPAY_WEBHOOK_SECRET}"
},
"AllowedHosts": "*",
"Urls": "http://+:8080",
"ForwardedHeaders": {
"ForwardedProtoHeaderName": "X-Forwarded-Proto",
"ForwardedForHeaderName": "X-Forwarded-For",
"ForwardedHostHeaderName": "X-Forwarded-Host"
},
"TeleBot": {
"ApiUrl": "${TELEBOT_API_URL}",
"ApiKey": "${TELEBOT_API_KEY}"
},
"Serilog": {
"Using": [ "Serilog.Sinks.Console", "Serilog.Sinks.File" ],
"MinimumLevel": "Information",
"WriteTo": [
{
"Name": "Console",
"Args": {
"outputTemplate": "[{Timestamp:yyyy-MM-dd HH:mm:ss} {Level:u3}] {Message:lj} {Properties:j}{NewLine}{Exception}"
}
},
{
"Name": "File",
"Args": {
"path": "/app/logs/littleshop-.log",
"rollingInterval": "Day",
"retainedFileCountLimit": 7,
"outputTemplate": "[{Timestamp:yyyy-MM-dd HH:mm:ss} {Level:u3}] {Message:lj} {Properties:j}{NewLine}{Exception}"
}
}
]
}
}

View File

@@ -0,0 +1,38 @@
{
"ConnectionStrings": {
"DefaultConnection": "Data Source=littleshop.db"
},
"Jwt": {
"Key": "YourSuperSecretKeyThatIsAtLeast32CharactersLong!",
"Issuer": "LittleShop",
"Audience": "LittleShop",
"ExpiryInHours": 24
},
"BTCPayServer": {
"BaseUrl": "https://pay.silverlabs.uk",
"ApiKey": "994589c8b514531f867dd24c83a02b6381a5f4a2",
"StoreId": "AoxXjM9NJT6P9C1MErkaawXaSchz8sFPYdQ9FyhmQz33",
"WebhookSecret": ""
},
"RoyalMail": {
"ClientId": "",
"ClientSecret": "",
"BaseUrl": "https://api.royalmail.net/",
"SenderAddress1": "SilverLabs Ltd, 123 Business Street",
"SenderCity": "London",
"SenderPostCode": "SW1A 1AA",
"SenderCountry": "United Kingdom"
},
"WebPush": {
"VapidPublicKey": "BMc6fFJZ8oIQKQzcl3kMnP9tTsjrm3oI_VxLt3lAGYUMWGInzDKn7jqclEoZzjvXy1QXGFb3dIun8mVBwh-QuS4",
"VapidPrivateKey": "dYuuagbz2CzCnPDFUpO_qkGLBgnN3MEFZQnjXNkc1MY",
"Subject": "mailto:admin@littleshop.local"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*"
}

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="dotnet" arguments=".\LittleShop.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" />
</system.webServer>
</location>
</configuration>
<!--ProjectGuid: 45F90A9D-4B8B-48D8-8D80-7B2335DD9072-->

View File

@@ -0,0 +1,415 @@
/*
* 🏢 CORPORATE STEEL THEME 🏢
* Professional dark theme with subtle metallic accents
* Clean, corporate aesthetic with steel/metal textures
*/
:root {
/* Corporate Color Palette */
--corp-primary: #6A4C93; /* Muted Purple */
--corp-secondary: #8B5A8C; /* Soft Purple */
--corp-accent: #9B69B0; /* Light Purple */
/* Steel/Metal Colors */
--steel-dark: #1C1C1E; /* Dark Steel */
--steel-medium: #2C2C2E; /* Medium Steel */
--steel-light: #3A3A3C; /* Light Steel */
--steel-accent: #48484A; /* Steel Accent */
/* Text Colors */
--text-primary: #FFFFFF; /* White */
--text-secondary: #E5E5E7; /* Light Grey */
--text-muted: #AEAEB2; /* Muted Grey */
/* Subtle Gradients */
--steel-gradient: linear-gradient(135deg,
var(--steel-dark) 0%,
var(--steel-medium) 50%,
var(--steel-light) 100%);
--purple-gradient: linear-gradient(135deg,
var(--corp-primary) 0%,
var(--corp-secondary) 100%);
/* Shadows */
--shadow-subtle: 0 2px 8px rgba(0, 0, 0, 0.3);
--shadow-medium: 0 4px 16px rgba(0, 0, 0, 0.4);
--shadow-strong: 0 8px 32px rgba(0, 0, 0, 0.5);
/* Transitions */
--transition-smooth: 0.2s ease;
}
/* Global Corporate Base */
body {
background: var(--steel-dark) !important;
background-image:
linear-gradient(45deg, transparent 49%, rgba(106, 76, 147, 0.03) 50%, transparent 51%),
linear-gradient(-45deg, transparent 49%, rgba(139, 90, 140, 0.02) 50%, transparent 51%);
background-size: 20px 20px, 24px 24px;
color: var(--text-primary) !important;
font-family: 'Segoe UI', 'Roboto', 'Arial', sans-serif !important;
font-weight: 400;
line-height: 1.6;
}
/* Card Styling */
.card,
.rz-card {
background: var(--steel-gradient) !important;
border: 1px solid var(--steel-accent) !important;
border-radius: 8px !important;
box-shadow: var(--shadow-medium) !important;
color: var(--text-primary) !important;
transition: all var(--transition-smooth) !important;
}
.card:hover,
.rz-card:hover {
transform: translateY(-2px) !important;
box-shadow: var(--shadow-strong) !important;
border-color: var(--corp-accent) !important;
}
.card-header,
.rz-card-header {
background: linear-gradient(90deg,
var(--steel-medium) 0%,
var(--steel-light) 100%) !important;
border-bottom: 1px solid var(--steel-accent) !important;
color: var(--text-primary) !important;
font-weight: 600 !important;
}
.card-body,
.rz-card-body {
background: var(--steel-medium) !important;
color: var(--text-primary) !important;
}
/* Button Styling */
.btn,
.rz-button {
background: var(--purple-gradient) !important;
border: 1px solid var(--corp-accent) !important;
border-radius: 6px !important;
color: var(--text-primary) !important;
font-weight: 500 !important;
transition: all var(--transition-smooth) !important;
position: relative !important;
}
.btn:hover,
.rz-button:hover {
background: linear-gradient(135deg,
var(--corp-secondary) 0%,
var(--corp-accent) 100%) !important;
border-color: var(--corp-accent) !important;
transform: translateY(-1px) !important;
color: var(--text-primary) !important;
}
.btn:active,
.rz-button:active {
transform: scale(0.98) !important;
}
/* Navigation */
.navbar-dark {
background: var(--steel-gradient) !important;
border-bottom: 1px solid var(--steel-accent) !important;
}
.navbar-brand {
color: var(--text-primary) !important;
font-weight: 600 !important;
}
.nav-link {
color: var(--text-secondary) !important;
transition: all var(--transition-smooth) !important;
}
.nav-link:hover {
color: var(--corp-accent) !important;
}
/* Form Controls */
.form-control,
.form-select,
.rz-textbox,
.rz-dropdown {
background: var(--steel-medium) !important;
border: 2px solid var(--steel-accent) !important;
border-radius: 6px !important;
color: var(--text-primary) !important;
transition: all var(--transition-smooth) !important;
}
.form-control:focus,
.form-select:focus,
.rz-textbox:focus,
.rz-dropdown:focus {
background: var(--steel-light) !important;
border-color: var(--corp-primary) !important;
box-shadow: 0 0 0 0.25rem rgba(106, 76, 147, 0.25) !important;
outline: none !important;
}
.form-label {
color: var(--text-secondary) !important;
font-weight: 500 !important;
}
/* Tables */
.table {
background: var(--steel-medium) !important;
color: var(--text-primary) !important;
border-radius: 8px !important;
overflow: hidden !important;
}
.table th {
background: var(--steel-light) !important;
color: var(--text-primary) !important;
border-bottom: 2px solid var(--steel-accent) !important;
font-weight: 600 !important;
}
.table td {
border-bottom: 1px solid var(--steel-accent) !important;
color: var(--text-primary) !important;
}
.table tbody tr:hover {
background: rgba(106, 76, 147, 0.1) !important;
}
/* Mobile Navigation */
.mobile-header {
background: var(--steel-gradient) !important;
border-bottom: 1px solid var(--steel-accent) !important;
}
.mobile-bottom-nav {
background: var(--steel-medium) !important;
border-top: 1px solid var(--steel-accent) !important;
}
.mobile-nav-item {
color: var(--text-secondary) !important;
transition: all var(--transition-smooth) !important;
}
.mobile-nav-item:hover {
color: var(--corp-accent) !important;
background: rgba(106, 76, 147, 0.1) !important;
}
.mobile-nav-item.active {
color: var(--text-primary) !important;
background: var(--purple-gradient) !important;
}
.mobile-sidebar {
background: var(--steel-gradient) !important;
border-right: 1px solid var(--steel-accent) !important;
}
.mobile-sidebar-header {
background: var(--purple-gradient) !important;
}
.mobile-sidebar-link {
color: var(--text-secondary) !important;
transition: all var(--transition-smooth) !important;
}
.mobile-sidebar-link:hover {
background: rgba(106, 76, 147, 0.1) !important;
color: var(--corp-accent) !important;
}
.mobile-sidebar-link.active {
background: var(--purple-gradient) !important;
color: var(--text-primary) !important;
}
/* Alerts and Notifications */
.alert {
background: var(--steel-medium) !important;
border: 1px solid var(--steel-accent) !important;
color: var(--text-primary) !important;
}
.alert-success {
border-color: #28a745 !important;
background: linear-gradient(135deg, var(--steel-medium), rgba(40, 167, 69, 0.1)) !important;
}
.alert-danger {
border-color: #dc3545 !important;
background: linear-gradient(135deg, var(--steel-medium), rgba(220, 53, 69, 0.1)) !important;
}
.alert-warning {
border-color: #ffc107 !important;
background: linear-gradient(135deg, var(--steel-medium), rgba(255, 193, 7, 0.1)) !important;
}
/* Mobile Cards */
.mobile-card,
.order-card {
background: var(--steel-gradient) !important;
border: 1px solid var(--steel-accent) !important;
color: var(--text-primary) !important;
}
.mobile-card-header,
.order-header {
background: var(--steel-light) !important;
color: var(--text-primary) !important;
border-bottom: 1px solid var(--steel-accent) !important;
}
.mobile-card-body,
.order-body {
background: var(--steel-medium) !important;
color: var(--text-primary) !important;
}
.mobile-card-footer {
background: var(--steel-light) !important;
color: var(--text-primary) !important;
border-top: 1px solid var(--steel-accent) !important;
}
/* Status Badges */
.status-badge {
background: var(--steel-light) !important;
color: var(--text-primary) !important;
border: 1px solid var(--steel-accent) !important;
}
.status-badge.pending {
background: linear-gradient(135deg, var(--steel-light), rgba(255, 193, 7, 0.2)) !important;
color: #ffc107 !important;
}
.status-badge.processing {
background: linear-gradient(135deg, var(--steel-light), rgba(23, 162, 184, 0.2)) !important;
color: #17a2b8 !important;
}
.status-badge.shipped {
background: linear-gradient(135deg, var(--steel-light), rgba(40, 167, 69, 0.2)) !important;
color: #28a745 !important;
}
/* Breadcrumbs and Links */
a {
color: var(--corp-accent) !important;
transition: color var(--transition-smooth) !important;
}
a:hover {
color: var(--text-primary) !important;
}
/* Dropdowns */
.dropdown-menu {
background: var(--steel-medium) !important;
border: 1px solid var(--steel-accent) !important;
box-shadow: var(--shadow-medium) !important;
}
.dropdown-item {
color: var(--text-secondary) !important;
transition: all var(--transition-smooth) !important;
}
.dropdown-item:hover {
background: rgba(106, 76, 147, 0.2) !important;
color: var(--text-primary) !important;
}
/* List Groups */
.list-group-item {
background: var(--steel-medium) !important;
border: 1px solid var(--steel-accent) !important;
color: var(--text-primary) !important;
}
.list-group-item:hover {
background: var(--steel-light) !important;
}
/* Override any remaining Bootstrap defaults */
.container,
.container-fluid {
color: var(--text-primary) !important;
}
h1, h2, h3, h4, h5, h6 {
color: var(--text-primary) !important;
font-weight: 600 !important;
}
p {
color: var(--text-secondary) !important;
}
/* Subtle Steel Texture */
.steel-texture {
background-image:
linear-gradient(45deg, rgba(255,255,255,0.02) 25%, transparent 25%),
linear-gradient(-45deg, rgba(255,255,255,0.02) 25%, transparent 25%),
linear-gradient(45deg, transparent 75%, rgba(255,255,255,0.02) 75%),
linear-gradient(-45deg, transparent 75%, rgba(255,255,255,0.02) 75%);
background-size: 4px 4px;
background-position: 0 0, 0 2px, 2px -2px, -2px 0px;
}
/* Corporate Professional Styling */
.corporate-card {
background: var(--steel-gradient) !important;
border: 1px solid var(--steel-accent) !important;
border-radius: 8px !important;
box-shadow: var(--shadow-subtle) !important;
}
.corporate-card:hover {
box-shadow: var(--shadow-medium) !important;
transform: translateY(-1px) !important;
}
/* Remove any epileptic-inducing effects */
* {
animation: none !important;
}
/* Clean scrollbars */
::-webkit-scrollbar {
width: 8px;
background: var(--steel-dark);
}
::-webkit-scrollbar-track {
background: var(--steel-medium);
}
::-webkit-scrollbar-thumb {
background: var(--steel-light);
border-radius: 4px;
}
::-webkit-scrollbar-thumb:hover {
background: var(--corp-primary);
}
/* Professional Focus States */
.form-control:focus,
.form-select:focus {
border-color: var(--corp-primary) !important;
box-shadow: 0 0 0 0.2rem rgba(106, 76, 147, 0.25) !important;
}

Some files were not shown because too many files have changed in this diff Show More