6.1 KiB
Deployment Scripts Guide
Recent Security Fixes - No Migration Required ✅
The security fixes we just implemented are code-only changes with no database schema modifications. You do NOT need to create or run any new migrations for these changes.
What Changed (Code Only)
- ✅ Security headers added (CSP, HSTS, etc.)
- ✅ Password policy strengthened
- ✅ CORS policy restricted
- ✅ Authorization fixed (CompanyAdminOnly)
- ✅ Path traversal protection enhanced
- ✅ IDOR protection on profile photos
- ✅ Session cookies hardened
- ✅ File upload names use GUIDs
- ✅ Input validation added
Database Impact: None - No new tables, columns, or schema changes
Deployment Scripts
For Development Server (Your Current Situation)
Quick Start - Just Run the App:
cd src\PowderCoating.Web
dotnet watch run
That's it! No migrations needed. The code changes are already in place.
Migration Scripts (For Future Use)
When you DO have database changes in the future, use these scripts:
Windows (Batch Files)
1. Check Migrations
.\scripts\check-migrations.bat
- Lists all migrations in the project
- Shows which are applied vs pending
- Displays database connection info
2. Apply Migrations
.\scripts\apply-migrations.bat
- Applies any pending migrations to database
- Asks for confirmation before proceeding
- Shows success/failure message
PowerShell (Full Deployment)
3. Deploy to Dev (Full Script)
.\scripts\deploy-to-dev.ps1
- Builds the solution
- Checks for pending migrations
- Applies migrations (with confirmation)
- Shows deployment summary
Options:
# Preview changes without applying
.\scripts\deploy-to-dev.ps1 -WhatIf
# Skip build step (faster)
.\scripts\deploy-to-dev.ps1 -SkipBuild
# Skip migrations (code-only deploy)
.\scripts\deploy-to-dev.ps1 -SkipMigrations
# Combined
.\scripts\deploy-to-dev.ps1 -SkipBuild -SkipMigrations -WhatIf
Manual Migration Commands (Reference)
If you prefer to run commands manually:
Check for Pending Migrations
cd src\PowderCoating.Web
dotnet ef migrations list --project ..\PowderCoating.Infrastructure
Apply All Pending Migrations
cd src\PowderCoating.Web
dotnet ef database update --project ..\PowderCoating.Infrastructure
Apply to Specific Migration
dotnet ef database update MigrationName --project ..\PowderCoating.Infrastructure
Rollback to Previous Migration
dotnet ef database update PreviousMigrationName --project ..\PowderCoating.Infrastructure
See Database Info
dotnet ef dbcontext info --project ..\PowderCoating.Infrastructure
When You WILL Need a Migration
You'll need to create a migration when you change:
- Entity properties (add/remove/rename fields)
- Entity relationships (foreign keys)
- Indexes or constraints
- Seed data (in OnModelCreating)
Example - Adding a new field:
// 1. Update entity
public class Customer : BaseEntity
{
public string CompanyName { get; set; }
public string? Website { get; set; } // NEW FIELD
}
// 2. Create migration
cd src\PowderCoating.Web
dotnet ef migrations add AddWebsiteToCustomer --project ..\PowderCoating.Infrastructure
// 3. Review migration file (check if it looks correct)
// 4. Apply migration
dotnet ef database update --project ..\PowderCoating.Infrastructure
Current Database State
Existing Migrations (already applied):
Initial- Base schemaAddProfilePictureAndSidebarColor- User profile enhancementsAddProfilePictureFilePath- Filesystem photo storageUpdateJobPhotoEntity- Job photo improvementsAddFileSystemStorageForLogosAndManuals- Logo/manual storageConvertEnumsToLookupTables- Status/priority lookupsAddAppointmentScheduling- Appointments feature
Pending Migrations: None (as of this deployment)
Deployment Checklist for Security Fixes
Development Server (Your Current Task)
- Code changes applied (security fixes)
- AppConstants.Policies updated
- CSP headers fixed (jQuery allowed)
- Test application:
dotnet watch run - Verify Data Lookups tab loads
- Verify password policy (12 chars)
- Test all CRUD operations
No migrations needed - Just test the app!
Production Server (Future Deployment)
See DEPLOYMENT_CONFIGURATION.md for full production checklist:
- Set environment variables (ConnectionStrings, JwtSettings)
- Update CORS origins to production domain
- Update AllowedHosts to production domain
- Enable HTTPS with SSL certificate
- Run
dotnet ef database updateon production DB - Test all functionality
- Monitor logs for security events
Troubleshooting
"No migrations found"
Cause: You're running from wrong directory
Fix: Always run from src/PowderCoating.Web
"Cannot connect to database"
Cause: SQL Server not running or connection string wrong Fix:
- Check SQL Server is running (Windows Services)
- Verify connection string in
appsettings.Development.json
"Migration already applied"
Cause: Trying to reapply existing migration
Fix: Check dotnet ef migrations list - applied migrations show (Applied)
"Build failed before migration"
Cause: Code has compilation errors
Fix: Run dotnet build and fix errors first
Quick Reference
| Task | Command |
|---|---|
| Check migrations | .\scripts\check-migrations.bat |
| Apply migrations | .\scripts\apply-migrations.bat |
| Full deployment | .\scripts\deploy-to-dev.ps1 |
| Run app | cd src\PowderCoating.Web → dotnet watch run |
| Build only | dotnet build (from root) |
| List migrations | dotnet ef migrations list --project ..\PowderCoating.Infrastructure |
Summary
✅ For your current security fixes deployment: Just run dotnet watch run - no migrations needed!
📋 For future database changes: Use the migration scripts provided
📖 For production deployment: Follow DEPLOYMENT_CONFIGURATION.md
🔒 Security documentation: See SECURITY_FIXES_SUMMARY.md