aboutsummaryrefslogtreecommitdiff
path: root/src/main/kotlin/pl/treksoft/kvision/remote/KVServer.kt
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/kotlin/pl/treksoft/kvision/remote/KVServer.kt')
-rw-r--r--src/main/kotlin/pl/treksoft/kvision/remote/KVServer.kt123
1 files changed, 123 insertions, 0 deletions
diff --git a/src/main/kotlin/pl/treksoft/kvision/remote/KVServer.kt b/src/main/kotlin/pl/treksoft/kvision/remote/KVServer.kt
new file mode 100644
index 00000000..a1cc40ca
--- /dev/null
+++ b/src/main/kotlin/pl/treksoft/kvision/remote/KVServer.kt
@@ -0,0 +1,123 @@
+/*
+ * Copyright (c) 2017-present Robert Jaros
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+package pl.treksoft.kvision.remote
+
+import kotlinx.serialization.Serializable
+import kotlinx.serialization.Transient
+
+/**
+ * A server.
+ * Not used on the js platform.
+ */
+actual open class KVServer
+
+/**
+ * A server request.
+ * Not used on the js platform.
+ */
+actual interface Request
+
+/**
+ * A user profile.
+ */
+@Serializable
+actual data class Profile(
+ val id: String? = null,
+ val attributes: MutableMap<String, String> = mutableMapOf(),
+ val authenticationAttributes: MutableMap<String, String> = mutableMapOf(),
+ val roles: MutableSet<String> = mutableSetOf(),
+ val permissions: MutableSet<String> = mutableSetOf(),
+ val linkedId: String? = null,
+ val remembered: Boolean = false,
+ val clientName: String? = null
+) {
+ @Transient
+ var username: String?
+ get() = attributes["username"]
+ set(value) {
+ if (value != null) {
+ attributes["username"] = value
+ } else {
+ attributes.remove("username")
+ }
+ }
+ @Transient
+ var firstName: String?
+ get() = attributes["first_name"]
+ set(value) {
+ if (value != null) {
+ attributes["first_name"] = value
+ } else {
+ attributes.remove("first_name")
+ }
+ }
+ @Transient
+ var familyName: String?
+ get() = attributes["family_name"]
+ set(value) {
+ if (value != null) {
+ attributes["family_name"] = value
+ } else {
+ attributes.remove("family_name")
+ }
+ }
+ @Transient
+ var displayName: String?
+ get() = attributes["display_name"]
+ set(value) {
+ if (value != null) {
+ attributes["display_name"] = value
+ } else {
+ attributes.remove("display_name")
+ }
+ }
+ @Transient
+ var email: String?
+ get() = attributes["email"]
+ set(value) {
+ if (value != null) {
+ attributes["email"] = value
+ } else {
+ attributes.remove("email")
+ }
+ }
+ @Transient
+ var pictureUrl: String?
+ get() = attributes["picture_url"]
+ set(value) {
+ if (value != null) {
+ attributes["picture_url"] = value
+ } else {
+ attributes.remove("picture_url")
+ }
+ }
+ @Transient
+ var profileUrl: String?
+ get() = attributes["profile_url"]
+ set(value) {
+ if (value != null) {
+ attributes["profile_url"] = value
+ } else {
+ attributes.remove("profile_url")
+ }
+ }
+}