Skip to content

Instantly share code, notes, and snippets.

@leadhkr
Created February 23, 2015 01:36
Show Gist options
  • Save leadhkr/11959b01a041eb8666b0 to your computer and use it in GitHub Desktop.
Save leadhkr/11959b01a041eb8666b0 to your computer and use it in GitHub Desktop.
require 'sinatra'
require_relative 'models'
enable :sessions
## HELPER/METHODS
## ==================================
helpers do
def pass_match(pass_one, pass_two)
pass_one == pass_two
end
def current_user
@current_user ||= User.get(session[:current_user_id])
end
def login(user)
@current_user = user
session[:current_user_id] = user.id
redirect '/'
end
def logged_in?
!session[:current_user_id].nil?
end
def logout
session.delete(:current_user_id)
end
end
## ROUTES
## ==================================
# INDEX
get '/' do
@stalls = Stall.all
current_user if logged_in?
erb :home
end
# USER SIGNUP PAGE
get '/users/new' do
@user = User.new
erb :new_user
end
# USER CREATE
post '/users' do
if pass_match(params[:user][:password], params[:user][:password_confirm])
@user = User.create(:nickname => params[:user][:nickname], :email => params[:user][:email], :password => params[:user][:password])
end
if @user.saved?
login(@user)
else
erb :new_user
end
end
# USER LOGIN
post '/session' do
@login_attempt = User.first(:email => params[:user][:email])
if pass_match(@login_attempt.password, params[:user][:password])
login(@login_attempt)
else
redirect '/'
end
end
# USER LOGOUT
delete '/session' do
logout
redirect '/'
end
# CREATE A STALL
get '/stalls/new' do
current_user
@stall = @current_user.stalls.new
erb :new_stall
end
post '/stall' do
@stall = current_user.stalls.create(params[:stall])
if @stall.saved?
redirect '/'
else
erb :new_stall
end
end
# SHOW STALL
get '/stall/:stall_id' do
@stall = Stall.get(params[:stall_id])
erb :show_stall
end
# REQUEST STALL
get '/stall/:stall_id/reserve' do
@stall = Stall.get(params[:stall_id])
erb :reserve_stall
end
post '/stall/:stall_id/reserve/:current_user_id' do
@request = RentalRequest.create(:date => params[:reserve_date], :message => params[:message], :status => params[:status], :stall_id => params[:stall_id], :requestor_id => params[:current_user_id])
redirect '/dashboard'
end
# USER DASHBOARD
get '/dashboard' do
erb :dashboard
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment