@@ -17,10 +17,19 @@ public static async Task<bool> ValidateConfigurationAsync(IConfiguration configu
1717 {
1818 var isValid = true ;
1919 var errors = new List < string > ( ) ;
20+ var warnings = new List < string > ( ) ;
2021
2122 try
2223 {
23- // Validate MongoDB connection
24+ // Check if we're in a deployment environment (Docker/Production)
25+ var isDocker = Environment . GetEnvironmentVariable ( "DOTNET_RUNNING_IN_CONTAINER" ) == "true" ;
26+ var isProduction = Environment . GetEnvironmentVariable ( "ASPNETCORE_ENVIRONMENT" ) == "Production" ;
27+ var isDeployment = isDocker || isProduction ;
28+
29+ logger . LogInformation ( "Configuration validation - Docker: {IsDocker}, Production: {IsProduction}, Deployment: {IsDeployment}" ,
30+ isDocker , isProduction , isDeployment ) ;
31+
32+ // Validate MongoDB connection (CRITICAL - always required)
2433 var mongoConnectionString = configuration . GetConnectionString ( "MongoDB" ) ;
2534 if ( string . IsNullOrWhiteSpace ( mongoConnectionString ) )
2635 {
@@ -43,7 +52,7 @@ public static async Task<bool> ValidateConfigurationAsync(IConfiguration configu
4352 }
4453 }
4554
46- // Validate JWT settings
55+ // Validate JWT settings (CRITICAL - always required)
4756 var jwtKey = configuration [ "Jwt:Key" ] ;
4857 if ( string . IsNullOrWhiteSpace ( jwtKey ) )
4958 {
@@ -70,81 +79,90 @@ public static async Task<bool> ValidateConfigurationAsync(IConfiguration configu
7079 isValid = false ;
7180 }
7281
73- // Validate Email settings
82+ // Validate Email settings (OPTIONAL - warn but don't fail)
7483 var smtpHost = configuration [ "EmailSettings:SmtpHost" ] ;
7584 if ( string . IsNullOrWhiteSpace ( smtpHost ) )
7685 {
77- errors . Add ( "Email SMTP Host is missing" ) ;
78- isValid = false ;
86+ warnings . Add ( "Email SMTP Host is missing - email functionality will be disabled" ) ;
7987 }
8088
8189 var smtpPort = configuration [ "EmailSettings:SmtpPort" ] ;
82- if ( ! int . TryParse ( smtpPort , out var port ) || port < 1 || port > 65535 )
90+ if ( ! string . IsNullOrWhiteSpace ( smtpHost ) && ( ! int . TryParse ( smtpPort , out var port ) || port < 1 || port > 65535 ) )
8391 {
84- errors . Add ( "Email SMTP Port must be a valid port number (1-65535)" ) ;
85- isValid = false ;
92+ warnings . Add ( "Email SMTP Port must be a valid port number (1-65535)" ) ;
8693 }
8794
8895 var smtpUsername = configuration [ "EmailSettings:SmtpUsername" ] ;
89- if ( string . IsNullOrWhiteSpace ( smtpUsername ) )
96+ if ( string . IsNullOrWhiteSpace ( smtpUsername ) && ! string . IsNullOrWhiteSpace ( smtpHost ) )
9097 {
91- errors . Add ( "Email SMTP Username is missing" ) ;
92- isValid = false ;
98+ warnings . Add ( "Email SMTP Username is missing - email functionality will be disabled" ) ;
9399 }
94100
95101 var smtpPassword = configuration [ "EmailSettings:SmtpPassword" ] ;
96- if ( string . IsNullOrWhiteSpace ( smtpPassword ) )
102+ if ( string . IsNullOrWhiteSpace ( smtpPassword ) && ! string . IsNullOrWhiteSpace ( smtpHost ) )
97103 {
98- errors . Add ( "Email SMTP Password is missing" ) ;
99- isValid = false ;
104+ warnings . Add ( "Email SMTP Password is missing - email functionality will be disabled" ) ;
100105 }
101106
102107 var fromEmail = configuration [ "EmailSettings:FromEmail" ] ;
103- if ( string . IsNullOrWhiteSpace ( fromEmail ) )
108+ if ( string . IsNullOrWhiteSpace ( fromEmail ) && ! string . IsNullOrWhiteSpace ( smtpHost ) )
104109 {
105- errors . Add ( "Email From Email is missing" ) ;
106- isValid = false ;
110+ warnings . Add ( "Email From Email is missing - email functionality will be disabled" ) ;
107111 }
108- else if ( ! IsValidEmail ( fromEmail ) )
112+ else if ( ! string . IsNullOrWhiteSpace ( fromEmail ) && ! IsValidEmail ( fromEmail ) )
109113 {
110- errors . Add ( "Email From Email is not a valid email address" ) ;
111- isValid = false ;
114+ warnings . Add ( "Email From Email is not a valid email address" ) ;
112115 }
113116
114- // Validate Cloudinary settings
117+ // Validate Cloudinary settings (OPTIONAL - warn but don't fail)
115118 var cloudName = configuration [ "CloudinarySettings:CloudName" ] ;
116119 if ( string . IsNullOrWhiteSpace ( cloudName ) )
117120 {
118- errors . Add ( "Cloudinary Cloud Name is missing" ) ;
119- isValid = false ;
121+ warnings . Add ( "Cloudinary Cloud Name is missing - image upload functionality will be disabled" ) ;
120122 }
121123
122124 var apiKey = configuration [ "CloudinarySettings:ApiKey" ] ;
123- if ( string . IsNullOrWhiteSpace ( apiKey ) )
125+ if ( string . IsNullOrWhiteSpace ( apiKey ) && ! string . IsNullOrWhiteSpace ( cloudName ) )
124126 {
125- errors . Add ( "Cloudinary API Key is missing" ) ;
126- isValid = false ;
127+ warnings . Add ( "Cloudinary API Key is missing - image upload functionality will be disabled" ) ;
127128 }
128129
129130 var apiSecret = configuration [ "CloudinarySettings:ApiSecret" ] ;
130- if ( string . IsNullOrWhiteSpace ( apiSecret ) )
131+ if ( string . IsNullOrWhiteSpace ( apiSecret ) && ! string . IsNullOrWhiteSpace ( cloudName ) )
131132 {
132- errors . Add ( "Cloudinary API Secret is missing" ) ;
133- isValid = false ;
133+ warnings . Add ( "Cloudinary API Secret is missing - image upload functionality will be disabled" ) ;
134134 }
135135
136136 // Log validation results
137137 if ( isValid )
138138 {
139- logger . LogInformation ( "All configuration settings validated successfully" ) ;
139+ logger . LogInformation ( "All critical configuration settings validated successfully" ) ;
140+
141+ if ( warnings . Any ( ) )
142+ {
143+ logger . LogWarning ( "Configuration validation completed with {WarningCount} warnings" , warnings . Count ) ;
144+ foreach ( var warning in warnings )
145+ {
146+ logger . LogWarning ( "Configuration Warning: {Warning}" , warning ) ;
147+ }
148+ }
140149 }
141150 else
142151 {
143- logger . LogError ( "Configuration validation failed with {ErrorCount} errors" , errors . Count ) ;
152+ logger . LogError ( "Configuration validation failed with {ErrorCount} critical errors" , errors . Count ) ;
144153 foreach ( var error in errors )
145154 {
146155 logger . LogError ( "Configuration Error: {Error}" , error ) ;
147156 }
157+
158+ if ( warnings . Any ( ) )
159+ {
160+ logger . LogWarning ( "Additional configuration warnings:" ) ;
161+ foreach ( var warning in warnings )
162+ {
163+ logger . LogWarning ( "Configuration Warning: {Warning}" , warning ) ;
164+ }
165+ }
148166 }
149167 }
150168 catch ( Exception ex )
0 commit comments