AuthConfigController.java
package net.hostsharing.hsadminng.config;
import io.micrometer.core.annotation.Timed;
import net.hostsharing.hsadminng.generated.api.v1.api.AuthConfigApi;
import net.hostsharing.hsadminng.generated.api.v1.model.AuthConfigResource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.env.Environment;
import org.springframework.core.env.Profiles;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RestController;
/** Reports the authentication configuration derived from this backend's own configuration,
* so that frontends can configure their login at runtime instead of redundantly per environment. */
@RestController
@NoSecurityRequirement
public class AuthConfigController implements AuthConfigApi {
private final AuthConfigResource authConfig;
public AuthConfigController(
final Environment environment,
@Value("${spring.security.oauth2.resourceserver.jwt.issuer-uri:}") final String issuerUri) {
this.authConfig = new AuthConfigResource();
if (environment.acceptsProfiles(Profiles.of("fake-jwt"))) {
authConfig.setMethod("fake-jwt");
authConfig.setTokenUrl(FakeJwtController.TOKEN_PATH);
} else {
authConfig.setMethod("oidc");
authConfig.setAuthority(issuerUri);
}
}
@Timed("app.api.authConfig")
@Override
public ResponseEntity<AuthConfigResource> getAuthConfig() {
return ResponseEntity.ok(authConfig);
}
}