1 package io.undertow.predicate;
2
3 import io.undertow.security.api.SecurityContext;
4 import io.undertow.server.HttpServerExchange;
5
6 import java.util.HashMap;
7 import java.util.HashSet;
8 import java.util.Map;
9 import java.util.Set;
10
11 /**
12  * Predicate that returns true if authentication is required.
13  *
14  * @author Stuart Douglas
15  */

16 public class AuthenticationRequiredPredicate implements Predicate {
17
18     public static final AuthenticationRequiredPredicate INSTANCE = new AuthenticationRequiredPredicate();
19
20     @Override
21     public boolean resolve(HttpServerExchange value) {
22         SecurityContext sc = value.getSecurityContext();
23         if(sc == null) {
24             return false;
25         }
26         return sc.isAuthenticationRequired();
27     }
28
29
30     public static class Builder implements PredicateBuilder {
31
32         @Override
33         public String name() {
34             return "auth-required";
35         }
36
37         @Override
38         public Map<String, Class<?>> parameters() {
39             final Map<String, Class<?>> params = new HashMap<>();
40             return params;
41         }
42
43         @Override
44         public Set<String> requiredParameters() {
45             final Set<String> params = new HashSet<>();
46             return params;
47         }
48
49         @Override
50         public String defaultParameter() {
51             return null;
52         }
53
54         @Override
55         public Predicate build(final Map<String, Object> config) {
56             return INSTANCE;
57         }
58     }
59 }
60