Browse Source

Merge remote-tracking branch 'origin/master'

NorthLan 7 years ago
parent
commit
7623b586f1

+ 2 - 2
zen-api/src/main/kotlin/com/gxzc/zen/api/sys/model/SysRolePermission.kt

@@ -16,10 +16,10 @@ data class SysRolePermission(
         /**
          * 角色ID
          */
-        var roleId: String? = null,
+        var roleId: Long? = null,
         /**
          * 权限ID
          */
-        var permissionId: String? = null
+        var permissionId: Long? = null
 ) : BaseModel() {
 }

+ 2 - 2
zen-api/src/main/kotlin/com/gxzc/zen/api/sys/model/SysUserRole.kt

@@ -16,10 +16,10 @@ data class SysUserRole(
         /**
          * 角色ID
          */
-        var roleId: String? = null,
+        var roleId: Long? = null,
         /**
          * 用户ID
          */
-        var userId: String? = null
+        var userId: Long? = null
 ) : BaseModel() {
 }

+ 4 - 1
zen-api/src/main/kotlin/com/gxzc/zen/api/sys/service/ISysPermissionService.kt

@@ -10,4 +10,7 @@ import com.gxzc.zen.common.base.BaseService
  * @author NorthLan123
  * @since 2018-02-05
  */
-interface ISysPermissionService : BaseService<SysPermission>
+interface ISysPermissionService : BaseService<SysPermission>{
+
+    fun findUserPermissions(userId:Long):HashSet<String>
+}

+ 3 - 1
zen-api/src/main/kotlin/com/gxzc/zen/api/sys/service/ISysRoleService.kt

@@ -10,4 +10,6 @@ import com.gxzc.zen.common.base.BaseService
  * @author NorthLan123
  * @since 2018-02-05
  */
-interface ISysRoleService : BaseService<SysRole>
+interface ISysRoleService : BaseService<SysRole>{
+    fun findRoles(ids:List<Long>):MutableList<SysRole>?
+}

+ 3 - 1
zen-api/src/main/kotlin/com/gxzc/zen/api/sys/service/ISysUserRoleService.kt

@@ -10,4 +10,6 @@ import com.gxzc.zen.common.base.BaseService
  * @author NorthLan123
  * @since 2018-02-05
  */
-interface ISysUserRoleService : BaseService<SysUserRole>
+interface ISysUserRoleService : BaseService<SysUserRole>{
+    fun findUserRoles(userId:Long): MutableList<SysUserRole>?
+}

+ 33 - 1
zen-api/src/main/kotlin/com/gxzc/zen/api/sys/service/impl/SysPermissionServiceImpl.kt

@@ -1,10 +1,17 @@
 package com.gxzc.zen.api.sys.service.impl
 
+import com.baomidou.mybatisplus.mapper.EntityWrapper
 import com.gxzc.zen.api.sys.model.SysPermission
 import com.gxzc.zen.api.sys.mapper.SysPermissionMapper
-import com.gxzc.zen.api.sys.service.ISysPermissionService
 import com.baomidou.mybatisplus.service.impl.ServiceImpl
+import com.gxzc.zen.api.sys.model.SysRolePermission
+import com.gxzc.zen.api.sys.model.SysUser
+import com.gxzc.zen.api.sys.service.*
+import org.springframework.beans.factory.annotation.Autowired
+import org.springframework.cache.annotation.Cacheable
 import org.springframework.stereotype.Service
+import java.util.*
+import kotlin.collections.HashSet
 
 /**
  * <p>
@@ -17,4 +24,29 @@ import org.springframework.stereotype.Service
 @Service
 class SysPermissionServiceImpl : ServiceImpl<SysPermissionMapper, SysPermission>(), ISysPermissionService {
 
+    @Autowired
+    private val userRoleService: ISysUserRoleService? = null
+    @Autowired
+    private val rolePermissionService: ISysRolePermissionService? = null
+
+    private fun findRolePermissions(roleId:Long?):MutableList<SysRolePermission>?{
+        val entity=SysRolePermission(roleId,null)
+        return rolePermissionService?.selectList(EntityWrapper(entity))
+    }
+
+    //任何修改用户角色、角色、权限表都清此缓存
+    @Cacheable(value="setPermissions",key = "#userId")
+    override fun findUserPermissions(userId: Long):HashSet<String> {
+//        val user=userService?.selectById(userId)
+        val uroles=userRoleService?.findUserRoles(userId)
+        val perms=LinkedList<SysPermission>()
+        val permissions=HashSet<String>()
+        for(ro in uroles!!)
+            for(per in findRolePermissions(ro.roleId)!!)
+                perms.add(selectById(per.permissionId))
+        for (per in perms)
+            permissions.add(per.name!!)
+        return permissions
+    }
+
 }

+ 5 - 0
zen-api/src/main/kotlin/com/gxzc/zen/api/sys/service/impl/SysRoleServiceImpl.kt

@@ -1,9 +1,11 @@
 package com.gxzc.zen.api.sys.service.impl
 
+import com.baomidou.mybatisplus.mapper.EntityWrapper
 import com.gxzc.zen.api.sys.model.SysRole
 import com.gxzc.zen.api.sys.mapper.SysRoleMapper
 import com.gxzc.zen.api.sys.service.ISysRoleService
 import com.baomidou.mybatisplus.service.impl.ServiceImpl
+import com.gxzc.zen.api.sys.model.SysUserRole
 import org.springframework.stereotype.Service
 
 /**
@@ -16,5 +18,8 @@ import org.springframework.stereotype.Service
  */
 @Service
 class SysRoleServiceImpl : ServiceImpl<SysRoleMapper, SysRole>(), ISysRoleService {
+    override fun findRoles(ids: List<Long>): MutableList<SysRole>? {
+        return baseMapper?.selectList(EntityWrapper<SysRole>().`in`("id",ids))
+    }
 
 }

+ 8 - 0
zen-api/src/main/kotlin/com/gxzc/zen/api/sys/service/impl/SysUserRoleServiceImpl.kt

@@ -1,10 +1,12 @@
 package com.gxzc.zen.api.sys.service.impl
 
+import com.baomidou.mybatisplus.mapper.EntityWrapper
 import com.gxzc.zen.api.sys.model.SysUserRole
 import com.gxzc.zen.api.sys.mapper.SysUserRoleMapper
 import com.gxzc.zen.api.sys.service.ISysUserRoleService
 import com.baomidou.mybatisplus.service.impl.ServiceImpl
 import org.springframework.stereotype.Service
+import springfox.documentation.annotations.Cacheable
 
 /**
  * <p>
@@ -17,4 +19,10 @@ import org.springframework.stereotype.Service
 @Service
 class SysUserRoleServiceImpl : ServiceImpl<SysUserRoleMapper, SysUserRole>(), ISysUserRoleService {
 
+    @Cacheable("123")
+    override fun findUserRoles(userId: Long): MutableList<SysUserRole>?{
+        val entity=SysUserRole().also { it.userId=userId }
+        return baseMapper?.selectList(EntityWrapper<SysUserRole>(entity))
+    }
+
 }

+ 1 - 0
zen-umps/build.gradle

@@ -1,3 +1,4 @@
 dependencies {
     compile project(":zen-core")
+    compile project(":zen-api")
 }

+ 20 - 0
zen-umps/src/main/kotlin/com/gxzc/zen/ump/KissoAuthorization.kt

@@ -0,0 +1,20 @@
+package com.gxzc.zen.ump
+
+import com.baomidou.kisso.SSOAuthorization
+import com.baomidou.kisso.security.token.SSOToken
+import com.gxzc.zen.api.sys.service.ISysPermissionService
+import com.gxzc.zen.common.util.SpringContextHolder
+import org.apache.commons.lang3.StringUtils
+
+class KissoAuthorization:SSOAuthorization {
+
+    private val permissionService=SpringContextHolder.getBean(ISysPermissionService::class.java)
+
+    override fun isPermitted(token: SSOToken?, permission: String?): Boolean {
+        if(token==null)return false
+        if(!StringUtils.isNumeric(token.id))return false
+        val pers=permissionService?.findUserPermissions(token?.id?.toLong()!!)
+        if(pers?.contains(permission)!!)return true
+        return false
+    }
+}

+ 27 - 0
zen-umps/src/main/kotlin/com/gxzc/zen/ump/KissoWebAppConfigurer.kt

@@ -0,0 +1,27 @@
+package com.gxzc.zen.ump
+
+import com.baomidou.kisso.web.interceptor.SSOPermissionInterceptor
+import com.baomidou.kisso.web.interceptor.SSOSpringInterceptor
+import org.springframework.context.annotation.Bean
+import org.springframework.context.annotation.Configuration
+import org.springframework.web.servlet.config.annotation.InterceptorRegistry
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter
+
+@Configuration
+class KissoWebAppConfigurer: WebMvcConfigurerAdapter() {
+
+    /*@Bean("KissoInit")
+    fun initKisso(){
+        return com.baomidou.kisso.web.WebKissoConfigurer()
+    }*/
+
+    override fun addInterceptors(registry: InterceptorRegistry) {
+        //登录拦截
+        registry.addInterceptor(SSOSpringInterceptor())
+                .addPathPatterns("/**")
+        //权限拦截
+        registry.addInterceptor(SSOPermissionInterceptor().also { it.authorization=KissoAuthorization() })
+                .addPathPatterns("/**")
+        super.addInterceptors(registry)
+    }
+}

+ 1 - 1
zen-web/src/main/resources/application.yml

@@ -6,7 +6,7 @@ server:
 spring:
   profiles:
     active: dev
-    include: orm-local,mq,cache
+    include: orm-local,mq,cache,umps
 #  redis:
 #    host: localhost
 #    port: 6379