Merge pull request #2244 from element-hq/feature/bma/encryptedDb2

Encrypted db
This commit is contained in:
Benoit Marty 2024-01-19 17:40:23 +01:00 committed by GitHub
commit b4773d541f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
18 changed files with 140 additions and 5 deletions

View file

@ -33,6 +33,7 @@ internal fun SessionData.toDbModel(): DbSessionData {
loginTimestamp = loginTimestamp?.time,
isTokenValid = if (isTokenValid) 1L else 0L,
loginType = loginType.name,
passphrase = passphrase,
)
}
@ -48,5 +49,6 @@ internal fun DbSessionData.toApiModel(): SessionData {
loginTimestamp = loginTimestamp?.let { Date(it) },
isTokenValid = isTokenValid == 1L,
loginType = LoginType.fromName(loginType ?: LoginType.UNKNOWN.name),
passphrase = passphrase,
)
}

View file

@ -21,7 +21,9 @@ CREATE TABLE SessionData (
oidcData TEXT,
-- added in version 4
isTokenValid INTEGER NOT NULL DEFAULT 1,
loginType TEXT
loginType TEXT,
-- added in version 5
passphrase TEXT
);

View file

@ -0,0 +1,3 @@
-- Migrate DB from version 4
ALTER TABLE SessionData ADD COLUMN passphrase TEXT;

View file

@ -44,6 +44,7 @@ class DatabaseSessionStoreTests {
oidcData = "aOidcData",
isTokenValid = 1,
loginType = LoginType.UNKNOWN.name,
passphrase = null,
)
@OptIn(ExperimentalCoroutinesApi::class)
@ -137,6 +138,7 @@ class DatabaseSessionStoreTests {
oidcData = "aOidcData",
isTokenValid = 1,
loginType = null,
passphrase = "aPassphrase",
)
val secondSessionData = SessionData(
userId = "userId",
@ -149,6 +151,7 @@ class DatabaseSessionStoreTests {
oidcData = "aOidcDataAltered",
isTokenValid = 1,
loginType = null,
passphrase = "aPassphraseAltered",
)
assertThat(firstSessionData.userId).isEqualTo(secondSessionData.userId)
assertThat(firstSessionData.loginTimestamp).isNotEqualTo(secondSessionData.loginTimestamp)
@ -168,5 +171,6 @@ class DatabaseSessionStoreTests {
// Check that alteredSession.loginTimestamp is not altered, so equal to firstSessionData.loginTimestamp
assertThat(alteredSession.loginTimestamp).isEqualTo(firstSessionData.loginTimestamp)
assertThat(alteredSession.oidcData).isEqualTo(secondSessionData.oidcData)
assertThat(alteredSession.passphrase).isEqualTo(secondSessionData.passphrase)
}
}