// EN: Social login settings for external OAuth providers
// VI: Cấu hình social login cho các OAuth providers bên ngoài
namespace IamService.Infrastructure.SocialLogin;

/// <summary>
/// EN: Configuration settings for Google OAuth.
/// VI: Cấu hình cho Google OAuth.
/// </summary>
public class GoogleAuthSettings
{
    /// <summary>
    /// EN: Google OAuth Client ID.
    /// VI: Client ID của Google OAuth.
    /// </summary>
    public string ClientId { get; set; } = string.Empty;

    /// <summary>
    /// EN: Google OAuth Client Secret.
    /// VI: Client Secret của Google OAuth.
    /// </summary>
    public string ClientSecret { get; set; } = string.Empty;
}

/// <summary>
/// EN: Configuration settings for Facebook OAuth.
/// VI: Cấu hình cho Facebook OAuth.
/// </summary>
public class FacebookAuthSettings
{
    /// <summary>
    /// EN: Facebook App ID.
    /// VI: App ID của Facebook.
    /// </summary>
    public string AppId { get; set; } = string.Empty;

    /// <summary>
    /// EN: Facebook App Secret.
    /// VI: App Secret của Facebook.
    /// </summary>
    public string AppSecret { get; set; } = string.Empty;
}

/// <summary>
/// EN: Combined social login settings.
/// VI: Cấu hình tổng hợp social login.
/// </summary>
public class SocialLoginSettings
{
    /// <summary>
    /// EN: Google OAuth settings.
    /// VI: Cấu hình Google OAuth.
    /// </summary>
    public GoogleAuthSettings Google { get; set; } = new();

    /// <summary>
    /// EN: Facebook OAuth settings.
    /// VI: Cấu hình Facebook OAuth.
    /// </summary>
    public FacebookAuthSettings Facebook { get; set; } = new();

    /// <summary>
    /// EN: Callback URL after external authentication.
    /// VI: URL callback sau khi xác thực bên ngoài.
    /// </summary>
    public string CallbackUrl { get; set; } = "/api/auth/external-callback";
}
