require 'sqlite3' DATA_LOCATION = './data' DATABASE_SUBPATH = '/database' DATABASE_NAME = '/auth.db' FILE_STORAGE_LOCATION = '/files' def create_new_user(username, password, is_admin) db = SQLite3::Database.new( DATA_LOCATION + DATABASE_SUBPATH + DATABASE_NAME ) db.execute(' INSERT INTO users (username, hashed_password, is_admin) VALUES (?, ?, ?) ', [username.downcase, create_password_for_user(password), is_admin]) end def check_if_user_exists(username) db = SQLite3::Database.new( DATA_LOCATION + DATABASE_SUBPATH + DATABASE_NAME ) result = db.get_first_value('SELECT COUNT(*) FROM users WHERE username = ?', username.downcase) if result > 0 return true else return false end end def check_if_user_is_admin(user_id) db = SQLite3::Database.new( DATA_LOCATION + DATABASE_SUBPATH + DATABASE_NAME ) result = db.get_first_value('SELECT is_admin FROM users WHERE id = ?', user_id) if result == 1 return true else return false end end def get_user_id(username) db = SQLite3::Database.new( DATA_LOCATION + DATABASE_SUBPATH + DATABASE_NAME ) user_id = db.get_first_value(' SELECT id FROM users U WHERE U.username = ? ', [username.downcase]) return user_id end def get_user_hashed_password(user_id) db = SQLite3::Database.new( DATA_LOCATION + DATABASE_SUBPATH + DATABASE_NAME ) password_hash = db.get_first_value(' SELECT hashed_password FROM users U WHERE U.id = ? ', [user_id]) return password_hash end def update_user_password(user_id, password) db = SQLite3::Database.new( DATA_LOCATION + DATABASE_SUBPATH + DATABASE_NAME ) db.execute(' UPDATE users SET hashed_password = ?, salt = ? WHERE id = ? ', [hash_password, salt, user_id]) end def get_claims (user_id) db = SQLite3::Database.new( DATA_LOCATION + DATABASE_SUBPATH + DATABASE_NAME ) results = db.execute(' SELECT C.claim FROM users U INNER JOIN user_claims UC ON U.id = UC.user_id INNER JOIN claims C ON UC.claim_id = U.id WHERE u.id = ? ', user_id) claims_list = [] if results.empty? puts 'No claims found.' else results.each do |column| claim = column[0] claims_list << claim end end return claims_list end