From 9da6dbccb38f917687b03d46534fe8667b404ff5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kuba=20Szczodrzy=C5=84ski?= Date: Tue, 23 Feb 2021 12:47:52 +0100 Subject: [PATCH] [Vulcan/Web] Fix registering mobile device. --- .../edziennik/vulcan/data/VulcanWebMain.kt | 26 ++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/VulcanWebMain.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/VulcanWebMain.kt index 309aec70..f49e99c7 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/VulcanWebMain.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/VulcanWebMain.kt @@ -11,12 +11,11 @@ import im.wangchao.mhttp.Request import im.wangchao.mhttp.Response import im.wangchao.mhttp.callback.TextCallbackHandler import pl.droidsonroids.jspoon.Jspoon +import pl.szczodrzynski.edziennik.* import pl.szczodrzynski.edziennik.data.api.* import pl.szczodrzynski.edziennik.data.api.edziennik.vulcan.DataVulcan import pl.szczodrzynski.edziennik.data.api.edziennik.vulcan.login.CufsCertificate import pl.szczodrzynski.edziennik.data.api.models.ApiError -import pl.szczodrzynski.edziennik.get -import pl.szczodrzynski.edziennik.isNotNullNorBlank import pl.szczodrzynski.edziennik.utils.Utils import pl.szczodrzynski.edziennik.utils.models.Date import java.io.File @@ -139,7 +138,28 @@ open class VulcanWebMain(open val data: DataVulcan, open val lastSync: Long?) { } data.webPermissions = data.webPermissions.toMutableMap().also { map -> - map[symbol] = Regexes.VULCAN_WEB_PERMISSIONS.find(text)?.let { it[1] } + val permissions = Regexes.VULCAN_WEB_PERMISSIONS.find(text)?.let { it[1] } + if (permissions?.isNotBlank() == true) { + val studentId = permissions.split("|") + .getOrNull(0) + ?.base64DecodeToString() + ?.toJsonObject() + ?.getJsonArray("AuthInfos") + ?.asJsonObjectList() + ?.flatMap { authInfo -> + authInfo.getJsonArray("UczenIds") + ?.map { it.asInt } + ?: listOf() + } + ?.firstOrNull() + ?.toString() + data.app.cookieJar.set( + data.webHost ?: "vulcan.net.pl", + "idBiezacyUczen", + studentId + ) + } + map[symbol] = permissions } val schoolSymbols = mutableListOf()