Create model for votes with secure_id, title, and description

This commit is contained in:
ricola 2025-04-06 17:04:31 -06:00
parent 5e8cda6fc0
commit f7f1807839
9 changed files with 106 additions and 10 deletions

35
vote.rb
View file

@ -1,5 +1,14 @@
require 'bundler/setup'
require 'sinatra'
require 'sinatra/activerecord'
require 'bcrypt'
require 'securerandom'
#set :database, 'sqlite3:db/vote.sqlite3'
class Vote < ActiveRecord::Base
self.primary_key = "secure_id"
end
def hash_password(password)
BCrypt::Password.create(password).to_s
@ -19,11 +28,9 @@ USERS = [
enable :sessions
get '/' do
if current_user
erb :home
else
redirect '/login'
end
redirect '/login' unless current_user
@votes = Vote.all
erb :home
end
get '/login' do
@ -31,7 +38,6 @@ get '/login' do
end
post '/login' do
puts params
user = USERS.find { |u| u.email == params[:email] }
if user && verify_password(params[:password], user.password_hash)
session.clear
@ -48,6 +54,23 @@ post '/logout' do
redirect '/login'
end
get '/votes/new' do
erb :votes_new
end
get '/votes/:id' do
@vote = Vote.find(params[:id])
erb :votes_show
end
post '/votes' do
secure_id = SecureRandom.hex(8)
@vote = Vote.create(secure_id: secure_id,
title: params[:title],
description: params[:description])
redirect '/votes/' + secure_id
end
helpers do
def current_user
if session[:user_id]