From e09d2db2b8313dadcc49b6cfcbedf434c3720491 Mon Sep 17 00:00:00 2001 From: alex Date: Sun, 1 Nov 2020 16:34:07 +0800 Subject: [PATCH 1/7] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=9D=83=E9=99=90?= =?UTF-8?q?=E5=88=A4=E6=96=AD=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/synebula/zeus/app/config/ZeusBeans.kt | 4 +-- .../zeus/app/controller/rbac/GroupApp.kt | 1 - .../zeus/app/controller/rbac/RoleApp.kt | 1 - .../zeus/app/controller/rbac/UserApp.kt | 3 +- .../controller/rbac/resource/PermissionApp.kt | 14 ++++----- .../domain/model/rbac/resource/Permission.kt | 3 +- .../cmd/rbac/resource/PermissionCmd.kt | 1 + .../impl/rbac/resource/PermissionService.kt | 13 +++++++++ .../query/contr/resouce/IInterfaceQuery.kt | 6 ++++ .../zeus/query/contr/resouce/IPageQuery.kt | 6 ++++ .../query/contr/resouce/IPermissionQuery.kt | 7 +++++ .../zeus/query/contr/resouce/ISystemQuery.kt | 6 ++++ .../zeus/query/impl/resouce/InterfaceQuery.kt | 17 ++++++++++- .../zeus/query/impl/resouce/PageQuery.kt | 16 +++++++++- .../query/impl/resouce/PermissionQuery.kt | 29 +++++++++++++++++-- .../zeus/query/impl/resouce/SystemQuery.kt | 17 ++++++++++- .../query/view/resource/PermissionView.kt | 1 + 17 files changed, 124 insertions(+), 21 deletions(-) create mode 100644 src/zeus.domain/src/main/kotlin/com/synebula/zeus/domain/service/impl/rbac/resource/PermissionService.kt diff --git a/src/zeus.app/src/main/kotlin/com/synebula/zeus/app/config/ZeusBeans.kt b/src/zeus.app/src/main/kotlin/com/synebula/zeus/app/config/ZeusBeans.kt index bccc56c..87d8557 100644 --- a/src/zeus.app/src/main/kotlin/com/synebula/zeus/app/config/ZeusBeans.kt +++ b/src/zeus.app/src/main/kotlin/com/synebula/zeus/app/config/ZeusBeans.kt @@ -17,13 +17,13 @@ import org.springframework.data.mongodb.core.MongoTemplate @Configuration open class ZeusBeans { - @Primary @Bean + @Primary open fun > repository(template: MongoTemplate) : IRepository = MongoRepository(template) - @Primary @Bean + @Primary open fun query(template: MongoTemplate, logger: ILogger? = null) : IQuery = MongoQuery(template, logger) diff --git a/src/zeus.app/src/main/kotlin/com/synebula/zeus/app/controller/rbac/GroupApp.kt b/src/zeus.app/src/main/kotlin/com/synebula/zeus/app/controller/rbac/GroupApp.kt index af1033c..4e84b27 100644 --- a/src/zeus.app/src/main/kotlin/com/synebula/zeus/app/controller/rbac/GroupApp.kt +++ b/src/zeus.app/src/main/kotlin/com/synebula/zeus/app/controller/rbac/GroupApp.kt @@ -6,7 +6,6 @@ import com.synebula.gaea.query.IQuery import com.synebula.zeus.domain.service.cmd.rbac.GroupCmd import com.synebula.zeus.domain.service.contr.rbac.IGroupService import com.synebula.zeus.query.view.GroupView -import org.springframework.beans.factory.annotation.Qualifier import org.springframework.web.bind.annotation.RequestMapping import org.springframework.web.bind.annotation.RestController diff --git a/src/zeus.app/src/main/kotlin/com/synebula/zeus/app/controller/rbac/RoleApp.kt b/src/zeus.app/src/main/kotlin/com/synebula/zeus/app/controller/rbac/RoleApp.kt index bbcdaf1..6354c7d 100644 --- a/src/zeus.app/src/main/kotlin/com/synebula/zeus/app/controller/rbac/RoleApp.kt +++ b/src/zeus.app/src/main/kotlin/com/synebula/zeus/app/controller/rbac/RoleApp.kt @@ -6,7 +6,6 @@ import com.synebula.gaea.query.IQuery import com.synebula.zeus.domain.service.cmd.rbac.RoleCmd import com.synebula.zeus.domain.service.contr.rbac.IRoleService import com.synebula.zeus.query.view.RoleView -import org.springframework.beans.factory.annotation.Qualifier import org.springframework.web.bind.annotation.RequestMapping import org.springframework.web.bind.annotation.RestController diff --git a/src/zeus.app/src/main/kotlin/com/synebula/zeus/app/controller/rbac/UserApp.kt b/src/zeus.app/src/main/kotlin/com/synebula/zeus/app/controller/rbac/UserApp.kt index 2744c9d..f32e4b5 100644 --- a/src/zeus.app/src/main/kotlin/com/synebula/zeus/app/controller/rbac/UserApp.kt +++ b/src/zeus.app/src/main/kotlin/com/synebula/zeus/app/controller/rbac/UserApp.kt @@ -10,14 +10,13 @@ import com.synebula.zeus.domain.service.cmd.rbac.UserCmd import com.synebula.zeus.domain.service.contr.rbac.IUserService import com.synebula.zeus.query.view.UserView import org.springframework.beans.factory.annotation.Autowired -import org.springframework.beans.factory.annotation.Qualifier import org.springframework.web.bind.annotation.* @RestController @RequestMapping("/users") class UserApp( service: IUserService, - @Qualifier("query") query: IQuery, + query: IQuery, logger: ILogger ) : Application( "用户信息", UserView::class.java, diff --git a/src/zeus.app/src/main/kotlin/com/synebula/zeus/app/controller/rbac/resource/PermissionApp.kt b/src/zeus.app/src/main/kotlin/com/synebula/zeus/app/controller/rbac/resource/PermissionApp.kt index d6616c1..fc0837d 100644 --- a/src/zeus.app/src/main/kotlin/com/synebula/zeus/app/controller/rbac/resource/PermissionApp.kt +++ b/src/zeus.app/src/main/kotlin/com/synebula/zeus/app/controller/rbac/resource/PermissionApp.kt @@ -2,13 +2,9 @@ package com.synebula.zeus.app.controller.rbac.resource import com.synebula.gaea.app.Application import com.synebula.gaea.log.ILogger -import com.synebula.zeus.domain.service.cmd.rbac.resource.PageCmd import com.synebula.zeus.domain.service.cmd.rbac.resource.PermissionCmd -import com.synebula.zeus.domain.service.contr.rbac.resource.IPageService import com.synebula.zeus.domain.service.contr.rbac.resource.IPermissionService -import com.synebula.zeus.query.contr.resouce.IPageQuery import com.synebula.zeus.query.contr.resouce.IPermissionQuery -import com.synebula.zeus.query.view.resource.PageView import com.synebula.zeus.query.view.resource.PermissionView import org.springframework.web.bind.annotation.RequestMapping import org.springframework.web.bind.annotation.RestController @@ -16,10 +12,10 @@ import org.springframework.web.bind.annotation.RestController @RestController @RequestMapping("/permissions") class PermissionApp( - service: IPermissionService, - query: IPermissionQuery, - logger: ILogger + service: IPermissionService, + query: IPermissionQuery, + logger: ILogger ) : Application( - "权限信息", PermissionView::class.java, - service, query, logger + "权限信息", PermissionView::class.java, + service, query, logger ) \ No newline at end of file diff --git a/src/zeus.domain/src/main/kotlin/com/synebula/zeus/domain/model/rbac/resource/Permission.kt b/src/zeus.domain/src/main/kotlin/com/synebula/zeus/domain/model/rbac/resource/Permission.kt index 8b9e67b..53f8541 100644 --- a/src/zeus.domain/src/main/kotlin/com/synebula/zeus/domain/model/rbac/resource/Permission.kt +++ b/src/zeus.domain/src/main/kotlin/com/synebula/zeus/domain/model/rbac/resource/Permission.kt @@ -4,7 +4,8 @@ import com.synebula.gaea.domain.model.AggregateRoot import com.synebula.zeus.env.PermissionType import com.synebula.zeus.env.ResourceType -class Permission(override var id: String?) : AggregateRoot() { +class Permission(override var id: String? = null) : AggregateRoot() { + var role = "" var resource = "" var type: ResourceType? = null var authorization = PermissionType.Allow diff --git a/src/zeus.domain/src/main/kotlin/com/synebula/zeus/domain/service/cmd/rbac/resource/PermissionCmd.kt b/src/zeus.domain/src/main/kotlin/com/synebula/zeus/domain/service/cmd/rbac/resource/PermissionCmd.kt index 8248f18..6ba3acb 100644 --- a/src/zeus.domain/src/main/kotlin/com/synebula/zeus/domain/service/cmd/rbac/resource/PermissionCmd.kt +++ b/src/zeus.domain/src/main/kotlin/com/synebula/zeus/domain/service/cmd/rbac/resource/PermissionCmd.kt @@ -6,6 +6,7 @@ import com.synebula.zeus.env.ResourceType class PermissionCmd : Command() { var id: String? = null + var role = "" var resource = "" var type: ResourceType? = null var authorization = PermissionType.Allow diff --git a/src/zeus.domain/src/main/kotlin/com/synebula/zeus/domain/service/impl/rbac/resource/PermissionService.kt b/src/zeus.domain/src/main/kotlin/com/synebula/zeus/domain/service/impl/rbac/resource/PermissionService.kt new file mode 100644 index 0000000..6f57fcd --- /dev/null +++ b/src/zeus.domain/src/main/kotlin/com/synebula/zeus/domain/service/impl/rbac/resource/PermissionService.kt @@ -0,0 +1,13 @@ +package com.synebula.zeus.domain.service.impl.rbac.resource + +import com.synebula.gaea.data.IObjectConverter +import com.synebula.gaea.domain.repository.IRepository +import com.synebula.gaea.domain.service.Service +import com.synebula.gaea.log.ILogger +import com.synebula.zeus.domain.model.rbac.resource.Permission +import com.synebula.zeus.domain.service.contr.rbac.resource.IPermissionService + +class PermissionService( + repository: IRepository, + converter: IObjectConverter, logger: ILogger +) : Service(Permission::class.java, repository, converter, logger), IPermissionService \ No newline at end of file diff --git a/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/contr/resouce/IInterfaceQuery.kt b/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/contr/resouce/IInterfaceQuery.kt index 480b838..ed97915 100644 --- a/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/contr/resouce/IInterfaceQuery.kt +++ b/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/contr/resouce/IInterfaceQuery.kt @@ -1,6 +1,12 @@ package com.synebula.zeus.query.contr.resouce import com.synebula.gaea.query.IQuery +import com.synebula.zeus.env.PermissionType +import com.synebula.zeus.query.view.resource.InterfaceView interface IInterfaceQuery : IQuery { + + fun withPermission(role: String): List + + fun authentication(resource: String, role: String): PermissionType } \ No newline at end of file diff --git a/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/contr/resouce/IPageQuery.kt b/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/contr/resouce/IPageQuery.kt index 788cdf4..7d9c990 100644 --- a/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/contr/resouce/IPageQuery.kt +++ b/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/contr/resouce/IPageQuery.kt @@ -1,6 +1,12 @@ package com.synebula.zeus.query.contr.resouce import com.synebula.gaea.query.IQuery +import com.synebula.zeus.env.PermissionType +import com.synebula.zeus.query.view.resource.PageView interface IPageQuery : IQuery { + + fun withPermission(role: String): List + + fun authentication(resource: String, role: String): PermissionType } \ No newline at end of file diff --git a/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/contr/resouce/IPermissionQuery.kt b/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/contr/resouce/IPermissionQuery.kt index 93f70f2..c3285d7 100644 --- a/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/contr/resouce/IPermissionQuery.kt +++ b/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/contr/resouce/IPermissionQuery.kt @@ -1,6 +1,13 @@ package com.synebula.zeus.query.contr.resouce import com.synebula.gaea.query.IQuery +import com.synebula.zeus.env.PermissionType +import com.synebula.zeus.env.ResourceType +import com.synebula.zeus.query.view.resource.PermissionView interface IPermissionQuery : IQuery { + + fun resourcePermissions(resourceType: ResourceType, role: String): List + + fun authentication(resourceType: ResourceType, resource: String, role: String): PermissionType } \ No newline at end of file diff --git a/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/contr/resouce/ISystemQuery.kt b/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/contr/resouce/ISystemQuery.kt index af251f8..cb2f205 100644 --- a/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/contr/resouce/ISystemQuery.kt +++ b/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/contr/resouce/ISystemQuery.kt @@ -1,6 +1,12 @@ package com.synebula.zeus.query.contr.resouce import com.synebula.gaea.query.IQuery +import com.synebula.zeus.env.PermissionType +import com.synebula.zeus.query.view.resource.SystemView interface ISystemQuery : IQuery { + + fun withPermission(role: String): List + + fun authentication(resource: String, role: String): PermissionType } \ No newline at end of file diff --git a/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/impl/resouce/InterfaceQuery.kt b/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/impl/resouce/InterfaceQuery.kt index a4eb103..7d8c3aa 100644 --- a/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/impl/resouce/InterfaceQuery.kt +++ b/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/impl/resouce/InterfaceQuery.kt @@ -1,8 +1,23 @@ package com.synebula.zeus.query.impl.resouce import com.synebula.gaea.mongo.query.MongoQuery +import com.synebula.zeus.env.PermissionType +import com.synebula.zeus.env.ResourceType import com.synebula.zeus.query.contr.resouce.IInterfaceQuery +import com.synebula.zeus.query.view.resource.InterfaceView import org.springframework.data.mongodb.core.MongoTemplate -class InterfaceQuery(template: MongoTemplate) : MongoQuery(template), IInterfaceQuery { +class InterfaceQuery(template: MongoTemplate, var permissionQuery: PermissionQuery) : MongoQuery(template), IInterfaceQuery { + + private val clazz = InterfaceView::class.java + + override fun withPermission(role: String): List { + val interfaces = this.list(mapOf(), this.clazz) + val permissions = this.permissionQuery.resourcePermissions(ResourceType.Interface, role) + return interfaces.filter { i -> permissions.find { p -> i.id == p.resource }?.authorization == PermissionType.Allow } + } + + override fun authentication(resource: String, role: String): PermissionType { + return this.permissionQuery.authentication(ResourceType.Interface, resource, role) + } } \ No newline at end of file diff --git a/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/impl/resouce/PageQuery.kt b/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/impl/resouce/PageQuery.kt index cf2a7aa..1540a10 100644 --- a/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/impl/resouce/PageQuery.kt +++ b/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/impl/resouce/PageQuery.kt @@ -1,8 +1,22 @@ package com.synebula.zeus.query.impl.resouce import com.synebula.gaea.mongo.query.MongoQuery +import com.synebula.zeus.env.PermissionType +import com.synebula.zeus.env.ResourceType import com.synebula.zeus.query.contr.resouce.IPageQuery +import com.synebula.zeus.query.view.resource.PageView import org.springframework.data.mongodb.core.MongoTemplate -class PageQuery(template: MongoTemplate) : MongoQuery(template), IPageQuery { +class PageQuery(template: MongoTemplate, var permissionQuery: PermissionQuery) : MongoQuery(template), IPageQuery { + private val clazz = PageView::class.java + + override fun withPermission(role: String): List { + val pages = this.list(mapOf(), this.clazz) + val permissions = this.permissionQuery.resourcePermissions(ResourceType.Page, role) + return pages.filter { i -> permissions.find { p -> i.id == p.resource }?.authorization == PermissionType.Allow } + } + + override fun authentication(resource: String, role: String): PermissionType { + return this.permissionQuery.authentication(ResourceType.Page, resource, role) + } } \ No newline at end of file diff --git a/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/impl/resouce/PermissionQuery.kt b/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/impl/resouce/PermissionQuery.kt index d82fa12..f85c483 100644 --- a/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/impl/resouce/PermissionQuery.kt +++ b/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/impl/resouce/PermissionQuery.kt @@ -1,8 +1,33 @@ package com.synebula.zeus.query.impl.resouce import com.synebula.gaea.mongo.query.MongoQuery +import com.synebula.zeus.env.PermissionType +import com.synebula.zeus.env.ResourceType import com.synebula.zeus.query.contr.resouce.IPermissionQuery -import com.synebula.zeus.query.contr.resouce.ISystemQuery +import com.synebula.zeus.query.view.resource.PermissionView import org.springframework.data.mongodb.core.MongoTemplate +import org.springframework.data.mongodb.core.query.Criteria +import org.springframework.data.mongodb.core.query.Query -class PermissionQuery(template: MongoTemplate) : MongoQuery(template), IPermissionQuery \ No newline at end of file +class PermissionQuery(template: MongoTemplate) : MongoQuery(template), IPermissionQuery { + var clazz = PermissionView::class.java + var collection = this.collection(this.clazz) + + override fun resourcePermissions(resourceType: ResourceType, role: String): List { + return this.template.find( + Query.query( + Criteria.where("resourceType").`is`(resourceType) + .and("role").`is`(role) + ), this.clazz, this.collection) + } + + override fun authentication(resourceType: ResourceType, resource: String, role: String): PermissionType { + val permission = this.template.findOne( + Query.query( + Criteria.where("resourceType").`is`(resourceType) + .and("resource").`is`(resource) + .and("role").`is`(role) + ), this.clazz, this.collection) + return permission?.authorization ?: PermissionType.Allow + } +} \ No newline at end of file diff --git a/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/impl/resouce/SystemQuery.kt b/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/impl/resouce/SystemQuery.kt index d96892d..6e3e4b7 100644 --- a/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/impl/resouce/SystemQuery.kt +++ b/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/impl/resouce/SystemQuery.kt @@ -1,7 +1,22 @@ package com.synebula.zeus.query.impl.resouce import com.synebula.gaea.mongo.query.MongoQuery +import com.synebula.zeus.env.PermissionType +import com.synebula.zeus.env.ResourceType import com.synebula.zeus.query.contr.resouce.ISystemQuery +import com.synebula.zeus.query.view.resource.SystemView import org.springframework.data.mongodb.core.MongoTemplate -class SystemQuery(template: MongoTemplate) : MongoQuery(template), ISystemQuery \ No newline at end of file +class SystemQuery(template: MongoTemplate, var permissionQuery: PermissionQuery) : MongoQuery(template), ISystemQuery { + private val clazz = SystemView::class.java + + override fun withPermission(role: String): List { + val systems = this.list(mapOf(), this.clazz) + val permissions = this.permissionQuery.resourcePermissions(ResourceType.System, role) + return systems.filter { i -> permissions.find { p -> i.id == p.resource }?.authorization == PermissionType.Allow } + } + + override fun authentication(resource: String, role: String): PermissionType { + return this.permissionQuery.authentication(ResourceType.System, resource, role) + } +} \ No newline at end of file diff --git a/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/view/resource/PermissionView.kt b/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/view/resource/PermissionView.kt index 90a6af8..770c065 100644 --- a/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/view/resource/PermissionView.kt +++ b/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/view/resource/PermissionView.kt @@ -5,6 +5,7 @@ import com.synebula.zeus.env.ResourceType class PermissionView() { var id: String? = null + var role = "" var resource = "" var type: ResourceType? = null var authorization = PermissionType.Allow From 27a070cb36420acef11d45ad0e60818f643b4572 Mon Sep 17 00:00:00 2001 From: alex Date: Mon, 2 Nov 2020 00:04:27 +0800 Subject: [PATCH 2/7] =?UTF-8?q?=E5=AE=8C=E5=96=84=E6=9D=83=E9=99=90?= =?UTF-8?q?=E8=AE=A4=E8=AF=81=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/rbac/resource/InterfaceApp.kt | 35 ++++++++++++++++--- .../app/controller/rbac/resource/PageApp.kt | 33 ++++++++++++++--- .../app/controller/rbac/resource/SystemApp.kt | 25 ++++++++++--- .../domain/model/rbac/resource/Interface.kt | 1 + .../zeus/domain/model/rbac/resource/Page.kt | 8 ++--- .../domain/model/rbac/resource/Resource.kt | 6 ++-- .../service/cmd/rbac/resource/InterfaceCmd.kt | 1 + .../service/cmd/rbac/resource/PageCmd.kt | 8 ++--- .../service/cmd/rbac/resource/ResourceCmd.kt | 6 ++-- .../query/contr/resouce/IInterfaceQuery.kt | 2 ++ .../zeus/query/contr/resouce/IPageQuery.kt | 2 ++ .../zeus/query/impl/resouce/InterfaceQuery.kt | 25 +++++++++++-- .../zeus/query/impl/resouce/PageQuery.kt | 23 ++++++++++-- .../query/impl/resouce/PermissionQuery.kt | 2 +- .../zeus/query/view/resource/InterfaceView.kt | 1 + .../zeus/query/view/resource/PageView.kt | 8 ++--- .../zeus/query/view/resource/ResourceView.kt | 6 ++-- 17 files changed, 151 insertions(+), 41 deletions(-) diff --git a/src/zeus.app/src/main/kotlin/com/synebula/zeus/app/controller/rbac/resource/InterfaceApp.kt b/src/zeus.app/src/main/kotlin/com/synebula/zeus/app/controller/rbac/resource/InterfaceApp.kt index 6cfa2ba..a20835a 100644 --- a/src/zeus.app/src/main/kotlin/com/synebula/zeus/app/controller/rbac/resource/InterfaceApp.kt +++ b/src/zeus.app/src/main/kotlin/com/synebula/zeus/app/controller/rbac/resource/InterfaceApp.kt @@ -1,11 +1,14 @@ package com.synebula.zeus.app.controller.rbac.resource import com.synebula.gaea.app.Application +import com.synebula.gaea.app.component.HttpMessage import com.synebula.gaea.log.ILogger import com.synebula.zeus.domain.service.cmd.rbac.resource.InterfaceCmd import com.synebula.zeus.domain.service.contr.rbac.resource.IInterfaceService -import com.synebula.zeus.query.impl.resouce.InterfaceQuery +import com.synebula.zeus.query.contr.resouce.IInterfaceQuery import com.synebula.zeus.query.view.resource.InterfaceView +import org.springframework.web.bind.annotation.GetMapping +import org.springframework.web.bind.annotation.PathVariable import org.springframework.web.bind.annotation.RequestMapping import org.springframework.web.bind.annotation.RestController @@ -13,9 +16,31 @@ import org.springframework.web.bind.annotation.RestController @RequestMapping("/interfaces") class InterfaceApp( service: IInterfaceService, - query: InterfaceQuery, - logger: ILogger + logger: ILogger, + var interfaceQuery: IInterfaceQuery ) : Application( "接口信息", InterfaceView::class.java, - service, query, logger -) \ No newline at end of file + service, interfaceQuery, logger +) { + + @GetMapping("/in-system/{system}/permission/{role}") + fun withSystemPermission(@PathVariable system: String, @PathVariable role: String): HttpMessage { + return this.safeExecute("获取有权资源列表失败") { msg -> + msg.data = this.interfaceQuery.withPermission(role, system) + } + } + + @GetMapping("/permission/{role}") + fun withPermission(@PathVariable role: String): HttpMessage { + return this.safeExecute("获取有权资源列表失败") { msg -> + msg.data = this.interfaceQuery.withPermission(role) + } + } + + @GetMapping("/{api}/authentication/{role}") + fun authentication(@PathVariable api: String, @PathVariable role: String): HttpMessage { + return this.safeExecute("获取权限信息失败") { msg -> + msg.data = this.interfaceQuery.authentication(api, role) + } + } +} \ No newline at end of file diff --git a/src/zeus.app/src/main/kotlin/com/synebula/zeus/app/controller/rbac/resource/PageApp.kt b/src/zeus.app/src/main/kotlin/com/synebula/zeus/app/controller/rbac/resource/PageApp.kt index 2acb911..68f3d56 100644 --- a/src/zeus.app/src/main/kotlin/com/synebula/zeus/app/controller/rbac/resource/PageApp.kt +++ b/src/zeus.app/src/main/kotlin/com/synebula/zeus/app/controller/rbac/resource/PageApp.kt @@ -1,11 +1,14 @@ package com.synebula.zeus.app.controller.rbac.resource import com.synebula.gaea.app.Application +import com.synebula.gaea.app.component.HttpMessage import com.synebula.gaea.log.ILogger import com.synebula.zeus.domain.service.cmd.rbac.resource.PageCmd import com.synebula.zeus.domain.service.contr.rbac.resource.IPageService import com.synebula.zeus.query.contr.resouce.IPageQuery import com.synebula.zeus.query.view.resource.PageView +import org.springframework.web.bind.annotation.GetMapping +import org.springframework.web.bind.annotation.PathVariable import org.springframework.web.bind.annotation.RequestMapping import org.springframework.web.bind.annotation.RestController @@ -13,9 +16,31 @@ import org.springframework.web.bind.annotation.RestController @RequestMapping("/pages") class PageApp( service: IPageService, - query: IPageQuery, - logger: ILogger + logger: ILogger, + var pageQuery: IPageQuery ) : Application( "页面信息", PageView::class.java, - service, query, logger -) \ No newline at end of file + service, pageQuery, logger +) { + + @GetMapping("/in-system/{system}/permission/{role}") + fun withSystemPermission(@PathVariable system: String, @PathVariable role: String): HttpMessage { + return this.safeExecute("获取有权资源列表失败") { msg -> + msg.data = this.pageQuery.withPermission(role, system) + } + } + + @GetMapping("/permission/{role}") + fun withPermission(@PathVariable role: String): HttpMessage { + return this.safeExecute("获取有权资源列表失败") { msg -> + msg.data = this.pageQuery.withPermission(role) + } + } + + @GetMapping("/{page}/authentication/{role}") + fun authentication(@PathVariable page: String, @PathVariable role: String): HttpMessage { + return this.safeExecute("获取权限信息失败") { msg -> + msg.data = this.pageQuery.authentication(page, role) + } + } +} \ No newline at end of file diff --git a/src/zeus.app/src/main/kotlin/com/synebula/zeus/app/controller/rbac/resource/SystemApp.kt b/src/zeus.app/src/main/kotlin/com/synebula/zeus/app/controller/rbac/resource/SystemApp.kt index 5112a24..f49ea66 100644 --- a/src/zeus.app/src/main/kotlin/com/synebula/zeus/app/controller/rbac/resource/SystemApp.kt +++ b/src/zeus.app/src/main/kotlin/com/synebula/zeus/app/controller/rbac/resource/SystemApp.kt @@ -1,11 +1,14 @@ package com.synebula.zeus.app.controller.rbac.resource import com.synebula.gaea.app.Application +import com.synebula.gaea.app.component.HttpMessage import com.synebula.gaea.log.ILogger import com.synebula.zeus.domain.service.cmd.rbac.resource.SystemCmd import com.synebula.zeus.domain.service.contr.rbac.resource.ISystemService import com.synebula.zeus.query.contr.resouce.ISystemQuery import com.synebula.zeus.query.view.resource.SystemView +import org.springframework.web.bind.annotation.GetMapping +import org.springframework.web.bind.annotation.PathVariable import org.springframework.web.bind.annotation.RequestMapping import org.springframework.web.bind.annotation.RestController @@ -13,9 +16,23 @@ import org.springframework.web.bind.annotation.RestController @RequestMapping("/systems") class SystemApp( service: ISystemService, - query: ISystemQuery, - logger: ILogger + logger: ILogger, + var systemQuery: ISystemQuery ) : Application( "系统信息", SystemView::class.java, - service, query, logger -) \ No newline at end of file + service, systemQuery, logger +) { + @GetMapping("/permission/{role}") + fun withPermission(@PathVariable role: String): HttpMessage { + return this.safeExecute("获取有权资源列表失败") { msg -> + msg.data = this.systemQuery.withPermission(role) + } + } + + @GetMapping("/{system}/authentication/{role}") + fun authentication(@PathVariable system: String, @PathVariable role: String): HttpMessage { + return this.safeExecute("获取权限信息失败") { msg -> + msg.data = this.systemQuery.authentication(system, role) + } + } +} \ No newline at end of file diff --git a/src/zeus.domain/src/main/kotlin/com/synebula/zeus/domain/model/rbac/resource/Interface.kt b/src/zeus.domain/src/main/kotlin/com/synebula/zeus/domain/model/rbac/resource/Interface.kt index 2f4af14..67716a2 100644 --- a/src/zeus.domain/src/main/kotlin/com/synebula/zeus/domain/model/rbac/resource/Interface.kt +++ b/src/zeus.domain/src/main/kotlin/com/synebula/zeus/domain/model/rbac/resource/Interface.kt @@ -3,5 +3,6 @@ package com.synebula.zeus.domain.model.rbac.resource import com.synebula.gaea.domain.model.IAggregateRoot class Interface : Resource(), IAggregateRoot { + var system = "" override var alive = true } \ No newline at end of file diff --git a/src/zeus.domain/src/main/kotlin/com/synebula/zeus/domain/model/rbac/resource/Page.kt b/src/zeus.domain/src/main/kotlin/com/synebula/zeus/domain/model/rbac/resource/Page.kt index 002dd4a..02325bc 100644 --- a/src/zeus.domain/src/main/kotlin/com/synebula/zeus/domain/model/rbac/resource/Page.kt +++ b/src/zeus.domain/src/main/kotlin/com/synebula/zeus/domain/model/rbac/resource/Page.kt @@ -5,16 +5,16 @@ import com.synebula.gaea.domain.model.IAggregateRoot class Page : Resource(), IAggregateRoot { // 上级页面 - val supPage = 0 + var parent = "" // 页面图标 - val icon: String? = null + var icon: String? = null // 附加参数 - val params: String? = null + var params: String? = null // 所属系统 - val system = 0 + var system = "" override var alive = true diff --git a/src/zeus.domain/src/main/kotlin/com/synebula/zeus/domain/model/rbac/resource/Resource.kt b/src/zeus.domain/src/main/kotlin/com/synebula/zeus/domain/model/rbac/resource/Resource.kt index 93641d3..02bb513 100644 --- a/src/zeus.domain/src/main/kotlin/com/synebula/zeus/domain/model/rbac/resource/Resource.kt +++ b/src/zeus.domain/src/main/kotlin/com/synebula/zeus/domain/model/rbac/resource/Resource.kt @@ -4,8 +4,8 @@ import com.synebula.gaea.domain.model.Entity abstract class Resource(override var id: String? = null) : Entity() { var name = "" - var signature = "" - val uri: String? = null + //资源定位符,唯一标识。可以是uil,也可以是别名 + var uri = "" var order = 0 - var desc = "" + var desc: String? = null } \ No newline at end of file diff --git a/src/zeus.domain/src/main/kotlin/com/synebula/zeus/domain/service/cmd/rbac/resource/InterfaceCmd.kt b/src/zeus.domain/src/main/kotlin/com/synebula/zeus/domain/service/cmd/rbac/resource/InterfaceCmd.kt index feea2db..05af0c2 100644 --- a/src/zeus.domain/src/main/kotlin/com/synebula/zeus/domain/service/cmd/rbac/resource/InterfaceCmd.kt +++ b/src/zeus.domain/src/main/kotlin/com/synebula/zeus/domain/service/cmd/rbac/resource/InterfaceCmd.kt @@ -1,5 +1,6 @@ package com.synebula.zeus.domain.service.cmd.rbac.resource class InterfaceCmd : ResourceCmd() { + var system = "" var alive = true } \ No newline at end of file diff --git a/src/zeus.domain/src/main/kotlin/com/synebula/zeus/domain/service/cmd/rbac/resource/PageCmd.kt b/src/zeus.domain/src/main/kotlin/com/synebula/zeus/domain/service/cmd/rbac/resource/PageCmd.kt index ca87f9f..6e644b1 100644 --- a/src/zeus.domain/src/main/kotlin/com/synebula/zeus/domain/service/cmd/rbac/resource/PageCmd.kt +++ b/src/zeus.domain/src/main/kotlin/com/synebula/zeus/domain/service/cmd/rbac/resource/PageCmd.kt @@ -3,16 +3,16 @@ package com.synebula.zeus.domain.service.cmd.rbac.resource class PageCmd : ResourceCmd() { // 上级页面 - val supPage = 0 + var parent = "" // 页面图标 - val icon: String? = null + var icon: String? = null // 附加参数 - val params: String? = null + var params: String? = null // 所属系统 - val system = 0 + var system = "" var alive = true diff --git a/src/zeus.domain/src/main/kotlin/com/synebula/zeus/domain/service/cmd/rbac/resource/ResourceCmd.kt b/src/zeus.domain/src/main/kotlin/com/synebula/zeus/domain/service/cmd/rbac/resource/ResourceCmd.kt index 0d54519..22c3fd8 100644 --- a/src/zeus.domain/src/main/kotlin/com/synebula/zeus/domain/service/cmd/rbac/resource/ResourceCmd.kt +++ b/src/zeus.domain/src/main/kotlin/com/synebula/zeus/domain/service/cmd/rbac/resource/ResourceCmd.kt @@ -5,8 +5,8 @@ import com.synebula.gaea.domain.service.Command abstract class ResourceCmd(var id: String? = null) : Command() { var name = "" - var signature = "" - val uri: String? = null + //资源定位符,唯一标识。可以是uil,也可以是别名 + var uri = "" var order = 0 - var desc = "" + var desc: String? = null } \ No newline at end of file diff --git a/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/contr/resouce/IInterfaceQuery.kt b/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/contr/resouce/IInterfaceQuery.kt index ed97915..4e37bb8 100644 --- a/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/contr/resouce/IInterfaceQuery.kt +++ b/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/contr/resouce/IInterfaceQuery.kt @@ -8,5 +8,7 @@ interface IInterfaceQuery : IQuery { fun withPermission(role: String): List + fun withPermission(role: String, system: String?): List + fun authentication(resource: String, role: String): PermissionType } \ No newline at end of file diff --git a/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/contr/resouce/IPageQuery.kt b/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/contr/resouce/IPageQuery.kt index 7d9c990..2866df8 100644 --- a/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/contr/resouce/IPageQuery.kt +++ b/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/contr/resouce/IPageQuery.kt @@ -8,5 +8,7 @@ interface IPageQuery : IQuery { fun withPermission(role: String): List + fun withPermission(role: String, system: String? ): List + fun authentication(resource: String, role: String): PermissionType } \ No newline at end of file diff --git a/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/impl/resouce/InterfaceQuery.kt b/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/impl/resouce/InterfaceQuery.kt index 7d8c3aa..6b692ed 100644 --- a/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/impl/resouce/InterfaceQuery.kt +++ b/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/impl/resouce/InterfaceQuery.kt @@ -4,17 +4,36 @@ import com.synebula.gaea.mongo.query.MongoQuery import com.synebula.zeus.env.PermissionType import com.synebula.zeus.env.ResourceType import com.synebula.zeus.query.contr.resouce.IInterfaceQuery +import com.synebula.zeus.query.contr.resouce.IPermissionQuery +import com.synebula.zeus.query.contr.resouce.ISystemQuery import com.synebula.zeus.query.view.resource.InterfaceView import org.springframework.data.mongodb.core.MongoTemplate -class InterfaceQuery(template: MongoTemplate, var permissionQuery: PermissionQuery) : MongoQuery(template), IInterfaceQuery { +class InterfaceQuery(template: MongoTemplate, var permissionQuery: IPermissionQuery, var systemQuery: ISystemQuery) : + MongoQuery(template), + IInterfaceQuery { private val clazz = InterfaceView::class.java override fun withPermission(role: String): List { - val interfaces = this.list(mapOf(), this.clazz) + return this.withPermission(role, null) + + } + + override fun withPermission(role: String, system: String?): List { + if (system != null) { + val permission = this.systemQuery.authentication(system, role) + if (permission == PermissionType.Deny) + return listOf() + } + val params = mutableMapOf() + if (system != null) params["system"] = system + val interfaces = this.list(params, this.clazz) val permissions = this.permissionQuery.resourcePermissions(ResourceType.Interface, role) - return interfaces.filter { i -> permissions.find { p -> i.id == p.resource }?.authorization == PermissionType.Allow } + return interfaces.filter { i -> + val permission = permissions.find { p -> i.id == p.resource } + permission == null || permission.authorization == PermissionType.Allow + } } override fun authentication(resource: String, role: String): PermissionType { diff --git a/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/impl/resouce/PageQuery.kt b/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/impl/resouce/PageQuery.kt index 1540a10..1ea68a2 100644 --- a/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/impl/resouce/PageQuery.kt +++ b/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/impl/resouce/PageQuery.kt @@ -4,16 +4,33 @@ import com.synebula.gaea.mongo.query.MongoQuery import com.synebula.zeus.env.PermissionType import com.synebula.zeus.env.ResourceType import com.synebula.zeus.query.contr.resouce.IPageQuery +import com.synebula.zeus.query.contr.resouce.IPermissionQuery +import com.synebula.zeus.query.contr.resouce.ISystemQuery import com.synebula.zeus.query.view.resource.PageView import org.springframework.data.mongodb.core.MongoTemplate -class PageQuery(template: MongoTemplate, var permissionQuery: PermissionQuery) : MongoQuery(template), IPageQuery { +class PageQuery(template: MongoTemplate, var permissionQuery: IPermissionQuery, var systemQuery: ISystemQuery) : + MongoQuery(template), IPageQuery { private val clazz = PageView::class.java override fun withPermission(role: String): List { - val pages = this.list(mapOf(), this.clazz) + return this.withPermission(role, null) + } + + override fun withPermission(role: String, system: String?): List { + if (system != null) { + val permission = this.systemQuery.authentication(system, role) + if (permission == PermissionType.Deny) + return listOf() + } + val params = mutableMapOf() + if (system != null) params["system"] = system + val pages = this.list(params, this.clazz) val permissions = this.permissionQuery.resourcePermissions(ResourceType.Page, role) - return pages.filter { i -> permissions.find { p -> i.id == p.resource }?.authorization == PermissionType.Allow } + return pages.filter { i -> + val permission = permissions.find { p -> i.id == p.resource } + permission == null || permission.authorization == PermissionType.Allow + } } override fun authentication(resource: String, role: String): PermissionType { diff --git a/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/impl/resouce/PermissionQuery.kt b/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/impl/resouce/PermissionQuery.kt index f85c483..b50d040 100644 --- a/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/impl/resouce/PermissionQuery.kt +++ b/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/impl/resouce/PermissionQuery.kt @@ -16,7 +16,7 @@ class PermissionQuery(template: MongoTemplate) : MongoQuery(template), IPermissi override fun resourcePermissions(resourceType: ResourceType, role: String): List { return this.template.find( Query.query( - Criteria.where("resourceType").`is`(resourceType) + Criteria.where("type").`is`(resourceType) .and("role").`is`(role) ), this.clazz, this.collection) } diff --git a/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/view/resource/InterfaceView.kt b/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/view/resource/InterfaceView.kt index 09ad1ed..3153305 100644 --- a/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/view/resource/InterfaceView.kt +++ b/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/view/resource/InterfaceView.kt @@ -1,5 +1,6 @@ package com.synebula.zeus.query.view.resource class InterfaceView : ResourceView() { + var system = "" var alive = true } \ No newline at end of file diff --git a/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/view/resource/PageView.kt b/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/view/resource/PageView.kt index 513a87e..43c27d6 100644 --- a/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/view/resource/PageView.kt +++ b/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/view/resource/PageView.kt @@ -3,16 +3,16 @@ package com.synebula.zeus.query.view.resource class PageView : ResourceView() { // 上级页面 - val supPage = 0 + var parent = "" // 页面图标 - val icon: String? = null + var icon: String? = null // 附加参数 - val params: String? = null + var params: String? = null // 所属系统 - val system = 0 + var system = "" var alive = true diff --git a/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/view/resource/ResourceView.kt b/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/view/resource/ResourceView.kt index 57d512d..f6a65c6 100644 --- a/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/view/resource/ResourceView.kt +++ b/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/view/resource/ResourceView.kt @@ -3,8 +3,8 @@ package com.synebula.zeus.query.view.resource abstract class ResourceView(var id: String? = null) { var name = "" - var signature = "" - val uri: String? = null + //资源定位符,唯一标识。可以是uil,也可以是别名 + var uri = "" var order = 0 - var desc = "" + var desc: String? = null } \ No newline at end of file From b9bb63ea212024fe1110f8c1be2ef15d8e91e175 Mon Sep 17 00:00:00 2001 From: alex Date: Mon, 2 Nov 2020 23:52:37 +0800 Subject: [PATCH 3/7] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=AE=A4=E8=AF=81?= =?UTF-8?q?=E8=BF=94=E5=9B=9E=E5=80=BC=EF=BC=9B=E5=88=A0=E9=99=A4=E6=97=A0?= =?UTF-8?q?=E7=94=A8bean=E6=B3=A8=E5=86=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/synebula/zeus/app/config/ZeusBeans.kt | 13 ------------- .../zeus/query/contr/resouce/IInterfaceQuery.kt | 2 +- .../synebula/zeus/query/contr/resouce/IPageQuery.kt | 2 +- .../zeus/query/contr/resouce/IPermissionQuery.kt | 2 +- .../zeus/query/contr/resouce/ISystemQuery.kt | 2 +- .../zeus/query/impl/resouce/InterfaceQuery.kt | 2 +- .../synebula/zeus/query/impl/resouce/PageQuery.kt | 2 +- .../zeus/query/impl/resouce/PermissionQuery.kt | 6 +++--- .../synebula/zeus/query/impl/resouce/SystemQuery.kt | 2 +- 9 files changed, 10 insertions(+), 23 deletions(-) diff --git a/src/zeus.app/src/main/kotlin/com/synebula/zeus/app/config/ZeusBeans.kt b/src/zeus.app/src/main/kotlin/com/synebula/zeus/app/config/ZeusBeans.kt index 87d8557..c49368c 100644 --- a/src/zeus.app/src/main/kotlin/com/synebula/zeus/app/config/ZeusBeans.kt +++ b/src/zeus.app/src/main/kotlin/com/synebula/zeus/app/config/ZeusBeans.kt @@ -30,19 +30,6 @@ open class ZeusBeans { @Bean open fun gson(): Gson = Gson() - @Bean - open fun userNotifier(): IUserNotifier { - return object : IUserNotifier { - override fun added(id: String, name: String, token: String) { - - } - - override fun forgot(id: String, name: String, token: String) { - } - - } - } - @Bean open fun serializer(gson: Gson): IJsonSerializer { return object : IJsonSerializer { diff --git a/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/contr/resouce/IInterfaceQuery.kt b/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/contr/resouce/IInterfaceQuery.kt index 4e37bb8..8380b4f 100644 --- a/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/contr/resouce/IInterfaceQuery.kt +++ b/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/contr/resouce/IInterfaceQuery.kt @@ -10,5 +10,5 @@ interface IInterfaceQuery : IQuery { fun withPermission(role: String, system: String?): List - fun authentication(resource: String, role: String): PermissionType + fun authentication(resource: String, role: String): PermissionType? } \ No newline at end of file diff --git a/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/contr/resouce/IPageQuery.kt b/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/contr/resouce/IPageQuery.kt index 2866df8..2ea2fd9 100644 --- a/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/contr/resouce/IPageQuery.kt +++ b/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/contr/resouce/IPageQuery.kt @@ -10,5 +10,5 @@ interface IPageQuery : IQuery { fun withPermission(role: String, system: String? ): List - fun authentication(resource: String, role: String): PermissionType + fun authentication(resource: String, role: String): PermissionType? } \ No newline at end of file diff --git a/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/contr/resouce/IPermissionQuery.kt b/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/contr/resouce/IPermissionQuery.kt index c3285d7..2b3d781 100644 --- a/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/contr/resouce/IPermissionQuery.kt +++ b/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/contr/resouce/IPermissionQuery.kt @@ -9,5 +9,5 @@ interface IPermissionQuery : IQuery { fun resourcePermissions(resourceType: ResourceType, role: String): List - fun authentication(resourceType: ResourceType, resource: String, role: String): PermissionType + fun authentication(resourceType: ResourceType, resource: String, role: String): PermissionType? } \ No newline at end of file diff --git a/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/contr/resouce/ISystemQuery.kt b/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/contr/resouce/ISystemQuery.kt index cb2f205..6b3c130 100644 --- a/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/contr/resouce/ISystemQuery.kt +++ b/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/contr/resouce/ISystemQuery.kt @@ -8,5 +8,5 @@ interface ISystemQuery : IQuery { fun withPermission(role: String): List - fun authentication(resource: String, role: String): PermissionType + fun authentication(resource: String, role: String): PermissionType? } \ No newline at end of file diff --git a/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/impl/resouce/InterfaceQuery.kt b/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/impl/resouce/InterfaceQuery.kt index 6b692ed..20efd67 100644 --- a/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/impl/resouce/InterfaceQuery.kt +++ b/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/impl/resouce/InterfaceQuery.kt @@ -36,7 +36,7 @@ class InterfaceQuery(template: MongoTemplate, var permissionQuery: IPermissionQu } } - override fun authentication(resource: String, role: String): PermissionType { + override fun authentication(resource: String, role: String): PermissionType? { return this.permissionQuery.authentication(ResourceType.Interface, resource, role) } } \ No newline at end of file diff --git a/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/impl/resouce/PageQuery.kt b/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/impl/resouce/PageQuery.kt index 1ea68a2..fafd785 100644 --- a/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/impl/resouce/PageQuery.kt +++ b/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/impl/resouce/PageQuery.kt @@ -33,7 +33,7 @@ class PageQuery(template: MongoTemplate, var permissionQuery: IPermissionQuery, } } - override fun authentication(resource: String, role: String): PermissionType { + override fun authentication(resource: String, role: String): PermissionType? { return this.permissionQuery.authentication(ResourceType.Page, resource, role) } } \ No newline at end of file diff --git a/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/impl/resouce/PermissionQuery.kt b/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/impl/resouce/PermissionQuery.kt index b50d040..93597d4 100644 --- a/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/impl/resouce/PermissionQuery.kt +++ b/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/impl/resouce/PermissionQuery.kt @@ -21,13 +21,13 @@ class PermissionQuery(template: MongoTemplate) : MongoQuery(template), IPermissi ), this.clazz, this.collection) } - override fun authentication(resourceType: ResourceType, resource: String, role: String): PermissionType { + override fun authentication(resourceType: ResourceType, resource: String, role: String): PermissionType? { val permission = this.template.findOne( Query.query( - Criteria.where("resourceType").`is`(resourceType) + Criteria.where("type").`is`(resourceType) .and("resource").`is`(resource) .and("role").`is`(role) ), this.clazz, this.collection) - return permission?.authorization ?: PermissionType.Allow + return permission?.authorization } } \ No newline at end of file diff --git a/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/impl/resouce/SystemQuery.kt b/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/impl/resouce/SystemQuery.kt index 6e3e4b7..154dc4e 100644 --- a/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/impl/resouce/SystemQuery.kt +++ b/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/impl/resouce/SystemQuery.kt @@ -16,7 +16,7 @@ class SystemQuery(template: MongoTemplate, var permissionQuery: PermissionQuery) return systems.filter { i -> permissions.find { p -> i.id == p.resource }?.authorization == PermissionType.Allow } } - override fun authentication(resource: String, role: String): PermissionType { + override fun authentication(resource: String, role: String): PermissionType? { return this.permissionQuery.authentication(ResourceType.System, resource, role) } } \ No newline at end of file From ac3dadfc90222b9961976900a87bc8ff0c1edd4e Mon Sep 17 00:00:00 2001 From: alex Date: Wed, 4 Nov 2020 16:44:55 +0800 Subject: [PATCH 4/7] =?UTF-8?q?=E4=BF=AE=E6=94=B9authorization=E4=B8=BAaut?= =?UTF-8?q?hority=E6=9D=A5=E7=BC=A9=E5=87=8F=E9=95=BF=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/synebula/zeus/domain/model/rbac/resource/Permission.kt | 2 +- .../zeus/domain/service/cmd/rbac/resource/PermissionCmd.kt | 2 +- .../com/synebula/zeus/query/impl/resouce/InterfaceQuery.kt | 2 +- .../kotlin/com/synebula/zeus/query/impl/resouce/PageQuery.kt | 2 +- .../com/synebula/zeus/query/impl/resouce/PermissionQuery.kt | 2 +- .../kotlin/com/synebula/zeus/query/impl/resouce/SystemQuery.kt | 2 +- .../com/synebula/zeus/query/view/resource/PermissionView.kt | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/zeus.domain/src/main/kotlin/com/synebula/zeus/domain/model/rbac/resource/Permission.kt b/src/zeus.domain/src/main/kotlin/com/synebula/zeus/domain/model/rbac/resource/Permission.kt index 53f8541..e07d0a7 100644 --- a/src/zeus.domain/src/main/kotlin/com/synebula/zeus/domain/model/rbac/resource/Permission.kt +++ b/src/zeus.domain/src/main/kotlin/com/synebula/zeus/domain/model/rbac/resource/Permission.kt @@ -8,5 +8,5 @@ class Permission(override var id: String? = null) : AggregateRoot() { var role = "" var resource = "" var type: ResourceType? = null - var authorization = PermissionType.Allow + var authority = PermissionType.Allow } \ No newline at end of file diff --git a/src/zeus.domain/src/main/kotlin/com/synebula/zeus/domain/service/cmd/rbac/resource/PermissionCmd.kt b/src/zeus.domain/src/main/kotlin/com/synebula/zeus/domain/service/cmd/rbac/resource/PermissionCmd.kt index 6ba3acb..b23a80b 100644 --- a/src/zeus.domain/src/main/kotlin/com/synebula/zeus/domain/service/cmd/rbac/resource/PermissionCmd.kt +++ b/src/zeus.domain/src/main/kotlin/com/synebula/zeus/domain/service/cmd/rbac/resource/PermissionCmd.kt @@ -9,5 +9,5 @@ class PermissionCmd : Command() { var role = "" var resource = "" var type: ResourceType? = null - var authorization = PermissionType.Allow + var authority = PermissionType.Allow } \ No newline at end of file diff --git a/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/impl/resouce/InterfaceQuery.kt b/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/impl/resouce/InterfaceQuery.kt index 20efd67..b8d2252 100644 --- a/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/impl/resouce/InterfaceQuery.kt +++ b/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/impl/resouce/InterfaceQuery.kt @@ -32,7 +32,7 @@ class InterfaceQuery(template: MongoTemplate, var permissionQuery: IPermissionQu val permissions = this.permissionQuery.resourcePermissions(ResourceType.Interface, role) return interfaces.filter { i -> val permission = permissions.find { p -> i.id == p.resource } - permission == null || permission.authorization == PermissionType.Allow + permission == null || permission.authority == PermissionType.Allow } } diff --git a/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/impl/resouce/PageQuery.kt b/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/impl/resouce/PageQuery.kt index fafd785..b4bc614 100644 --- a/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/impl/resouce/PageQuery.kt +++ b/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/impl/resouce/PageQuery.kt @@ -29,7 +29,7 @@ class PageQuery(template: MongoTemplate, var permissionQuery: IPermissionQuery, val permissions = this.permissionQuery.resourcePermissions(ResourceType.Page, role) return pages.filter { i -> val permission = permissions.find { p -> i.id == p.resource } - permission == null || permission.authorization == PermissionType.Allow + permission == null || permission.authority == PermissionType.Allow } } diff --git a/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/impl/resouce/PermissionQuery.kt b/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/impl/resouce/PermissionQuery.kt index 93597d4..520a5d3 100644 --- a/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/impl/resouce/PermissionQuery.kt +++ b/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/impl/resouce/PermissionQuery.kt @@ -28,6 +28,6 @@ class PermissionQuery(template: MongoTemplate) : MongoQuery(template), IPermissi .and("resource").`is`(resource) .and("role").`is`(role) ), this.clazz, this.collection) - return permission?.authorization + return permission?.authority } } \ No newline at end of file diff --git a/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/impl/resouce/SystemQuery.kt b/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/impl/resouce/SystemQuery.kt index 154dc4e..3610547 100644 --- a/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/impl/resouce/SystemQuery.kt +++ b/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/impl/resouce/SystemQuery.kt @@ -13,7 +13,7 @@ class SystemQuery(template: MongoTemplate, var permissionQuery: PermissionQuery) override fun withPermission(role: String): List { val systems = this.list(mapOf(), this.clazz) val permissions = this.permissionQuery.resourcePermissions(ResourceType.System, role) - return systems.filter { i -> permissions.find { p -> i.id == p.resource }?.authorization == PermissionType.Allow } + return systems.filter { i -> permissions.find { p -> i.id == p.resource }?.authority == PermissionType.Allow } } override fun authentication(resource: String, role: String): PermissionType? { diff --git a/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/view/resource/PermissionView.kt b/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/view/resource/PermissionView.kt index 770c065..2031afd 100644 --- a/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/view/resource/PermissionView.kt +++ b/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/view/resource/PermissionView.kt @@ -8,5 +8,5 @@ class PermissionView() { var role = "" var resource = "" var type: ResourceType? = null - var authorization = PermissionType.Allow + var authority = PermissionType.Allow } \ No newline at end of file From f192a4d6ba767c1bfd7ff50a82fbb769e87130a6 Mon Sep 17 00:00:00 2001 From: alex Date: Wed, 4 Nov 2020 21:56:22 +0800 Subject: [PATCH 5/7] =?UTF-8?q?=E5=A2=9E=E5=8A=A0uri=E6=9D=83=E9=99=90?= =?UTF-8?q?=E8=AE=A4=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../zeus/app/controller/rbac/resource/PageApp.kt | 9 +++++++++ .../com/synebula/zeus/query/contr/resouce/IPageQuery.kt | 2 ++ .../com/synebula/zeus/query/impl/resouce/PageQuery.kt | 7 +++++++ 3 files changed, 18 insertions(+) diff --git a/src/zeus.app/src/main/kotlin/com/synebula/zeus/app/controller/rbac/resource/PageApp.kt b/src/zeus.app/src/main/kotlin/com/synebula/zeus/app/controller/rbac/resource/PageApp.kt index 68f3d56..3782554 100644 --- a/src/zeus.app/src/main/kotlin/com/synebula/zeus/app/controller/rbac/resource/PageApp.kt +++ b/src/zeus.app/src/main/kotlin/com/synebula/zeus/app/controller/rbac/resource/PageApp.kt @@ -43,4 +43,13 @@ class PageApp( msg.data = this.pageQuery.authentication(page, role) } } + + @GetMapping("/authentication/{role}") + fun pathAuthentication(@PathVariable role: String, uri: String): HttpMessage { + return this.safeExecute("获取权限信息失败") { msg -> + msg.data = this.pageQuery.uriAuthentication(uri, role) + } + } + + } \ No newline at end of file diff --git a/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/contr/resouce/IPageQuery.kt b/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/contr/resouce/IPageQuery.kt index 2ea2fd9..9681ebf 100644 --- a/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/contr/resouce/IPageQuery.kt +++ b/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/contr/resouce/IPageQuery.kt @@ -11,4 +11,6 @@ interface IPageQuery : IQuery { fun withPermission(role: String, system: String? ): List fun authentication(resource: String, role: String): PermissionType? + + fun uriAuthentication(path: String, role: String): PermissionType? } \ No newline at end of file diff --git a/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/impl/resouce/PageQuery.kt b/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/impl/resouce/PageQuery.kt index fafd785..190f8e2 100644 --- a/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/impl/resouce/PageQuery.kt +++ b/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/impl/resouce/PageQuery.kt @@ -8,6 +8,8 @@ import com.synebula.zeus.query.contr.resouce.IPermissionQuery import com.synebula.zeus.query.contr.resouce.ISystemQuery import com.synebula.zeus.query.view.resource.PageView import org.springframework.data.mongodb.core.MongoTemplate +import org.springframework.data.mongodb.core.query.Criteria +import org.springframework.data.mongodb.core.query.Query class PageQuery(template: MongoTemplate, var permissionQuery: IPermissionQuery, var systemQuery: ISystemQuery) : MongoQuery(template), IPageQuery { @@ -36,4 +38,9 @@ class PageQuery(template: MongoTemplate, var permissionQuery: IPermissionQuery, override fun authentication(resource: String, role: String): PermissionType? { return this.permissionQuery.authentication(ResourceType.Page, resource, role) } + + override fun uriAuthentication(path: String, role: String): PermissionType? { + val page = this.template.findOne(Query.query(Criteria.where("uri").`is`(path)), this.clazz) ?: return null + return this.authentication(page.id!!, role) + } } \ No newline at end of file From 87f4e5eb403c2dc649199d2aa119d5fe0add65b9 Mon Sep 17 00:00:00 2001 From: alex Date: Thu, 5 Nov 2020 16:15:22 +0800 Subject: [PATCH 6/7] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=91=BD=E5=90=8D?= =?UTF-8?q?=E5=92=8Cbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../synebula/zeus/app/controller/rbac/resource/PageApp.kt | 2 +- .../kotlin/com/synebula/zeus/query/impl/resouce/PageQuery.kt | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/zeus.app/src/main/kotlin/com/synebula/zeus/app/controller/rbac/resource/PageApp.kt b/src/zeus.app/src/main/kotlin/com/synebula/zeus/app/controller/rbac/resource/PageApp.kt index 3782554..6120b98 100644 --- a/src/zeus.app/src/main/kotlin/com/synebula/zeus/app/controller/rbac/resource/PageApp.kt +++ b/src/zeus.app/src/main/kotlin/com/synebula/zeus/app/controller/rbac/resource/PageApp.kt @@ -45,7 +45,7 @@ class PageApp( } @GetMapping("/authentication/{role}") - fun pathAuthentication(@PathVariable role: String, uri: String): HttpMessage { + fun uriAuthentication(@PathVariable role: String, uri: String): HttpMessage { return this.safeExecute("获取权限信息失败") { msg -> msg.data = this.pageQuery.uriAuthentication(uri, role) } diff --git a/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/impl/resouce/PageQuery.kt b/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/impl/resouce/PageQuery.kt index 9c4d6b1..5e1fd92 100644 --- a/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/impl/resouce/PageQuery.kt +++ b/src/zeus.query/src/main/kotlin/com/synebula/zeus/query/impl/resouce/PageQuery.kt @@ -12,7 +12,7 @@ import org.springframework.data.mongodb.core.query.Criteria import org.springframework.data.mongodb.core.query.Query class PageQuery(template: MongoTemplate, var permissionQuery: IPermissionQuery, var systemQuery: ISystemQuery) : - MongoQuery(template), IPageQuery { + MongoQuery(template), IPageQuery { private val clazz = PageView::class.java override fun withPermission(role: String): List { @@ -40,7 +40,8 @@ class PageQuery(template: MongoTemplate, var permissionQuery: IPermissionQuery, } override fun uriAuthentication(path: String, role: String): PermissionType? { - val page = this.template.findOne(Query.query(Criteria.where("uri").`is`(path)), this.clazz) ?: return null + val page = this.template.findOne(Query.query(Criteria.where("uri").`is`(path)), + this.clazz, this.collection(this.clazz)) ?: return null return this.authentication(page.id!!, role) } } \ No newline at end of file From f05d175c5bce1d4db9c7cf0df3a50485f325b1aa Mon Sep 17 00:00:00 2001 From: alex Date: Tue, 10 Nov 2020 22:46:17 +0800 Subject: [PATCH 7/7] =?UTF-8?q?=E4=BF=AE=E8=AE=A2=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index 178ce7a..cb4aa1a 100644 --- a/build.gradle +++ b/build.gradle @@ -21,8 +21,8 @@ allprojects { subprojects { ext { - version '0.2.1' - gaea_version = '0.5.1' + version '0.5.0' + gaea_version = '0.6.0' spring_version = "2.3.0.RELEASE" }