Files
emall-api/FutureMailAPI/Services/InitializationService.cs
2025-10-16 15:21:52 +08:00

69 lines
2.3 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using Microsoft.EntityFrameworkCore;
using FutureMailAPI.Data;
using FutureMailAPI.Models;
using FutureMailAPI.DTOs;
using System.Text.Json;
namespace FutureMailAPI.Services
{
public interface IInitializationService
{
Task InitializeAsync();
}
public class InitializationService : IInitializationService
{
private readonly FutureMailDbContext _context;
private readonly ILogger<InitializationService> _logger;
public InitializationService(FutureMailDbContext context, ILogger<InitializationService> logger)
{
_context = context;
_logger = logger;
}
public async Task InitializeAsync()
{
// 确保数据库已创建
await _context.Database.EnsureCreatedAsync();
// 创建默认OAuth客户端如果不存在
await CreateDefaultOAuthClientAsync();
_logger.LogInformation("系统初始化完成");
}
private async Task CreateDefaultOAuthClientAsync()
{
var defaultClientId = "futuremail_default_client";
// 检查默认客户端是否已存在
var existingClient = await _context.OAuthClients
.FirstOrDefaultAsync(c => c.ClientId == defaultClientId);
if (existingClient != null)
{
_logger.LogInformation("默认OAuth客户端已存在");
return;
}
// 创建默认OAuth客户端
var defaultClient = new Models.OAuthClient
{
ClientId = defaultClientId,
ClientSecret = "futuremail_default_secret",
Name = "FutureMail默认客户端",
RedirectUris = JsonSerializer.Serialize(new[] { "http://localhost:3000/callback", "http://localhost:8080/callback" }),
Scopes = JsonSerializer.Serialize(new[] { "read", "write" }),
IsActive = true,
CreatedAt = DateTime.UtcNow,
UpdatedAt = DateTime.UtcNow
};
_context.OAuthClients.Add(defaultClient);
await _context.SaveChangesAsync();
_logger.LogInformation("默认OAuth客户端创建成功");
}
}
}