All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.redpipe.engine.resteasy.PermissionInjector Maven / Gradle / Ivy

package net.redpipe.engine.resteasy;

import java.lang.annotation.Annotation;
import java.lang.reflect.Type;

import javax.ws.rs.ext.Provider;

import org.jboss.resteasy.spi.ContextInjector;
import org.jboss.resteasy.spi.ResteasyProviderFactory;

import io.vertx.rxjava.ext.auth.User;
import io.vertx.rxjava.ext.web.RoutingContext;
import net.redpipe.engine.security.HasPermission;
import rx.Single;

@Provider
public class PermissionInjector implements ContextInjector, Boolean>{

	@Override
	public Single resolve(Class> rawType, Type genericType,
			Annotation[] annotations) {
		for (Annotation annotation : annotations) {
			if(annotation.annotationType() == HasPermission.class) {
				RoutingContext ctx = ResteasyProviderFactory.getContextData(RoutingContext.class);
				User user = ctx.user();
				if(user == null)
					return Single.just(false);
				return user.rxIsAuthorised(((HasPermission) annotation).value());
			}
		}
		return null;
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy