full reborn
This commit is contained in:
19
features/roles/manager/client/build.gradle
Normal file
19
features/roles/manager/client/build.gradle
Normal file
@@ -0,0 +1,19 @@
|
||||
plugins {
|
||||
id "org.jetbrains.kotlin.multiplatform"
|
||||
id "org.jetbrains.kotlin.plugin.serialization"
|
||||
id "com.android.library"
|
||||
}
|
||||
|
||||
apply from: "$mppProjectWithSerializationPresetPath"
|
||||
|
||||
kotlin {
|
||||
sourceSets {
|
||||
commonMain {
|
||||
dependencies {
|
||||
api project(":postssystem.features.roles.manager.common")
|
||||
api project(":postssystem.features.common.client")
|
||||
api project(":postssystem.features.roles.client")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1 @@
|
||||
<manifest package="dev.inmo.postssystem.features.roles.manager.client"/>
|
18
features/roles/manager/common/build.gradle
Normal file
18
features/roles/manager/common/build.gradle
Normal file
@@ -0,0 +1,18 @@
|
||||
plugins {
|
||||
id "org.jetbrains.kotlin.multiplatform"
|
||||
id "org.jetbrains.kotlin.plugin.serialization"
|
||||
id "com.android.library"
|
||||
}
|
||||
|
||||
apply from: "$mppProjectWithSerializationPresetPath"
|
||||
|
||||
kotlin {
|
||||
sourceSets {
|
||||
commonMain {
|
||||
dependencies {
|
||||
api project(":postssystem.features.common.common")
|
||||
api project(":postssystem.features.roles.common")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,32 @@
|
||||
package dev.inmo.postssystem.features.roles.manager.common
|
||||
|
||||
import dev.inmo.postssystem.features.roles.common.UserRole
|
||||
import dev.inmo.postssystem.features.roles.common.UserRoleSerializer
|
||||
import dev.inmo.micro_utils.serialization.typed_serializer.TypedSerializer
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
@Serializable(RolesManagerRoleSerializer::class)
|
||||
interface RolesManagerRole : UserRole {
|
||||
companion object {
|
||||
fun serializer() = RolesManagerRoleSerializer
|
||||
}
|
||||
}
|
||||
|
||||
@Serializable
|
||||
object GeneralRolesManagerRole : RolesManagerRole {
|
||||
override fun toString(): String = "GeneralRolesManagerRole"
|
||||
}
|
||||
|
||||
private const val KEY = "roles_manager"
|
||||
|
||||
object RolesManagerRoleSerializer : TypedSerializer<RolesManagerRole>(
|
||||
RolesManagerRole::class,
|
||||
mapOf(
|
||||
"${KEY}_general" to GeneralRolesManagerRole.serializer()
|
||||
)
|
||||
) {
|
||||
init {
|
||||
UserRoleSerializer.includeSerializer(KEY, RolesManagerRoleSerializer)
|
||||
serializers.forEach { (k, v) -> UserRoleSerializer.includeSerializer(k, v) }
|
||||
}
|
||||
}
|
@@ -0,0 +1,16 @@
|
||||
package dev.inmo.postssystem.features.roles.manager.common
|
||||
|
||||
import dev.inmo.postssystem.features.common.common.default
|
||||
import dev.inmo.postssystem.features.roles.common.UsersRolesStorage
|
||||
import dev.inmo.postssystem.features.roles.common.keyvalue.*
|
||||
import kotlinx.serialization.StringFormat
|
||||
import kotlinx.serialization.json.Json
|
||||
|
||||
class RolesManagerRoleStorage(
|
||||
keyValuesRepo: KeyValuesUsersRolesOriginalRepo,
|
||||
format: StringFormat = Json.default
|
||||
) : UsersRolesStorage<RolesManagerRole>, KeyValueUsersRolesStorage<RolesManagerRole>(
|
||||
keyValuesRepo,
|
||||
RolesManagerRole.serializer(),
|
||||
format
|
||||
)
|
@@ -0,0 +1 @@
|
||||
<manifest package="dev.inmo.postssystem.features.roles.manager.common"/>
|
18
features/roles/manager/server/build.gradle
Normal file
18
features/roles/manager/server/build.gradle
Normal file
@@ -0,0 +1,18 @@
|
||||
plugins {
|
||||
id "org.jetbrains.kotlin.multiplatform"
|
||||
id "org.jetbrains.kotlin.plugin.serialization"
|
||||
}
|
||||
|
||||
apply from: "$mppJavaProjectPresetPath"
|
||||
|
||||
kotlin {
|
||||
sourceSets {
|
||||
commonMain {
|
||||
dependencies {
|
||||
api project(":postssystem.features.roles.manager.common")
|
||||
api project(":postssystem.features.common.server")
|
||||
api project(":postssystem.features.roles.server")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,18 @@
|
||||
package dev.inmo.postssystem.features.roles.manager.server
|
||||
|
||||
import dev.inmo.postssystem.features.roles.common.ReadUsersRolesStorage
|
||||
import dev.inmo.postssystem.features.roles.common.UserRole
|
||||
import dev.inmo.postssystem.features.roles.manager.common.GeneralRolesManagerRole
|
||||
import dev.inmo.postssystem.features.roles.server.RolesChecker
|
||||
import dev.inmo.postssystem.features.users.common.User
|
||||
import io.ktor.application.ApplicationCall
|
||||
|
||||
object RolesManagerRolesChecker : RolesChecker<UserRole> {
|
||||
override val key: String
|
||||
get() = "RolesManagerRolesChecker"
|
||||
|
||||
override suspend fun ApplicationCall.invoke(
|
||||
usersRolesStorage: ReadUsersRolesStorage<UserRole>,
|
||||
user: User
|
||||
): Boolean = usersRolesStorage.contains(user.id, GeneralRolesManagerRole)
|
||||
}
|
@@ -0,0 +1,15 @@
|
||||
package dev.inmo.postssystem.features.roles.manager.server
|
||||
|
||||
import dev.inmo.postssystem.features.roles.common.UsersRolesStorage
|
||||
import dev.inmo.postssystem.features.roles.manager.common.RolesManagerRole
|
||||
import dev.inmo.postssystem.features.roles.manager.common.RolesManagerRoleSerializer
|
||||
import dev.inmo.postssystem.features.roles.server.UsersRolesStorageWriteServerRoutesConfigurator
|
||||
import dev.inmo.micro_utils.ktor.server.configurators.ApplicationRoutingConfigurator
|
||||
|
||||
class RolesManagerUsersRolesStorageServerRoutesConfigurator(
|
||||
storage: UsersRolesStorage<RolesManagerRole>
|
||||
) : ApplicationRoutingConfigurator.Element by UsersRolesStorageWriteServerRoutesConfigurator(
|
||||
storage,
|
||||
RolesManagerRoleSerializer,
|
||||
RolesManagerRolesChecker.key
|
||||
)
|
Reference in New Issue
Block a user