Files
forkmessager/client-mobile/core/security/TokenManager.kt
Халимов Рустам 9daa786cfb Заготовка
2026-05-07 23:27:37 +03:00

58 lines
1.6 KiB
Kotlin

package core.security
import android.content.Context
import androidx.security.crypto.EncryptedSharedPreferences
import androidx.security.crypto.MasterKey
import javax.inject.Inject
import javax.inject.Singleton
@Singleton
class TokenManager @Inject constructor(context: Context) {
private val masterKey = MasterKey.Builder(context)
.setKeyScheme(MasterKey.KeyScheme.AES256_GCM)
.build()
private val prefs = EncryptedSharedPreferences.create(
context,
"auth_prefs",
masterKey,
EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV,
EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM
)
fun saveToken(token: String, userId: String? = null, refreshToken: String? = null) {
val editor = prefs.edit().putString("jwt_token", token)
if (userId != null) {
editor.putString("user_id", userId)
}
if (refreshToken != null) {
editor.putString("refresh_token", refreshToken)
}
editor.apply()
}
fun getToken(): String? {
return prefs.getString("jwt_token", null)
}
fun getRefreshToken(): String? {
return prefs.getString("refresh_token", null)
}
fun getUserId(): String? {
return prefs.getString("user_id", null)
}
fun getUsername(): String? {
return prefs.getString("username", null)
}
fun saveUsername(username: String) {
prefs.edit().putString("username", username).apply()
}
fun deleteToken() {
prefs.edit().remove("jwt_token").remove("user_id").remove("refresh_token").apply()
}
}