swampAuthenticationFromEnvironment function
Creates authentication configuration from Swamp environment variables.
SWAMP_AUTH_FILE and SWAMP_AUTH_URL accept comma-separated values. Static
files are tried first in their listed order, followed by REST endpoints in
their listed order.
Implementation
SwampAuthentication? swampAuthenticationFromEnvironment(
Map<String, String> environment,
) {
final sources = <AuthenticationSource>[
for (final path in _environmentList(environment, 'SWAMP_AUTH_FILE'))
StaticFileAuthenticationSource(path),
for (final endpoint in _environmentList(environment, 'SWAMP_AUTH_URL'))
RestApiAuthenticationSource(Uri.parse(endpoint)),
];
if (sources.isEmpty) return null;
final maximumText = environment['SWAMP_AUTH_MAX_CONNECTIONS_PER_USER'];
final maximum = maximumText == null ? null : int.tryParse(maximumText);
if (maximumText != null && (maximum == null || maximum <= 0)) {
throw FormatException(
'SWAMP_AUTH_MAX_CONNECTIONS_PER_USER must be a positive integer',
);
}
return SwampAuthentication(
sources: sources,
policy: AuthenticationPolicy(
requireForConnection: _environmentBool(
environment,
'SWAMP_AUTH_REQUIRE_CONNECTION',
defaultValue: true,
),
requireForRoomCreation: _environmentBool(
environment,
'SWAMP_AUTH_REQUIRE_CREATE',
defaultValue: true,
),
maxConnectionsPerUser: maximum,
),
);
}