Skip to content

Commit

Permalink
refactor Tenant
Browse files Browse the repository at this point in the history
  • Loading branch information
Ahoo-Wang committed Dec 31, 2022
1 parent 31b8893 commit 81738c3
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 8 deletions.
25 changes: 23 additions & 2 deletions cosec-api/src/main/kotlin/me/ahoo/cosec/api/tenant/Tenant.kt
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,20 @@ interface Tenant {
*
* @return If it returns true, the current Tenant is the root Tenant.
*/
val isPlatform: Boolean
get() = PLATFORM_TENANT_ID == tenantId
val isPlatformTenant: Boolean
get() = isPlatform(tenantId)

/**
* 是否是默认租户
*/
val isDefaultTenant: Boolean
get() = isDefault(tenantId)

/**
* 是否是用户租户环境
*/
val isUserTenant: Boolean
get() = !isDefaultTenant && !isPlatformTenant

companion object {
/**
Expand All @@ -45,5 +57,14 @@ interface Tenant {

@JvmField
val DEFAULT_TENANT_ID = CoSec.DEFAULT

@JvmStatic
fun isPlatform(tenantId: String): Boolean {
return PLATFORM_TENANT_ID == tenantId
}

fun isDefault(tenantId: String): Boolean {
return DEFAULT_TENANT_ID == tenantId
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ import me.ahoo.cosec.api.policy.Policy
import me.ahoo.cosec.api.policy.Statement
import me.ahoo.cosec.api.policy.VerifyResult
import me.ahoo.cosec.api.principal.CoSecPrincipal.Companion.isRoot
import me.ahoo.cosec.api.tenant.Tenant
import reactor.core.publisher.Mono
import reactor.kotlin.core.publisher.toMono

Expand Down Expand Up @@ -104,7 +103,7 @@ class SimpleAuthorization(private val permissionRepository: PermissionRepository

if (
context.principal.authenticated() &&
Tenant.DEFAULT_TENANT_ID != request.tenantId &&
!request.isDefaultTenant &&
request.tenantId != context.tenant.tenantId
) {
return IllegalTenantContextException(request, context).toMono()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ import me.ahoo.cosec.api.context.request.Request
import me.ahoo.cosec.api.policy.Effect
import me.ahoo.cosec.api.policy.Policy
import me.ahoo.cosec.api.principal.CoSecPrincipal
import me.ahoo.cosec.api.tenant.Tenant
import me.ahoo.cosec.context.SimpleSecurityContext
import me.ahoo.cosec.policy.AllActionMatcher
import me.ahoo.cosec.policy.StatementData
Expand All @@ -48,7 +47,8 @@ internal class SimpleAuthorizationTest {
fun authorizeWhenPrincipalNotMatchRequestTenantId() {
val permissionRepository = mockk<PermissionRepository>()
val authorization = SimpleAuthorization(permissionRepository)
val request = mockk<Request>() {
val request = mockk<Request> {
every { isDefaultTenant } returns false
every { tenantId } returns "RequestTenantId"
}
val securityContext = mockk<SecurityContext>() {
Expand Down Expand Up @@ -79,7 +79,7 @@ internal class SimpleAuthorizationTest {
every { principal.roles } returns setOf()
}
val request = mockk<Request> {
every { tenantId } returns Tenant.DEFAULT_TENANT_ID
every { isDefaultTenant } returns true
}
authorization.authorize(request, securityContext)
.test()
Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
# limitations under the License.
#
group=me.ahoo.cosec
version=1.6.2
version=1.6.3
description=RBAC-based And Policy-based Multi-Tenant Reactive Security Framework
website=https://github.com/Ahoo-Wang/CoSec
issues=https://github.com/Ahoo-Wang/CoSec/issues
Expand Down

0 comments on commit 81738c3

Please sign in to comment.