添加用户信息和登录信息的保存和获取,可在js里调用

pull/1264/head
gedoor 4 years ago
parent 3722590693
commit 407fd016bc
  1. 40
      app/src/main/java/io/legado/app/data/entities/BaseSource.kt
  2. 2
      app/src/main/java/io/legado/app/ui/book/login/SourceLoginDialog.kt

@ -11,12 +11,18 @@ import io.legado.app.utils.GSON
import io.legado.app.utils.fromJsonObject import io.legado.app.utils.fromJsonObject
import javax.script.SimpleBindings import javax.script.SimpleBindings
/**
* 可在js里调用,source.xxx()
*/
interface BaseSource : JsExtensions { interface BaseSource : JsExtensions {
fun getStoreUrl(): String fun getStoreUrl(): String
var header: String? var header: String?
/**
* 解析header规则
*/
fun getHeaderMap() = HashMap<String, String>().apply { fun getHeaderMap() = HashMap<String, String>().apply {
this[AppConst.UA_NAME] = AppConfig.userAgent this[AppConst.UA_NAME] = AppConfig.userAgent
header?.let { header?.let {
@ -34,24 +40,46 @@ interface BaseSource : JsExtensions {
} }
} }
/**
* 获取用于登录的头部信息
*/
fun getLoginHeader(): Map<String, String>? { fun getLoginHeader(): Map<String, String>? {
val cache = CacheManager.get("login_${getStoreUrl()}") ?: return null val cache = CacheManager.get("loginHeader_${getStoreUrl()}") ?: return null
return GSON.fromJsonObject(cache)
}
/**
* 保存登录头部信息,map格式,访问时自动添加
*/
fun putLoginHeader(header: String) {
CacheManager.put("loginHeader_${getStoreUrl()}", header)
}
/**
* 获取用户信息,可以用来登录
* 用户信息采用aes加密存储
*/
fun getLoginInfo(): Map<String, String>? {
val cache = CacheManager.get("userInfo_${getStoreUrl()}") ?: return null
val byteArrayB = Base64.decode(cache, Base64.DEFAULT) val byteArrayB = Base64.decode(cache, Base64.DEFAULT)
val byteArrayA = EncoderUtils.decryptAES(byteArrayB, AppConst.androidId.toByteArray()) val byteArrayA = EncoderUtils.decryptAES(byteArrayB, AppConst.androidId.toByteArray())
?: return null ?: return null
val headerStr = String(byteArrayA) val info = String(byteArrayA)
return GSON.fromJsonObject(headerStr) return GSON.fromJsonObject(info)
} }
fun putLoginHeader(header: String) { /**
* 保存用户信息,aes加密
*/
fun putLoginInfo(info: String) {
val data = Base64.encodeToString( val data = Base64.encodeToString(
EncoderUtils.decryptAES( EncoderUtils.decryptAES(
header.toByteArray(), info.toByteArray(),
AppConst.androidId.toByteArray() AppConst.androidId.toByteArray()
), ),
Base64.DEFAULT Base64.DEFAULT
) )
CacheManager.put("login_${getStoreUrl()}", data) CacheManager.put("userInfo_${getStoreUrl()}", data)
} }
/** /**

@ -76,7 +76,7 @@ class SourceLoginDialog : BaseDialogFragment() {
} }
} }
} }
bookSource.putLoginHeader(GSON.toJson(loginData)) bookSource.putLoginInfo(GSON.toJson(loginData))
} }
} }
return@setOnMenuItemClickListener true return@setOnMenuItemClickListener true

Loading…
Cancel
Save