0.8.0 引入GAEA 1.0版本
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
dependencies {
|
||||
compile project(":src:zeus.env")
|
||||
compile "com.synebula:gaea:$gaea_version"
|
||||
api project(":src:zeus.env")
|
||||
api "com.synebula:gaea:$gaea_version"
|
||||
}
|
||||
|
||||
publishing {
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
package com.synebula.zeus.domain.repository
|
||||
package com.synebula.zeus.domain.repository.rbac
|
||||
|
||||
import com.synebula.gaea.domain.repository.IRepository
|
||||
import com.synebula.zeus.domain.model.rbac.Authority
|
||||
import com.synebula.zeus.env.ResourceType
|
||||
|
||||
interface IAuthorityRepository : IRepository {
|
||||
interface IAuthorityRepository : IRepository<Authority, String> {
|
||||
fun removeByResourceRole(type: ResourceType, resource: List<String>, role: String)
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package com.synebula.zeus.domain.repository.rbac
|
||||
|
||||
import com.synebula.gaea.domain.repository.IRepository
|
||||
import com.synebula.zeus.domain.model.rbac.Group
|
||||
|
||||
interface IGroupRepository : IRepository<Group, String> {
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package com.synebula.zeus.domain.repository.rbac
|
||||
|
||||
import com.synebula.gaea.domain.repository.IRepository
|
||||
import com.synebula.zeus.domain.model.rbac.Role
|
||||
|
||||
interface IRoleRepository : IRepository<Role, String> {
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package com.synebula.zeus.domain.repository.rbac
|
||||
|
||||
import com.synebula.gaea.domain.repository.IRepository
|
||||
import com.synebula.zeus.domain.model.rbac.User
|
||||
|
||||
interface IUserRepository : IRepository<User, String> {
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package com.synebula.zeus.domain.repository.rbac.resource
|
||||
|
||||
import com.synebula.gaea.domain.repository.IRepository
|
||||
import com.synebula.zeus.domain.model.rbac.resource.Interface
|
||||
|
||||
interface IInterfaceRepository : IRepository<Interface, String> {
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package com.synebula.zeus.domain.repository.rbac.resource
|
||||
|
||||
import com.synebula.gaea.domain.repository.IRepository
|
||||
import com.synebula.zeus.domain.model.rbac.resource.Page
|
||||
|
||||
interface IPageRepository : IRepository<Page, String> {
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package com.synebula.zeus.domain.repository.rbac.resource
|
||||
|
||||
import com.synebula.gaea.domain.repository.IRepository
|
||||
import com.synebula.zeus.domain.model.rbac.resource.System
|
||||
|
||||
interface ISystemRepository : IRepository<System, String> {
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.synebula.zeus.domain.service.contr.component
|
||||
package com.synebula.zeus.domain.service.component
|
||||
|
||||
interface IUserNotifier {
|
||||
fun added(id: String, name: String, token: String)
|
||||
@@ -1,7 +1,9 @@
|
||||
package com.synebula.zeus.domain.service.contr.rbac
|
||||
|
||||
import com.synebula.gaea.domain.service.IService
|
||||
import com.synebula.gaea.domain.service.ServiceDependency
|
||||
import com.synebula.zeus.domain.model.rbac.Group
|
||||
import com.synebula.zeus.domain.repository.rbac.IGroupRepository
|
||||
|
||||
interface IGroupService : IService<String> {
|
||||
|
||||
}
|
||||
@ServiceDependency(clazz = Group::class, repo = IGroupRepository::class)
|
||||
interface IGroupService : IService<String>
|
||||
@@ -1,7 +1,9 @@
|
||||
package com.synebula.zeus.domain.service.contr.rbac
|
||||
|
||||
import com.synebula.gaea.domain.service.IService
|
||||
import com.synebula.gaea.domain.service.ServiceDependency
|
||||
import com.synebula.zeus.domain.model.rbac.Role
|
||||
import com.synebula.zeus.domain.repository.rbac.IRoleRepository
|
||||
|
||||
interface IRoleService : IService<String> {
|
||||
|
||||
}
|
||||
@ServiceDependency(clazz = Role::class, repo = IRoleRepository::class)
|
||||
interface IRoleService : IService<String>
|
||||
@@ -1,7 +1,9 @@
|
||||
package com.synebula.zeus.domain.service.contr.rbac.resource
|
||||
|
||||
import com.synebula.gaea.domain.service.IService
|
||||
import com.synebula.gaea.domain.service.ServiceDependency
|
||||
import com.synebula.zeus.domain.model.rbac.resource.Interface
|
||||
import com.synebula.zeus.domain.repository.rbac.resource.IInterfaceRepository
|
||||
|
||||
interface IInterfaceService : IService<String> {
|
||||
|
||||
}
|
||||
@ServiceDependency(clazz = Interface::class, repo = IInterfaceRepository::class)
|
||||
interface IInterfaceService : IService<String>
|
||||
@@ -1,7 +1,9 @@
|
||||
package com.synebula.zeus.domain.service.contr.rbac.resource
|
||||
|
||||
import com.synebula.gaea.domain.service.IService
|
||||
import com.synebula.gaea.domain.service.ServiceDependency
|
||||
import com.synebula.zeus.domain.model.rbac.resource.Page
|
||||
import com.synebula.zeus.domain.repository.rbac.resource.IPageRepository
|
||||
|
||||
interface IPageService : IService<String> {
|
||||
|
||||
}
|
||||
@ServiceDependency(clazz = Page::class, repo = IPageRepository::class)
|
||||
interface IPageService : IService<String>
|
||||
@@ -1,7 +1,9 @@
|
||||
package com.synebula.zeus.domain.service.contr.rbac.resource
|
||||
|
||||
import com.synebula.gaea.domain.service.IService
|
||||
import com.synebula.gaea.domain.service.ServiceDependency
|
||||
import com.synebula.zeus.domain.model.rbac.resource.System
|
||||
import com.synebula.zeus.domain.repository.rbac.resource.ISystemRepository
|
||||
|
||||
interface ISystemService : IService<String> {
|
||||
|
||||
}
|
||||
@ServiceDependency(clazz = System::class, repo = ISystemRepository::class)
|
||||
interface ISystemService : IService<String>
|
||||
@@ -1,23 +1,22 @@
|
||||
package com.synebula.zeus.domain.service.impl.rbac
|
||||
|
||||
import com.synebula.gaea.data.IObjectConverter
|
||||
import com.synebula.gaea.data.serialization.IObjectMapper
|
||||
import com.synebula.gaea.domain.service.Service
|
||||
import com.synebula.gaea.log.ILogger
|
||||
import com.synebula.zeus.domain.model.rbac.Authority
|
||||
import com.synebula.zeus.domain.repository.IAuthorityRepository
|
||||
import com.synebula.zeus.domain.repository.rbac.IAuthorityRepository
|
||||
import com.synebula.zeus.domain.service.cmd.rbac.AuthorityBatchAddCmd
|
||||
import com.synebula.zeus.domain.service.contr.rbac.IAuthorityService
|
||||
import com.synebula.zeus.env.ResourceType
|
||||
|
||||
class AuthorityService(
|
||||
private var authorityRepository: IAuthorityRepository,
|
||||
converter: IObjectConverter, logger: ILogger
|
||||
) : Service<Authority, String>(Authority::class.java, authorityRepository, converter, logger),
|
||||
mapper: IObjectMapper
|
||||
) : Service<Authority, String>(Authority::class.java, authorityRepository, mapper),
|
||||
IAuthorityService {
|
||||
|
||||
override fun add(cmd: AuthorityBatchAddCmd) {
|
||||
val authorities = cmd.resource.map { Authority(cmd.role, it, cmd.type, cmd.authority) }
|
||||
this.repository.add(authorities, this.clazz)
|
||||
this.repository.add(authorities)
|
||||
}
|
||||
|
||||
override fun removeByResourceRole(type: ResourceType, resource: List<String>, role: String) {
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
package com.synebula.zeus.domain.service.impl.rbac
|
||||
|
||||
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.Group
|
||||
import com.synebula.zeus.domain.service.contr.rbac.IGroupService
|
||||
|
||||
class GroupService(
|
||||
repository: IRepository,
|
||||
converter: IObjectConverter, logger: ILogger
|
||||
) : Service<Group, String>(Group::class.java, repository, converter, logger), IGroupService
|
||||
@@ -1,13 +0,0 @@
|
||||
package com.synebula.zeus.domain.service.impl.rbac
|
||||
|
||||
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.Role
|
||||
import com.synebula.zeus.domain.service.contr.rbac.IRoleService
|
||||
|
||||
class RoleService(
|
||||
repository: IRepository,
|
||||
converter: IObjectConverter, logger: ILogger
|
||||
) : Service<Role, String>(Role::class.java, repository, converter, logger), IRoleService
|
||||
@@ -1,55 +1,50 @@
|
||||
package com.synebula.zeus.domain.service.impl.rbac
|
||||
|
||||
import com.synebula.gaea.data.IObjectConverter
|
||||
import com.synebula.gaea.data.message.DataMessage
|
||||
import com.synebula.gaea.data.message.Message
|
||||
import com.synebula.gaea.data.message.Status
|
||||
import com.synebula.gaea.domain.repository.IRepository
|
||||
import com.synebula.gaea.data.serialization.IObjectMapper
|
||||
import com.synebula.gaea.domain.service.ICommand
|
||||
import com.synebula.gaea.domain.service.Service
|
||||
import com.synebula.gaea.ext.toMd5
|
||||
import com.synebula.gaea.log.ILogger
|
||||
import com.synebula.zeus.domain.model.rbac.User
|
||||
import com.synebula.zeus.domain.service.contr.component.IUserNotifier
|
||||
import com.synebula.zeus.domain.service.contr.rbac.IGroupService
|
||||
import com.synebula.zeus.domain.service.contr.rbac.IRoleService
|
||||
import com.synebula.zeus.domain.repository.rbac.IUserRepository
|
||||
import com.synebula.zeus.domain.service.component.IUserNotifier
|
||||
import com.synebula.zeus.domain.service.contr.rbac.IUserService
|
||||
import java.util.*
|
||||
|
||||
class UserService(
|
||||
repository: IRepository,
|
||||
converter: IObjectConverter,
|
||||
logger: ILogger,
|
||||
groupService: IGroupService,
|
||||
roleService: IRoleService,
|
||||
var userNotifier: IUserNotifier?
|
||||
) : Service<User, String>(User::class.java, repository, converter, logger), IUserService {
|
||||
repository: IUserRepository,
|
||||
mapper: IObjectMapper,
|
||||
var userNotifier: IUserNotifier?,
|
||||
var logger: ILogger
|
||||
) : Service<User, String>(User::class.java, repository, mapper), IUserService {
|
||||
|
||||
init {
|
||||
groupService.addBeforeRemoveListener(this.clazz.name) { id ->
|
||||
val msg = Message()
|
||||
if (this.repository.count(mapOf(Pair("group", id)), this.clazz) > 0) {
|
||||
msg.status = Status.Failure
|
||||
msg.message = "组下还有用户"
|
||||
}
|
||||
msg
|
||||
}
|
||||
roleService.addBeforeRemoveListener(this.clazz.name) { id ->
|
||||
val msg = Message()
|
||||
if (this.repository.count(mapOf(Pair("role", id)), this.clazz) > 0) {
|
||||
msg.status = Status.Failure
|
||||
msg.message = "角色下还有用户"
|
||||
}
|
||||
msg
|
||||
}
|
||||
}
|
||||
// init {
|
||||
// groupService.addBeforeRemoveListener(this.clazz.name) { id ->
|
||||
// val msg = Message()
|
||||
// if (this.repository.count(mapOf(Pair("group", id)), this.clazz) > 0) {
|
||||
// msg.status = Status.Failure
|
||||
// msg.message = "组下还有用户"
|
||||
// }
|
||||
// msg
|
||||
// }
|
||||
// roleService.addBeforeRemoveListener(this.clazz.name) { id ->
|
||||
// val msg = Message()
|
||||
// if (this.repository.count(mapOf(Pair("role", id)), this.clazz) > 0) {
|
||||
// msg.status = Status.Failure
|
||||
// msg.message = "角色下还有用户"
|
||||
// }
|
||||
// msg
|
||||
// }
|
||||
// }
|
||||
|
||||
override fun add(command: ICommand): DataMessage<String> {
|
||||
val user = this.convert(command)
|
||||
val user = this.map(command)
|
||||
user.password = user.password.toMd5()
|
||||
user.token = UUID.randomUUID().toString()
|
||||
user.alive = false
|
||||
this.repository.add(user, this.clazz)
|
||||
this.repository.add(user)
|
||||
userNotifier?.added(user.id!!, user.name, user.token!!)
|
||||
return DataMessage(user.id!!)
|
||||
}
|
||||
@@ -60,14 +55,14 @@ class UserService(
|
||||
* @param key 用户ID
|
||||
*/
|
||||
override fun active(key: String, token: String): DataMessage<Any> {
|
||||
val user = this.repository.get(key, this.clazz)!!
|
||||
val user = this.repository.get(key)!!
|
||||
return if (user.alive) {
|
||||
DataMessage("用户${user.name}无需重复激活")
|
||||
} else {
|
||||
if (token == user.token) {
|
||||
user.alive = true
|
||||
user.token = null
|
||||
this.repository.update(user, this.clazz)
|
||||
this.repository.update(user)
|
||||
DataMessage(Status.Success, "用户${user.name}激活成功")
|
||||
} else {
|
||||
logger.warn(this, "用户${user.name}激活失败, {key: ${key}, token: ${token}")
|
||||
@@ -77,11 +72,11 @@ class UserService(
|
||||
}
|
||||
|
||||
override fun changePassword(key: String, password: String, newPassword: String): DataMessage<Any> {
|
||||
val user = this.repository.get(key, this.clazz)!!
|
||||
val user = this.repository.get(key)!!
|
||||
return if (user.password == password.toMd5()) {
|
||||
user.password = newPassword.toMd5()
|
||||
user.token = null
|
||||
this.repository.update(user, this.clazz)
|
||||
this.repository.update(user)
|
||||
DataMessage()
|
||||
} else {
|
||||
logger.warn(this, "用户修改${user.name}密码失败, 旧密码验证不通过")
|
||||
@@ -91,11 +86,11 @@ class UserService(
|
||||
|
||||
|
||||
override fun resetPassword(key: String, password: String, token: String?): DataMessage<Any> {
|
||||
val user = this.repository.get(key, this.clazz)!!
|
||||
val user = this.repository.get(key)!!
|
||||
return if (token == user.token) {
|
||||
user.password = password.toMd5()
|
||||
user.token = null
|
||||
this.repository.update(user, this.clazz)
|
||||
this.repository.update(user)
|
||||
DataMessage()
|
||||
} else {
|
||||
logger.warn(this, "用户重置${user.name}密码失败, 系统密码修改令牌:${user.token}, {key: ${key} , token: ${token}")
|
||||
@@ -104,10 +99,10 @@ class UserService(
|
||||
}
|
||||
|
||||
override fun forgotPassword(key: String): DataMessage<String> {
|
||||
val user = this.repository.get(key, this.clazz)!!
|
||||
val user = this.repository.get(key)!!
|
||||
return if (user.alive) {
|
||||
user.token = UUID.randomUUID().toString()
|
||||
this.repository.update(user, this.clazz)
|
||||
this.repository.update(user)
|
||||
userNotifier?.forgot(user.id!!, user.name, user.token!!)
|
||||
DataMessage()
|
||||
} else
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
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.Interface
|
||||
import com.synebula.zeus.domain.service.contr.rbac.resource.IInterfaceService
|
||||
|
||||
class InterfaceService(
|
||||
repository: IRepository,
|
||||
converter: IObjectConverter, logger: ILogger
|
||||
) : Service<Interface, String>(Interface::class.java, repository, converter, logger), IInterfaceService
|
||||
@@ -1,13 +0,0 @@
|
||||
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.Page
|
||||
import com.synebula.zeus.domain.service.contr.rbac.resource.IPageService
|
||||
|
||||
class PageService(
|
||||
repository: IRepository,
|
||||
converter: IObjectConverter, logger: ILogger
|
||||
) : Service<Page, String>(Page::class.java, repository, converter, logger), IPageService
|
||||
@@ -1,13 +0,0 @@
|
||||
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.System
|
||||
import com.synebula.zeus.domain.service.contr.rbac.resource.ISystemService
|
||||
|
||||
class SystemService(
|
||||
repository: IRepository,
|
||||
converter: IObjectConverter, logger: ILogger
|
||||
) : Service<System, String>(System::class.java, repository, converter, logger), ISystemService
|
||||
Reference in New Issue
Block a user