mirror of
https://github.com/glimpse-app/server.git
synced 2025-04-02 10:52:45 -04:00
moved proc and type defs to own files
This commit is contained in:
parent
6dfb591cb8
commit
218216735f
2 changed files with 49 additions and 0 deletions
12
src/server/files.nim
Normal file
12
src/server/files.nim
Normal file
|
@ -0,0 +1,12 @@
|
|||
import norm/model
|
||||
import users
|
||||
|
||||
# file objects are owned by a user
|
||||
type File* = ref object of Model
|
||||
owner*: User
|
||||
path*: string
|
||||
tags*: string #? This is a temporary hack should be of type `tags: seq[string]` instead
|
||||
|
||||
# creates a new file object and sets default values, recommended by the norm documentation
|
||||
func newFile*(user: User = newUser(), path: string = "", tags: string = ""): File =
|
||||
File(owner: user, path: path, tags: tags)
|
37
src/server/users.nim
Normal file
37
src/server/users.nim
Normal file
|
@ -0,0 +1,37 @@
|
|||
import std/[random, with, times]
|
||||
import norm/[model, sqlite]
|
||||
import checksums/sha3
|
||||
|
||||
# define user object
|
||||
type User* = ref object of Model
|
||||
username*: string # should be unique
|
||||
email*: string # should be unique
|
||||
password*: string
|
||||
token*: string # should be unique
|
||||
|
||||
# generate secure login token
|
||||
proc generateToken*(username: string = ""): string =
|
||||
randomize()
|
||||
with result:
|
||||
add $getTime().nanosecond()
|
||||
add $rand(1_000_000_000)
|
||||
add username
|
||||
add $(getTime().toUnix())
|
||||
$Sha3_512.secureHash(result)
|
||||
|
||||
# checks if the provided token exists in the database
|
||||
proc validToken*(db: DbConn, user: var User, token: string): bool =
|
||||
try:
|
||||
db.select(user, "token = ?", token)
|
||||
return true
|
||||
except NotFoundError:
|
||||
return false
|
||||
|
||||
# update user's token using a newly generated token
|
||||
proc genNewToken*(db: DbConn, user: var User) =
|
||||
user.token = generateToken(user.username)
|
||||
db.update(user)
|
||||
|
||||
# creates a new user object and sets default values, recommended by the norm documentation
|
||||
proc newUser*(username: string = "", email: string = "", password: string = ""): User =
|
||||
User(username: username, email: email, password: password, token: generateToken(username))
|
Loading…
Add table
Reference in a new issue