From 4568914ef716a164a4443ef98269a1a1fa8f7957 Mon Sep 17 00:00:00 2001 From: Gauthier Roebroeck Date: Tue, 7 Sep 2021 12:04:05 +0800 Subject: [PATCH] feat: store sessions in database --- komga/build.gradle.kts | 1 + .../V20210907115532__spring_session.sql | 24 +++++++++++++++++++ komga/src/main/resources/application.yml | 4 ++++ 3 files changed, 29 insertions(+) create mode 100644 komga/src/flyway/resources/db/migration/sqlite/V20210907115532__spring_session.sql diff --git a/komga/build.gradle.kts b/komga/build.gradle.kts index 6c84eee68..f1b025a63 100644 --- a/komga/build.gradle.kts +++ b/komga/build.gradle.kts @@ -31,6 +31,7 @@ dependencies { implementation("org.springframework.boot:spring-boot-starter-thymeleaf") implementation("org.springframework.boot:spring-boot-starter-artemis") implementation("org.springframework.boot:spring-boot-starter-jooq") + implementation("org.springframework.session:spring-session-jdbc") kapt("org.springframework.boot:spring-boot-configuration-processor:2.5.2") diff --git a/komga/src/flyway/resources/db/migration/sqlite/V20210907115532__spring_session.sql b/komga/src/flyway/resources/db/migration/sqlite/V20210907115532__spring_session.sql new file mode 100644 index 000000000..15a83f772 --- /dev/null +++ b/komga/src/flyway/resources/db/migration/sqlite/V20210907115532__spring_session.sql @@ -0,0 +1,24 @@ +CREATE TABLE SPRING_SESSION +( + PRIMARY_ID CHARACTER(36) NOT NULL, + SESSION_ID CHARACTER(36) NOT NULL, + CREATION_TIME INTEGER NOT NULL, + LAST_ACCESS_TIME INTEGER NOT NULL, + MAX_INACTIVE_INTERVAL INTEGER NOT NULL, + EXPIRY_TIME INTEGER NOT NULL, + PRINCIPAL_NAME VARCHAR(100), + CONSTRAINT SPRING_SESSION_PK PRIMARY KEY (PRIMARY_ID) +); + +CREATE UNIQUE INDEX SPRING_SESSION_IX1 ON SPRING_SESSION (SESSION_ID); +CREATE INDEX SPRING_SESSION_IX2 ON SPRING_SESSION (EXPIRY_TIME); +CREATE INDEX SPRING_SESSION_IX3 ON SPRING_SESSION (PRINCIPAL_NAME); + +CREATE TABLE SPRING_SESSION_ATTRIBUTES +( + SESSION_PRIMARY_ID CHAR(36) NOT NULL, + ATTRIBUTE_NAME VARCHAR(200) NOT NULL, + ATTRIBUTE_BYTES BLOB NOT NULL, + CONSTRAINT SPRING_SESSION_ATTRIBUTES_PK PRIMARY KEY (SESSION_PRIMARY_ID, ATTRIBUTE_NAME), + CONSTRAINT SPRING_SESSION_ATTRIBUTES_FK FOREIGN KEY (SESSION_PRIMARY_ID) REFERENCES SPRING_SESSION (PRIMARY_ID) ON DELETE CASCADE +); diff --git a/komga/src/main/resources/application.yml b/komga/src/main/resources/application.yml index 6a4825cb3..b3511a29e 100644 --- a/komga/src/main/resources/application.yml +++ b/komga/src/main/resources/application.yml @@ -35,6 +35,10 @@ spring: web: resources: add-mappings: false + session: + store-type: jdbc + jdbc: + initialize-schema: never server: servlet.session.timeout: 7d