Skip to content

Commit 41d97e2

Browse files
author
pedro
committed
feat:重构权限的拦截
1 parent 54a429c commit 41d97e2

4 files changed

Lines changed: 20 additions & 28 deletions

File tree

pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
<groupId>io.github.talelin</groupId>
1313
<artifactId>merak</artifactId>
14-
<version>0.0.1-RC4</version>
14+
<version>0.0.1-RC5</version>
1515
<name>merak</name>
1616
<description>Demo project for lin cms</description>
1717

@@ -46,7 +46,7 @@
4646
<dependency>
4747
<groupId>io.github.talelin</groupId>
4848
<artifactId>lin-cms-spring-boot-starter</artifactId>
49-
<version>0.0.1-RC4</version>
49+
<version>0.0.1-RC5</version>
5050
</dependency>
5151

5252
<dependency>

src/main/java/io/github/talelin/merak/common/interceptor/AuthorizeVerifyResolverImpl.java

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@
33
import com.auth0.jwt.exceptions.*;
44
import com.auth0.jwt.exceptions.TokenExpiredException;
55
import com.auth0.jwt.interfaces.Claim;
6+
import io.github.talelin.autoconfigure.beans.MetaInfo;
67
import io.github.talelin.autoconfigure.exception.AuthenticationException;
78
import io.github.talelin.autoconfigure.exception.AuthorizationException;
89
import io.github.talelin.autoconfigure.exception.NotFoundException;
910
import io.github.talelin.autoconfigure.exception.TokenInvalidException;
10-
import io.github.talelin.core.annotation.RouteMeta;
1111
import io.github.talelin.merak.common.LocalUser;
1212
import io.github.talelin.merak.model.PermissionDO;
1313
import io.github.talelin.merak.model.UserDO;
@@ -18,8 +18,6 @@
1818
import org.apache.logging.log4j.util.Strings;
1919
import org.springframework.beans.factory.annotation.Autowired;
2020
import org.springframework.stereotype.Component;
21-
import org.springframework.web.servlet.ModelAndView;
22-
2321

2422
import javax.servlet.http.HttpServletRequest;
2523
import javax.servlet.http.HttpServletResponse;
@@ -45,7 +43,7 @@ public class AuthorizeVerifyResolverImpl implements AuthorizeVerifyResolver {
4543
private GroupService groupService;
4644

4745

48-
public boolean handleLogin(HttpServletRequest request, HttpServletResponse response, RouteMeta meta) {
46+
public boolean handleLogin(HttpServletRequest request, HttpServletResponse response, MetaInfo meta) {
4947
String tokenStr = verifyHeader(request, response);
5048
Map<String, Claim> claims = null;
5149
try {
@@ -59,22 +57,22 @@ public boolean handleLogin(HttpServletRequest request, HttpServletResponse respo
5957
}
6058

6159
@Override
62-
public boolean handleGroup(HttpServletRequest request, HttpServletResponse response, RouteMeta meta) {
60+
public boolean handleGroup(HttpServletRequest request, HttpServletResponse response, MetaInfo meta) {
6361
handleLogin(request, response, meta);
6462
UserDO user = LocalUser.getLocalUser();
6563
if (verifyAdmin(user))
6664
return true;
6765
long userId = user.getId();
68-
String permission = meta.permission();
69-
String module = meta.module();
66+
String permission = meta.getPermission();
67+
String module = meta.getModule();
7068
List<PermissionDO> permissions = userService.getUserPermissions(userId);
7169
boolean matched = permissions.stream().anyMatch(it -> it.getModule().equals(module) && it.getName().equals(permission));
7270
if (!matched)
7371
throw new AuthenticationException("you don't have the permission to access", 10001);
7472
return true;
7573
}
7674

77-
public boolean handleAdmin(HttpServletRequest request, HttpServletResponse response, RouteMeta meta) {
75+
public boolean handleAdmin(HttpServletRequest request, HttpServletResponse response, MetaInfo meta) {
7876
handleLogin(request, response, meta);
7977
UserDO user = LocalUser.getLocalUser();
8078
if (!verifyAdmin(user))
@@ -83,7 +81,7 @@ public boolean handleAdmin(HttpServletRequest request, HttpServletResponse respo
8381
}
8482

8583

86-
public boolean handleRefresh(HttpServletRequest request, HttpServletResponse response, RouteMeta meta) {
84+
public boolean handleRefresh(HttpServletRequest request, HttpServletResponse response, MetaInfo meta) {
8785
String tokenStr = verifyHeader(request, response);
8886
Map<String, Claim> claims = null;
8987
try {

src/main/java/io/github/talelin/merak/common/listener/PermissionHandleListener.java

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package io.github.talelin.merak.common.listener;
22

33
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
4+
import io.github.talelin.autoconfigure.beans.MetaInfo;
45
import io.github.talelin.autoconfigure.beans.RouteMetaCollector;
5-
import io.github.talelin.core.annotation.RouteMeta;
66
import io.github.talelin.merak.model.PermissionDO;
77
import io.github.talelin.merak.service.PermissionService;
88
import org.springframework.beans.factory.annotation.Autowired;
@@ -30,23 +30,21 @@ public void onApplicationEvent(ContextRefreshedEvent event) {
3030

3131
private void addNewPermissions() {
3232
metaCollector.getMetaMap().values().forEach(meta -> {
33-
if (meta.mount()) {
34-
String module = meta.module();
35-
String permission = meta.permission();
36-
createPermissionIfNotExist(permission, module);
37-
}
33+
String module = meta.getModule();
34+
String permission = meta.getPermission();
35+
createPermissionIfNotExist(permission, module);
3836
});
3937
}
4038

4139
private void removeUnusedPermissions() {
4240
List<PermissionDO> allPermissions = permissionService.list();
43-
Map<String, RouteMeta> metaMap = metaCollector.getMetaMap();
41+
Map<String, MetaInfo> metaMap = metaCollector.getMetaMap();
4442
for (PermissionDO permission : allPermissions) {
4543
boolean stayedInMeta = metaMap
4644
.values()
4745
.stream()
48-
.anyMatch(meta -> meta.mount() && meta.module().equals(permission.getModule())
49-
&& meta.permission().equals(permission.getName()));
46+
.anyMatch(meta -> meta.getModule().equals(permission.getModule())
47+
&& meta.getPermission().equals(permission.getName()));
5048
if (!stayedInMeta) {
5149
permissionService.removeById(permission.getId());
5250
}

src/main/java/io/github/talelin/merak/controller/cms/TestController.java

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
package io.github.talelin.merak.controller.cms;
22

3-
import io.github.talelin.core.annotation.GroupRequired;
4-
import io.github.talelin.core.annotation.Logger;
5-
import io.github.talelin.core.annotation.LoginRequired;
6-
import io.github.talelin.core.annotation.RouteMeta;
3+
import io.github.talelin.core.annotation.*;
74
import org.springframework.web.bind.annotation.RequestMapping;
85
import org.springframework.web.bind.annotation.RestController;
96

@@ -34,13 +31,12 @@ public Map getTestMsg() {
3431
}
3532

3633
@RequestMapping("/info")
37-
@RouteMeta(permission = "查看lin的信息", module = "信息", mount = true)
38-
@GroupRequired
34+
//@RouteMeta(permission = "查看lin的信息", module = "信息", mount = true)
35+
//@GroupRequired
36+
@GroupMeta(permission = "查看lin的信息", module = "信息", mount = true)
3937
public Map getTestInfo() {
4038
Map res = new HashMap();
4139
res.put("msg", "Lin 是一套基于 Spring boot 的一整套开箱即用的后台管理系统(CMS)。Lin 遵循简洁、高效的原则,通过核心库加插件的方式来驱动整个系统高效的运行");
4240
return res;
4341
}
44-
45-
4642
}

0 commit comments

Comments
 (0)