Search in sources :

Example 1 with RequestMethodEnum

use of com.albedo.java.common.security.enums.RequestMethodEnum in project albedo by somowhere.

the class SecurityUtil method getAnonymousUrl.

public static Map<String, Set<String>> getAnonymousUrl(Map<RequestMappingInfo, HandlerMethod> handlerMethodMap) {
    Map<String, Set<String>> anonymousUrls = new HashMap<>(6);
    Set<String> get = new HashSet<>();
    Set<String> post = new HashSet<>();
    Set<String> put = new HashSet<>();
    Set<String> patch = new HashSet<>();
    Set<String> delete = new HashSet<>();
    Set<String> all = new HashSet<>();
    for (Map.Entry<RequestMappingInfo, HandlerMethod> infoEntry : handlerMethodMap.entrySet()) {
        HandlerMethod handlerMethod = infoEntry.getValue();
        AnonymousAccess anonymousAccess = handlerMethod.getMethodAnnotation(AnonymousAccess.class);
        if (null != anonymousAccess) {
            List<RequestMethod> requestMethods = new ArrayList<>(infoEntry.getKey().getMethodsCondition().getMethods());
            RequestMethodEnum request = RequestMethodEnum.find(requestMethods.size() == 0 ? RequestMethodEnum.ALL.getType() : requestMethods.get(0).name());
            switch(Objects.requireNonNull(request)) {
                case GET:
                    get.addAll(getPatterns(infoEntry));
                    break;
                case POST:
                    post.addAll(getPatterns(infoEntry));
                    break;
                case PUT:
                    put.addAll(getPatterns(infoEntry));
                    break;
                case PATCH:
                    patch.addAll(getPatterns(infoEntry));
                    break;
                case DELETE:
                    delete.addAll(getPatterns(infoEntry));
                    break;
                default:
                    all.addAll(getPatterns(infoEntry));
                    break;
            }
        }
    }
    anonymousUrls.put(RequestMethodEnum.GET.getType(), get);
    anonymousUrls.put(RequestMethodEnum.POST.getType(), post);
    anonymousUrls.put(RequestMethodEnum.PUT.getType(), put);
    anonymousUrls.put(RequestMethodEnum.PATCH.getType(), patch);
    anonymousUrls.put(RequestMethodEnum.DELETE.getType(), delete);
    anonymousUrls.put(RequestMethodEnum.ALL.getType(), all);
    return anonymousUrls;
}
Also used : RequestMappingInfo(org.springframework.web.servlet.mvc.method.RequestMappingInfo) AnonymousAccess(com.albedo.java.common.core.annotation.AnonymousAccess) RequestMethod(org.springframework.web.bind.annotation.RequestMethod) HandlerMethod(org.springframework.web.method.HandlerMethod) RequestMethodEnum(com.albedo.java.common.security.enums.RequestMethodEnum)

Aggregations

AnonymousAccess (com.albedo.java.common.core.annotation.AnonymousAccess)1 RequestMethodEnum (com.albedo.java.common.security.enums.RequestMethodEnum)1 RequestMethod (org.springframework.web.bind.annotation.RequestMethod)1 HandlerMethod (org.springframework.web.method.HandlerMethod)1 RequestMappingInfo (org.springframework.web.servlet.mvc.method.RequestMappingInfo)1