优化权限

This commit is contained in:
zhou-hao
2019-11-11 15:04:57 +08:00
parent 4c220f7139
commit 1a1b38bea0
4 changed files with 79 additions and 15 deletions

View File

@@ -58,7 +58,7 @@ public class DefaultBasicAuthorizeDefinition implements AopAuthorizeDefinition {
definition.setTargetClass(targetClass);
definition.setTargetMethod(method);
Set<Annotation> annotations = AnnotatedElementUtils.findAllMergedAnnotations(method, types);
Set<Annotation> methodAnnotation = AnnotatedElementUtils.findAllMergedAnnotations(method, types);
Set<Annotation> classAnnotation = AnnotatedElementUtils.findAllMergedAnnotations(targetClass, types);
@@ -66,7 +66,7 @@ public class DefaultBasicAuthorizeDefinition implements AopAuthorizeDefinition {
.stream()
.collect(Collectors.toMap(Annotation::annotationType, Function.identity()));
Map<Class, Annotation> mapping = annotations
Map<Class, Annotation> mapping = methodAnnotation
.stream()
.collect(Collectors.toMap(Annotation::annotationType, Function.identity()));
@@ -79,7 +79,7 @@ public class DefaultBasicAuthorizeDefinition implements AopAuthorizeDefinition {
}
}
for (Annotation annotation : annotations) {
for (Annotation annotation : methodAnnotation) {
if (annotation instanceof Authorize) {
definition.putAnnotation(((Authorize) annotation));
}
@@ -91,7 +91,7 @@ public class DefaultBasicAuthorizeDefinition implements AopAuthorizeDefinition {
}
}
for (Annotation annotation : annotations) {
for (Annotation annotation : methodAnnotation) {
if (annotation instanceof ResourceAction) {
Optional.ofNullable(mapping.getOrDefault(Resource.class, classAnnotationMap.get(Resource.class)))
@@ -107,19 +107,23 @@ public class DefaultBasicAuthorizeDefinition implements AopAuthorizeDefinition {
.ifPresent(dat -> definition.putAnnotation(action, dat));
});
}
Optional<ResourceActionDefinition> actionDefinition = Optional.ofNullable(mapping.getOrDefault(Resource.class, classAnnotationMap.get(Resource.class)))
.map(Resource.class::cast)
.flatMap(res -> definition.getResources().getResource(res.id()))
.flatMap(res -> Optional.ofNullable(mapping.get(ResourceAction.class))
.map(ResourceAction.class::cast)
.flatMap(ra -> res.getAction(ra.id())));
if (annotation instanceof DataAccessType) {
actionDefinition.ifPresent(ra -> definition.putAnnotation(ra, (DataAccessType) annotation));
}
if (annotation instanceof DataAccess) {
Optional.ofNullable(mapping.getOrDefault(Resource.class, classAnnotationMap.get(Resource.class)))
.map(Resource.class::cast)
.flatMap(res -> definition.getResources().getResource(res.id()))
.flatMap(res -> Optional.ofNullable(mapping.get(ResourceAction.class))
.map(ResourceAction.class::cast)
.flatMap(ra -> res.getAction(ra.id())))
.ifPresent(ra -> {
actionDefinition.ifPresent(ra -> {
definition.putAnnotation(ra, (DataAccess) annotation);
Optional.ofNullable(mapping.get(DataAccessType.class))
.map(DataAccessType.class::cast)
.ifPresent(dat -> definition.putAnnotation(ra, dat));
});
}