- Implemented Logout and RefreshToken methods in AuthenticationController. - Added IMailingService and IMailingRepository to Program.cs. - Updated project structure in Surge365.MassEmailReact.API.csproj. - Modified API host address and endpoints in Server.http. - Introduced AuthAppCode in appsettings.json for context distinction. - Changed GenerateTokens method to async in IAuthService. - Initialized string properties in User.cs to avoid null values. - Added new Mailing mapping in DapperConfiguration.cs. - Created MailingsController for handling mailing operations. - Developed Mailing, MailingUpdateDto, IMailingService, and IMailingRepository classes. - Updated frontend with MailingEdit and NewMailings components. - Enhanced authentication handling in AuthCheck.tsx and AuthContext.tsx. - Introduced ProtectedPageWrapper for route protection based on roles. - Added EmailList component for email input validation. - Updated utils.ts for token and cookie management functions. - Modified vite.config.ts for new HTTPS certificate name. - Updated CHANGELOG.md to reflect recent changes.
62 lines
1.7 KiB
TypeScript
62 lines
1.7 KiB
TypeScript
import { fileURLToPath, URL } from 'node:url';
|
|
|
|
import { defineConfig } from 'vite';
|
|
import plugin from '@vitejs/plugin-react';
|
|
import fs from 'fs';
|
|
import path from 'path';
|
|
import child_process from 'child_process';
|
|
import { env } from 'process';
|
|
|
|
const baseFolder =
|
|
env.APPDATA !== undefined && env.APPDATA !== ''
|
|
? `${env.APPDATA}/ASP.NET/https`
|
|
: `${env.HOME}/.aspnet/https`;
|
|
|
|
const certificateName = "Surge365.MassEmailReact.Web";
|
|
const certFilePath = path.join(baseFolder, `${certificateName}.pem`);
|
|
const keyFilePath = path.join(baseFolder, `${certificateName}.key`);
|
|
|
|
if (!fs.existsSync(baseFolder)) {
|
|
fs.mkdirSync(baseFolder, { recursive: true });
|
|
}
|
|
|
|
if (!fs.existsSync(certFilePath) || !fs.existsSync(keyFilePath)) {
|
|
if (0 !== child_process.spawnSync('dotnet', [
|
|
'dev-certs',
|
|
'https',
|
|
'--export-path',
|
|
certFilePath,
|
|
'--format',
|
|
'Pem',
|
|
'--no-password',
|
|
], { stdio: 'inherit', }).status) {
|
|
throw new Error("Could not create certificate.");
|
|
}
|
|
}
|
|
|
|
const target = env.ASPNETCORE_HTTPS_PORT ? `https://localhost:${env.ASPNETCORE_HTTPS_PORT}` :
|
|
env.ASPNETCORE_URLS ? env.ASPNETCORE_URLS.split(';')[0] : 'https://localhost:7105';
|
|
|
|
// https://vitejs.dev/config/
|
|
export default defineConfig({
|
|
plugins: [plugin()],
|
|
resolve: {
|
|
alias: {
|
|
'@': fileURLToPath(new URL('./src', import.meta.url))
|
|
}
|
|
},
|
|
server: {
|
|
proxy: {
|
|
'^/api': {
|
|
target,
|
|
secure: false
|
|
}
|
|
},
|
|
port: parseInt(env.DEV_SERVER_PORT || '52871'),
|
|
https: {
|
|
key: fs.readFileSync(keyFilePath),
|
|
cert: fs.readFileSync(certFilePath),
|
|
}
|
|
}
|
|
})
|