Skip to content

Commit e4d93b7

Browse files
authored
完善常用场景的正则校验规则,感谢 leomiaomiao 的贡献 #505
#505
2 parents ff61bc4 + b3ad558 commit e4d93b7

File tree

1 file changed

+19
-10
lines changed

1 file changed

+19
-10
lines changed

APIJSONORM/src/main/java/apijson/orm/AbstractVerifier.java

+19-10
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ public abstract class AbstractVerifier<T extends Object> implements Verifier<T>,
136136
ROLE_MAP.put(UNKNOWN, new Entry<String, Object>());
137137
ROLE_MAP.put(LOGIN, new Entry<String, Object>("userId>", 0));
138138
ROLE_MAP.put(CONTACT, new Entry<String, Object>("userId{}", "contactIdList"));
139-
ROLE_MAP.put(CIRCLE, new Entry<String, Object>("userId-()", "verifyCircle()")); // "userId{}", "circleIdList")); // 还是 {"userId":"currentUserId", "userId{}": "contactIdList", "@combine": "userId,userId{}" } ?
139+
ROLE_MAP.put(CIRCLE, new Entry<String, Object>("userId-()", "verifyCircle()")); // "userId{}", "circleIdList")); // 还是 {"userId":"currentUserId", "userId{}": "contactIdList", "@combine": "userId,userId{}" } ?
140140
ROLE_MAP.put(OWNER, new Entry<String, Object>("userId", "userId"));
141141
ROLE_MAP.put(ADMIN, new Entry<String, Object>("userId-()", "verifyAdmin()"));
142142

@@ -183,8 +183,17 @@ public abstract class AbstractVerifier<T extends Object> implements Verifier<T>,
183183
REQUEST_MAP = new HashMap<>(ACCESS_MAP.size()*7); // 单个与批量增删改
184184

185185
COMPILE_MAP = new HashMap<String, Pattern>();
186+
187+
COMPILE_MAP.put("PHONE",Pattern.compile("^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\\d{8}$"));
188+
COMPILE_MAP.put("QQ",Pattern.compile("[1-9][0-9]{4,}"));
189+
COMPILE_MAP.put("EMAIL",Pattern.compile("^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$"));
190+
COMPILE_MAP.put("IDCARD",Pattern.compile("(^\\d{15}$)|(^\\d{18}$)|(^\\d{17}(\\d|X|x)$)"));
191+
COMPILE_MAP.put("TEL",Pattern.compile("(^\\(\\d{3,4}-)|\\d{3,4}-\\)?\\d{7,8}$"));
192+
COMPILE_MAP.put("IDCARD",Pattern.compile("(^\\d{15}$)|(^\\d{18}$)|(^\\d{17}(\\d|X|x)$)"));
193+
186194
}
187195

196+
188197
/**获取权限Map,每种操作都只允许对应的角色
189198
* @param access
190199
* @return
@@ -272,7 +281,7 @@ public boolean verifyAccess(SQLConfig config) throws Exception {
272281
if (role == null) {
273282
role = UNKNOWN;
274283
}
275-
else {
284+
else {
276285
if (ROLE_MAP.containsKey(role) == false) {
277286
Set<String> NAMES = ROLE_MAP.keySet();
278287
throw new IllegalArgumentException("角色 " + role + " 不存在!" +
@@ -302,8 +311,8 @@ public void verifyRole(SQLConfig config, String table, RequestMethod method, Str
302311
* @param method
303312
* @param role
304313
* @return
305-
* @throws Exception
306-
* @see {@link apijson.JSONObject#KEY_ROLE}
314+
* @throws Exception
315+
* @see {@link apijson.JSONObject#KEY_ROLE}
307316
*/
308317
public void verifyAllowRole(SQLConfig config, String table, RequestMethod method, String role) throws Exception {
309318
Log.d(TAG, "verifyAllowRole table = " + table + "; method = " + method + "; role = " + role);
@@ -333,8 +342,8 @@ public void verifyAllowRole(SQLConfig config, String table, RequestMethod method
333342
* @param method
334343
* @param role
335344
* @return
336-
* @throws Exception
337-
* @see {@link apijson.JSONObject#KEY_ROLE}
345+
* @throws Exception
346+
* @see {@link apijson.JSONObject#KEY_ROLE}
338347
*/
339348
public void verifyUseRole(SQLConfig config, String table, RequestMethod method, String role) throws Exception {
340349
Log.d(TAG, "verifyUseRole table = " + table + "; method = " + method + "; role = " + role);
@@ -367,7 +376,7 @@ public void verifyUseRole(SQLConfig config, String table, RequestMethod method,
367376

368377
//key!{}:[] 或 其它没有明确id的条件 等 可以和key{}:list组合。类型错误就报错
369378
requestId = config.getWhere(visitorIdKey, true);//JSON里数值不能保证是Long,可能是Integer
370-
@SuppressWarnings("unchecked")
379+
@SuppressWarnings("unchecked")
371380
Collection<Object> requestIdArray = (Collection<Object>) config.getWhere(visitorIdKey + "{}", true);//不能是 &{}, |{} 不要传,直接{}
372381
if (requestId != null) {
373382
if (requestIdArray == null) {
@@ -378,7 +387,7 @@ public void verifyUseRole(SQLConfig config, String table, RequestMethod method,
378387

379388
if (requestIdArray == null) {//可能是@得到 || requestIdArray.isEmpty()) {//请求未声明key:id或key{}:[...]条件,自动补全
380389
config.putWhere(visitorIdKey+"{}", JSON.parseArray(list), true); //key{}:[]有效,SQLConfig里throw NotExistException
381-
}
390+
}
382391
else {//请求已声明key:id或key{}:[]条件,直接验证
383392
for (Object id : requestIdArray) {
384393
if (id == null) {
@@ -463,7 +472,7 @@ public void verifyLogin() throws Exception {
463472
if (((Number) visitorId).longValue() <= 0) {
464473
throw new NotLoggedInException("未登录或登录过期,请登录后再操作!");
465474
}
466-
}
475+
}
467476
else if (visitorId instanceof String) {
468477
if (StringUtil.isEmpty(visitorId, true)) {
469478
throw new NotLoggedInException("未登录或登录过期,请登录后再操作!");
@@ -925,7 +934,7 @@ public static <T extends Object> JSONObject parse(@NotNull final RequestMethod m
925934
// 判断必要字段是否都有<<<<<<<<<<<<<<<<<<<
926935
String[] musts = StringUtil.split(must);
927936
Set<String> mustSet = new HashSet<String>();
928-
937+
929938
if (musts != null && musts.length > 0) {
930939
for (String s : musts) {
931940
if (real.get(s) == null && real.get(s+"@") == null) { // 可能传null进来,这里还会通过 real.containsKey(s) == false) {

0 commit comments

Comments
 (0)