diff options
author | Marvin Borner | 2019-05-02 22:37:13 +0200 |
---|---|---|
committer | Marvin Borner | 2019-05-02 22:37:13 +0200 |
commit | a6fc766d6eb808584c7cebea216f683b53f8e99b (patch) | |
tree | 484faadd60a0df0b648a27e130455d800512391d /src/main/kotlin/DatabaseController.kt | |
parent | 22797dde022a398b34a91ba24e2bdd89be3f36f8 (diff) |
Added user registration via admin
Co-authored-by: LarsVomMars <lars@kroenner.eu>
Diffstat (limited to 'src/main/kotlin/DatabaseController.kt')
-rw-r--r-- | src/main/kotlin/DatabaseController.kt | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/src/main/kotlin/DatabaseController.kt b/src/main/kotlin/DatabaseController.kt index cce9601..5ab0743 100644 --- a/src/main/kotlin/DatabaseController.kt +++ b/src/main/kotlin/DatabaseController.kt @@ -1,6 +1,7 @@ package space.anity import at.favre.lib.crypto.bcrypt.* +import io.javalin.* import org.jetbrains.exposed.sql.* import org.jetbrains.exposed.sql.transactions.* import org.joda.time.* @@ -43,6 +44,14 @@ class DatabaseController(dbFileLocation: String = "main.db") { } /** + * Database table indexing the soon-to-be registered users by username + */ + object UserRegistration : Table() { + val id = integer("id").autoIncrement().primaryKey() + val username = varchar("username", 24).uniqueIndex() + } + + /** * Database table declaring available roles */ object RolesData : Table() { @@ -78,6 +87,7 @@ class DatabaseController(dbFileLocation: String = "main.db") { FileLocation, UserData, UserRoles, + UserRegistration, RolesData, LoginAttempts, General @@ -110,6 +120,40 @@ class DatabaseController(dbFileLocation: String = "main.db") { } /** + * Checks whether the user is allowed to register + * TODO: Verify registration via token + */ + fun isUserRegistrationValid(usernameString: String): Boolean { + return transaction { + try { + if (UserData.select { UserData.username eq usernameString }.empty()) { + val username = UserRegistration.select { UserRegistration.username eq usernameString }.map { it[UserRegistration.username] }[0] + username == usernameString + } else false + } catch (err: Exception) { + false + } + } + } + + /** + * Adds a user to the registration table + */ + fun indexUserRegistration(ctx: Context) { + transaction { + UserRegistration.insert { + it[username] = ctx.queryParam("username", "").toString() + } + } + } + + fun removeRegistrationIndex(usernameString: String) { + transaction { + UserRegistration.deleteWhere { UserRegistration.username eq usernameString } + } + } + + /** * Tests whether the password [passwordString] of the user [usernameString] is correct */ fun checkUser(usernameString: String, passwordString: String): Boolean { |