2011-06-24 13:28:19 +02:00
|
|
|
class Admin < Sinatra::Base
|
2011-06-24 14:29:59 +02:00
|
|
|
set $settings
|
2011-06-26 08:57:59 +02:00
|
|
|
enable :sessions
|
2011-06-27 09:19:28 +02:00
|
|
|
use Rack::Flash, :accessorize => [:error, :warning, :notice]
|
2011-06-26 08:57:59 +02:00
|
|
|
set :haml, :layout => :admin_layout
|
2011-06-24 14:29:59 +02:00
|
|
|
|
2011-06-28 10:29:44 +02:00
|
|
|
before %r{^(?!\/(login)?$)} do
|
|
|
|
if session_valid?
|
|
|
|
session[:last_updated] = Time.now
|
|
|
|
flash.notice = 'session is valid!'
|
|
|
|
else
|
|
|
|
flash.notice = 'something is wrong'
|
|
|
|
redirect '/admin'
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2011-06-24 13:28:19 +02:00
|
|
|
get '/' do
|
2011-06-28 10:29:44 +02:00
|
|
|
haml :admin_index_no_login
|
2011-06-24 13:28:19 +02:00
|
|
|
end
|
2011-06-27 09:19:28 +02:00
|
|
|
|
|
|
|
post '/login' do
|
|
|
|
account = Account.authenticate(params['username'], params['password'])
|
|
|
|
if account.nil?
|
|
|
|
flash.warning = 'wrong username or password'
|
2011-06-28 10:29:44 +02:00
|
|
|
flash[:username] = params['username']
|
2011-06-27 09:19:28 +02:00
|
|
|
redirect '/admin'
|
|
|
|
else
|
|
|
|
flash.notice = 'Login successful'
|
2011-06-28 10:29:44 +02:00
|
|
|
session[:id] = account.id
|
|
|
|
session[:last_updated] = Time.now
|
|
|
|
redirect '/admin/index'
|
2011-06-27 09:19:28 +02:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2011-06-28 10:29:44 +02:00
|
|
|
get '/index' do
|
|
|
|
haml :admin_index
|
|
|
|
end
|
|
|
|
|
|
|
|
get '/logout' do
|
|
|
|
session = nil
|
|
|
|
flash.notice = 'Logout complete'
|
|
|
|
redirect '/'
|
|
|
|
end
|
|
|
|
|
2011-06-27 09:19:28 +02:00
|
|
|
get '/stylesheet.css' do
|
|
|
|
scss :admin_stylesheet
|
|
|
|
end
|
2011-06-28 10:29:44 +02:00
|
|
|
|
|
|
|
helpers do
|
|
|
|
def session_valid?
|
|
|
|
if session.has_key?(:id) && session.has_key?(:last_updated)
|
|
|
|
account = Account.find(session[:id])
|
|
|
|
if account && Time.now - session[:last_updated] < 1800
|
|
|
|
@account = account
|
|
|
|
true
|
|
|
|
else
|
|
|
|
false
|
|
|
|
end
|
|
|
|
else
|
|
|
|
false
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
2011-06-24 13:28:19 +02:00
|
|
|
end
|