From 53954ea4d9d94713b86ac1a40caa94cfcd9fedad Mon Sep 17 00:00:00 2001 From: Infendro Date: Thu, 2 Oct 2025 11:53:53 +0200 Subject: [PATCH] add README --- README.md | 12 ++++ backend/gradle/libs.versions.toml | 2 +- .../com/infendro/account/config/Database.kt | 72 +++++++++---------- 3 files changed, 49 insertions(+), 37 deletions(-) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..37369e5 --- /dev/null +++ b/README.md @@ -0,0 +1,12 @@ +# Account + +This project implements a secure account management system. + +## Features + +* Create an account with a username, password, and 2FA. + * Passwords are securely salted and hashed using the PBKDF2 algorithm. + * 2FA is implemented using the TOTP algorithm. +* Create a session. + * Sessions are authenticated using randomly generated session tokens. +* Access and manage accounts and sessions. diff --git a/backend/gradle/libs.versions.toml b/backend/gradle/libs.versions.toml index 4dd5421..c8c881c 100644 --- a/backend/gradle/libs.versions.toml +++ b/backend/gradle/libs.versions.toml @@ -2,7 +2,7 @@ kotlin = "2.2.10" ktor = "3.2.3" exposed = "0.61.0" -migration = "1.0.2" +migration = "1.1.0" postgres = "42.7.5" random = "1.0.0" otp = "1.1.1" diff --git a/backend/src/main/kotlin/com/infendro/account/config/Database.kt b/backend/src/main/kotlin/com/infendro/account/config/Database.kt index f13013f..3413788 100644 --- a/backend/src/main/kotlin/com/infendro/account/config/Database.kt +++ b/backend/src/main/kotlin/com/infendro/account/config/Database.kt @@ -20,42 +20,42 @@ fun Application.configureDatabase() { migration("initial") { exec( """ - CREATE TABLE access - ( - id BIGSERIAL - PRIMARY KEY, - token_hash TEXT - NOT NULL - ); - - CREATE TABLE account - ( - id BIGSERIAL - PRIMARY KEY, - username TEXT - UNIQUE - NOT NULL, - password_hash TEXT - NOT NULL, - password_salt TEXT - NOT NULL, - secret TEXT - NOT NULL, - role TEXT - NOT NULL - ); - - CREATE TABLE session - ( - id BIGSERIAL - PRIMARY KEY, - token_hash TEXT - NOT NULL, - account_id BIGINT - REFERENCES account (id) ON DELETE CASCADE - NOT NULL - ); - """.trimIndent() + CREATE TABLE access + ( + id BIGSERIAL + PRIMARY KEY, + token_hash TEXT + NOT NULL + ); + + CREATE TABLE account + ( + id BIGSERIAL + PRIMARY KEY, + username TEXT + UNIQUE + NOT NULL, + password_hash TEXT + NOT NULL, + password_salt TEXT + NOT NULL, + secret TEXT + NOT NULL, + role TEXT + NOT NULL + ); + + CREATE TABLE session + ( + id BIGSERIAL + PRIMARY KEY, + token_hash TEXT + NOT NULL, + account_id BIGINT + REFERENCES account (id) ON DELETE CASCADE + NOT NULL + ); + """.trimIndent() ) AccountRepository.insert {