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

com.wizzdi.security.adapter.OperationInterceptor Maven / Gradle / Ivy

package com.wizzdi.security.adapter;

import com.flexicore.model.SecurityOperation;
import com.wizzdi.flexicore.security.service.ClazzService;
import com.wizzdi.flexicore.security.configuration.SecurityContext;
import com.wizzdi.flexicore.security.service.SecurityOperationService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Component;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerInterceptor;

import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.lang.reflect.Method;


@Component
public class OperationInterceptor implements HandlerInterceptor {


	private static final Logger logger= LoggerFactory.getLogger(OperationInterceptor.class);
	public static final String SECURITY_CONTEXT = "securityContext";



	@Autowired
	private SecurityOperationService securityOperationService;


	@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
		SecurityContext securityContext = (SecurityContext) request.getAttribute(SECURITY_CONTEXT);
		if(securityContext !=null){
			if(handler instanceof HandlerMethod) {
				HandlerMethod handlerMethod= (HandlerMethod) handler;
				Method method = handlerMethod.getMethod();
				if(!BasicErrorController.class.equals(method.getDeclaringClass())){
					SecurityOperation securityOperation=securityOperationService.getOperation(method);
					if(securityOperation==null){
						logger.error("could not find io operation annotation on method: " + method.getName());
						response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
						return false;
					}
					securityContext.setOperation(securityOperation);
				}


			}
		}

		return true;

	}



}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy