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

com.adaptrex.security.interceptor.SecurePermissionsInterceptor Maven / Gradle / Ivy

The newest version!
///*
// * Copyright 2012 Adaptrex, LLC
// *
// * Licensed under the Apache License, Version 2.0 (the "License");
// * you may not use this file except in compliance with the License.
// * You may obtain a copy of the License at
// *
// *    http://www.apache.org/licenses/LICENSE-2.0
// *
// * Unless required by applicable law or agreed to in writing, software
// * distributed under the License is distributed on an "AS IS" BASIS,
// * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// * See the License for the specific language governing permissions and
// * limitations under the License.
// */
//
//package com.adaptrex.core.security.interceptor;
//
//import javax.interceptor.AroundInvoke;
//import javax.interceptor.Interceptor;
//import javax.interceptor.InvocationContext;
//
//import org.apache.shiro.SecurityUtils;
//import org.apache.shiro.subject.Subject;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//
//import com.adaptrex.core.security.annotation.SecurePermissions;
//
///*
// * Not implemented in standard realm yet
// */
//@Interceptor
//@SecurePermissions(permissions = {})
//public class SecurePermissionsInterceptor {
//
//	private static Logger log = LoggerFactory.getLogger(SecurePermissionsInterceptor.class);
//	
//	@AroundInvoke
//    public Object checkSecure(InvocationContext ctx) throws Exception {
//		SecurePermissions a = ctx.getMethod().getAnnotation(SecurePermissions.class);
//		
//		Subject subject = SecurityUtils.getSubject();
//		if (!subject.isAuthenticated()) {
//			log.debug("Permission Not Authorized for: Anonymous @ " + 
//					ctx.getMethod().getDeclaringClass() + "." + ctx.getMethod().getName() + "()");
//			return null;
//		}
//		if (hasPermission(subject, a)) {
//			return ctx.proceed();
//		} else {
//			log.debug("Permission Not Authorized for: " + subject.getPrincipal().toString() + " @ " + 
//					ctx.getMethod().getDeclaringClass() + "." + ctx.getMethod().getName() + "()");
//    		return null;			
//		}
//    }
//	
//	private boolean hasPermission(Subject subject, SecurePermissions permissions) {
//		String[] permissionsList = permissions.permissions();
//        if (permissionsList.length == 1) {
//        	try {
//        		subject.checkPermission(permissionsList[0]);
//        		return true;
//        	} catch (Exception e) {}
//        	
//        } else if (permissions.inclusive()) {
//        	try {
//        		subject.checkPermissions(permissionsList);
//        		return true;
//        	} catch (Exception e) {}
//        	
//        } else if (!permissions.inclusive()) {
//            for (String role : permissionsList) 
//            	if (subject.isPermitted(role)) return true;
//        }
//        
//        return false;
//	}
//}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy