package com.iailab.framework.datapermission.core.aop;
|
|
import com.iailab.framework.datapermission.core.annotation.DataPermission;
|
import lombok.EqualsAndHashCode;
|
import lombok.Getter;
|
import org.aopalliance.aop.Advice;
|
import org.springframework.aop.Pointcut;
|
import org.springframework.aop.support.AbstractPointcutAdvisor;
|
import org.springframework.aop.support.ComposablePointcut;
|
import org.springframework.aop.support.annotation.AnnotationMatchingPointcut;
|
|
/**
|
* {@link com.iailab.framework.datapermission.core.annotation.DataPermission} 注解的 Advisor 实现类
|
*
|
* @author iailab
|
*/
|
@Getter
|
@EqualsAndHashCode(callSuper = true)
|
public class DataPermissionAnnotationAdvisor extends AbstractPointcutAdvisor {
|
|
private final Advice advice;
|
|
private final Pointcut pointcut;
|
|
public DataPermissionAnnotationAdvisor() {
|
this.advice = new DataPermissionAnnotationInterceptor();
|
this.pointcut = this.buildPointcut();
|
}
|
|
protected Pointcut buildPointcut() {
|
Pointcut classPointcut = new AnnotationMatchingPointcut(DataPermission.class, true);
|
Pointcut methodPointcut = new AnnotationMatchingPointcut(null, DataPermission.class, true);
|
return new ComposablePointcut(classPointcut).union(methodPointcut);
|
}
|
|
}
|