校验器(权限、请求参数、返回结果等) TODO 合并 Structure 的代码 @author Lemon @param id 与 userId 的类型,一般为 Long
| 58 | * @param <T> id 与 userId 的类型,一般为 Long |
| 59 | */ |
| 60 | public abstract class AbstractVerifier<T, M extends Map<String, Object>, L extends List<Object>> |
| 61 | implements Verifier<T, M, L>, IdCallback<T> { |
| 62 | private static final String TAG = "AbstractVerifier"; |
| 63 | |
| 64 | /**为 PUT, DELETE 强制要求必须有 id/id{}/id{}@ 条件 |
| 65 | */ |
| 66 | public static boolean IS_UPDATE_MUST_HAVE_ID_CONDITION = true; |
| 67 | /**开启校验请求角色权限 |
| 68 | */ |
| 69 | public static boolean ENABLE_VERIFY_ROLE = true; |
| 70 | /**开启校验请求传参内容 |
| 71 | */ |
| 72 | public static boolean ENABLE_VERIFY_CONTENT = true; |
| 73 | |
| 74 | /**未登录,不明身份的用户 |
| 75 | */ |
| 76 | public static final String UNKNOWN = "UNKNOWN"; |
| 77 | |
| 78 | /**已登录的用户 |
| 79 | */ |
| 80 | public static final String LOGIN = "LOGIN"; |
| 81 | |
| 82 | /**联系人,必须已登录 |
| 83 | */ |
| 84 | public static final String CONTACT = "CONTACT"; |
| 85 | |
| 86 | /**圈子成员(CONTACT + OWNER),必须已登录 |
| 87 | */ |
| 88 | public static final String CIRCLE = "CIRCLE"; |
| 89 | |
| 90 | /**拥有者,必须已登录 |
| 91 | */ |
| 92 | public static final String OWNER = "OWNER"; |
| 93 | |
| 94 | /**管理员,必须已登录 |
| 95 | */ |
| 96 | public static final String ADMIN = "ADMIN"; |
| 97 | |
| 98 | // public static ParserCreator<T, M, L> PARSER_CREATOR; |
| 99 | |
| 100 | public static ScriptEngineManager SCRIPT_ENGINE_MANAGER; |
| 101 | public static ScriptEngine SCRIPT_ENGINE; |
| 102 | |
| 103 | // 共享 STRUCTURE_MAP 则不能 remove 等做任何变更,否则在并发情况下可能会出错,加锁效率又低,所以这里改为忽略对应的 key |
| 104 | public static Map<String, Entry<String, Object>> ROLE_MAP; |
| 105 | |
| 106 | public static List<String> OPERATION_KEY_LIST; |
| 107 | |
| 108 | // <TableName, <METHOD, allowRoles>> |
| 109 | // <User, <GET, [OWNER, ADMIN]>> |
| 110 | @NotNull |
| 111 | public static Map<String, Map<RequestMethod, String[]>> SYSTEM_ACCESS_MAP; // TODO 改名为 CONFIG_ACCESS_MAP ? |
| 112 | @NotNull |
| 113 | public static Map<String, Map<RequestMethod, String[]>> ACCESS_MAP; |
| 114 | @NotNull |
| 115 | public static Map<String, Map<String, Object>> ACCESS_FAKE_DELETE_MAP; |
| 116 | |
| 117 | // <method tag, <version, Request>> |
nothing calls this directly
no test coverage detected