package com.github.toastshaman.dropwizard.auth.jwt;

import com.codahale.metrics.MetricRegistry;
import io.dropwizard.auth.AuthDynamicFeature;
import io.dropwizard.auth.AuthValueFactoryProvider;
import io.dropwizard.jersey.DropwizardResourceConfig;
import org.glassfish.jersey.server.filter.RolesAllowedDynamicFeature;

import javax.ws.rs.container.ContainerRequestFilter;
import java.security.Principal;

public abstract class AuthBaseResourceConfig extends DropwizardResourceConfig {
    public AuthBaseResourceConfig() {
        super(true, new MetricRegistry());

        register(new AuthDynamicFeature(getAuthFilter()));
        register(new AuthValueFactoryProvider.Binder<>(Principal.class));
        register(RolesAllowedDynamicFeature.class);
        register(AuthResource.class);
    }

    protected abstract ContainerRequestFilter getAuthFilter();
}