Package-level declarations

Types

Link copied to clipboard
@Serializable
sealed class DatabaseConfig

データベース設定 SQLiteとMySQLをsealed classで表現し、型安全に設定を管理する

Link copied to clipboard
@Serializable
data class JwtConfig(val issuer: String = "https://api.example.com", val realm: String = "example.com", val privateKeyFile: String = "privateKey.pem", val keyId: @Serializable(with = UUIDSerializer::class) UUID = UUID.randomUUID())

JWT/OIDC設定

Link copied to clipboard
@Serializable
data class JWTConfigData(val issuer: String = "https://api.morino.party", val realm: String = "morino.party", val privateKeyFile: String = "privateKey.pem", val keyId: @Serializable(with = UUIDSerializer::class) UUID)
Link copied to clipboard
@Serializable
data class MineAuthConfig(val server: ServerConfig = ServerConfig(), val jwt: JwtConfig = JwtConfig(), val oauth: OAuthConfig = OAuthConfig(), val database: DatabaseConfig = DatabaseConfig.SQLite(), val observability: ObservabilityConfig = ObservabilityConfig())

MineAuth 統合設定ファイル Issue #66: 複数の設定ファイルを1つにまとめる

Link copied to clipboard
@Serializable
data class OAuthConfig(val applicationName: String = "MineAuth", val logoUrl: String = "/assets/lock.svg")

OAuth設定

Link copied to clipboard
@Serializable
data class OAuthConfigData(val applicationName: String, val logoUrl: String)
Link copied to clipboard
@Serializable
data class ObservabilityConfig(val enabled: Boolean = false, val exporters: List<OtlpExporterConfig> = listOf(OtlpExporterConfig()), val serviceName: String = "mineauth", val metricsEnabled: Boolean = true, val healthEnabled: Boolean = true)

Observability設定(トレーシング・メトリクス) OpenTelemetryを使用してJaegerなどのバックエンドに送信

Link copied to clipboard
@Serializable
data class OtlpExporterConfig(val protocol: OtlpExporterProtocol = OtlpExporterProtocol.GRPC, val endpoint: String = "http://localhost:4317", val headers: Map<String, String> = emptyMap())

OTLPエクスポーター設定 各バックエンド(Jaeger, Tempo等)への送信設定

Link copied to clipboard

OTLP通信プロトコル

Link copied to clipboard
@Serializable
data class ServerConfig(val baseUrl: String = "https://api.example.com", val port: Int = 8080, val ssl: SSLConfigData? = null, val emailFormat: String? = null)

サーバー設定

Link copied to clipboard
@Serializable
data class SSLConfigData(val sslPort: Int, val keyStore: String, val keyAlias: String, val keyStorePassword: String, val privateKeyPassword: String)
Link copied to clipboard
@Serializable
data class WebServerConfigData(val port: Int = 8080, val ssl: SSLConfigData?)