mirror of
https://github.com/hkalexling/Mango.git
synced 2026-03-20 00:00:48 -04:00
- better logging
This commit is contained in:
@@ -19,17 +19,21 @@ class Storage
|
||||
def initialize(@path : String, @logger : MLogger)
|
||||
dir = File.dirname path
|
||||
unless Dir.exists? dir
|
||||
@logger.info "The DB directory #{dir} does not exist. " \
|
||||
"Attepmting to create it"
|
||||
Dir.mkdir_p dir
|
||||
end
|
||||
DB.open "sqlite3://#{path}" do |db|
|
||||
begin
|
||||
db.exec "create table users" \
|
||||
"(username text, password text, token text, admin integer)"
|
||||
rescue e : SQLite3::Exception | DB::Error
|
||||
rescue e
|
||||
unless e.message == "table users already exists"
|
||||
@logger.fatal "Error when checking tables in DB: #{e}"
|
||||
raise e
|
||||
end
|
||||
else
|
||||
@logger.debug "Creating DB file at #{@path}"
|
||||
db.exec "create unique index username_idx on users (username)"
|
||||
db.exec "create unique index token_idx on users (token)"
|
||||
random_pw = random_str
|
||||
@@ -49,14 +53,18 @@ class Storage
|
||||
"users where username = (?)", \
|
||||
username, as: {String, String?}
|
||||
unless verify_password hash, password
|
||||
@logger.debug "Password does not match the hash"
|
||||
return nil
|
||||
end
|
||||
@logger.debug "Useer #{username} verified"
|
||||
return token if token
|
||||
token = random_str
|
||||
@logger.debug "Updating token for #{username}"
|
||||
db.exec "update users set token = (?) where username = (?)",
|
||||
token, username
|
||||
return token
|
||||
rescue e : SQLite3::Exception | DB::Error
|
||||
rescue e
|
||||
@logger.error "Error when verifying user #{username}: #{e}"
|
||||
return nil
|
||||
end
|
||||
end
|
||||
@@ -68,7 +76,8 @@ class Storage
|
||||
username = db.query_one "select username from users where " \
|
||||
"token = (?)", token, as: String
|
||||
return username
|
||||
rescue e : SQLite3::Exception | DB::Error
|
||||
rescue e
|
||||
@logger.debug "Unable to verify token"
|
||||
return nil
|
||||
end
|
||||
end
|
||||
@@ -79,7 +88,8 @@ class Storage
|
||||
begin
|
||||
return db.query_one "select admin from users where " \
|
||||
"token = (?)", token, as: Bool
|
||||
rescue e : SQLite3::Exception | DB::Error
|
||||
rescue e
|
||||
@logger.debug "Unable to verify user as admin"
|
||||
return false
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user