move registeration endpoint to its own file

This commit is contained in:
array-in-a-matrix 2024-07-04 03:19:27 -04:00
parent 5b63e777b0
commit 4fd51c0367
2 changed files with 36 additions and 23 deletions

28
src/routes/newUser.nim Normal file
View file

@ -0,0 +1,28 @@
# import libs
import std/[strutils, os, logging]
import jester
import norm/[model, sqlite]
import ../types/[users, files]
import checksums/sha3
import ../database
proc createNewUserRoute*() =
router newUser:
#[
request parameters:
username - string - required
email - string - required
password - string - required
returns:
success - token - new login token
fail - 403 - not all required parameters are provided
]#
post "/api/v1/newUser":
# creates new user with provided info
# TODO: sanitization + check if username and email are unique
if @"username".isEmptyOrWhitespace() or @"email".isEmptyOrWhitespace() or @"password".isEmptyOrWhitespace():
resp Http403, "Not all required parameters are provided."
var user = newUser(@"username", @"email", @"password")
db.insert(user)
resp Http200, user.token

View file

@ -4,35 +4,16 @@ import jester
import norm/[model, sqlite]
import types/[users, files]
import checksums/sha3
import database
addHandler newConsoleLogger(fmtStr = "")
# using sqlite as it makes setup faster
# once project is stable enough this will switch to postgresql
let db = open("storage.db", "", "", "")
db.createTables(newFile()) # file objects require a user object, thus a tables for both are created
import routes/[newUser]
createNewUserRoute()
routes:
#[
request parameters:
username - string - required
email - string - required
password - string - required
returns:
success - token - new login token
fail - 403 - not all required parameters are provided
]#
post "/api/v1/newUser":
# creates new user with provided info
# TODO: sanitization + check if username and email are unique
if @"username".isEmptyOrWhitespace() or @"email".isEmptyOrWhitespace() or @"password".isEmptyOrWhitespace():
resp Http403, "Not all required parameters are provided."
var user = newUser(@"username", @"email", @"password")
db.insert(user)
resp Http200, user.token
#[
request parameters:
token - string - required via header
@ -204,3 +185,7 @@ routes:
# db.delete(user)
# resp Http200, "User has been deleted."
# template respJson*(node: JsonNode) =
# resp $node, "application/json"
extend newUser, ""