Created
October 13, 2012 09:26
-
-
Save innovationhero/3883943 to your computer and use it in GitHub Desktop.
Some ruby hacks on the train, sinatra signup/login with redis db
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
=begin | |
################################# | |
All Copyrights reserved Mohamed Fouad | |
About this program, this is a signup/login code part of Torii authentication server | |
Version: 1.0.0 | |
This program uses semantic versioning | |
You can learn more about Semantic Versioning at http://semver.org/. | |
################################# | |
=end | |
require 'sinatra' | |
require 'redis' | |
require 'erb' | |
=begin | |
require 'sinatra/base' | |
module Sinatra | |
module PostGet | |
def post_get(route, &block) | |
get(route, &block) | |
post(route, &block) | |
end | |
end | |
# now we just need to register it via Sinatra::Base | |
register PostGet | |
end | |
require 'sinatra/postget' | |
post_get '/torri_ext' do | |
"Hi #{params[:name]}" | |
end | |
=end | |
redis = Redis.new() | |
configure do | |
enable :sessions | |
set :show_exceptions, false | |
# Database | |
#redis = Redis.new | |
# redis = Redis.new(:host => "10.0.1.1", :port => 6380) | |
end | |
before do | |
content_type:txt | |
# Storing initial values on the application level | |
@before_value = 'foo' | |
=begin if session[:user] = "database user" then | |
redirect '/profile' | |
else | |
redirect '/home' | |
end | |
=end | |
end | |
get '/' do | |
# session['current_user.email'] = "[email protected]" | |
redirect '/home' | |
end | |
get '/env' do | |
# will itrate over all the values in the @env variable and display them as output | |
request.env.map { |e| e.to_s + "\n" } | |
end | |
get '/cache' do | |
expires 3600, :public, :must_revalidate | |
"this page is rendered at #{Time.now}" | |
end | |
before '/profile' do | |
# check if profile user is the logged in user | |
# check current energy points & add it to session energy points variable | |
if session[:energy] then | |
session[:energy] = session[:energy] + 1 | |
redis.set "energy", session[:energy] | |
else | |
session[:energy] = 1 | |
redis.set "energy", session[:energy] | |
end | |
end | |
get '/profile' do | |
=begin | |
if session[:user] = "database user" then | |
# nothing you are logged in | |
erb :profile | |
else | |
redirect '/home' | |
end | |
=end | |
# add energy points | |
session['current_user.email'] = "[email protected]" | |
current_energy = redis.get "energy" | |
session[:energy] = current_energy.to_i + 1 | |
erb :profile | |
end | |
after '/profile' do | |
puts # check if profile user is the logged in user | |
# check current energy points | |
session[:energy] | |
end | |
error '/profile' do #is this sinatra ruby code? please check sinatra docs | |
puts "Been an Error on Profile route and you coded to avoid this nasty stack...." | |
end | |
not_found do | |
# haml :about | |
# slim :about | |
puts "Be Cool! as ekoki.me is overloaded or your page not found!" | |
end | |
get '/home' do | |
session[:db_energy] = redis.get "energy" | |
erb :home | |
end | |
get '/logout' do | |
session.clear | |
redirect '/home' | |
end | |
after do | |
#session.clear | |
puts "After filter called to perform some task. such as session.clear" | |
end | |
######################## | |
__END__ | |
######################## | |
# Inline ERB Templates # | |
######################## | |
@@layout | |
<!DOCTYPE html> | |
<head> | |
<title> beta</title> | |
</head> | |
<body> | |
<h1> beta</h2> | |
<% if session['current_user.email'] %> | |
<p> "welcome back, " <%= session['current_user.email'] %> </p> | |
<% else %> | |
<p> <a href="/login">Login</a> | <a href="/register">Register</a> </p> | |
<% end %> | |
<%= yield %> | |
</body> | |
</html> | |
@@home | |
<h1> Welcome to RED </h2> | |
<% if session['current_user.email'] == "[email protected]" %> | |
<p> cool, the user is logged in the content is approved to be shown </p> | |
<p> <%= session[:energy] %> </p> | |
<% else %> | |
<p> "no energy for this user coz he is not logged in and the content is not approved to be shown" | |
</p> | |
<% end %> | |
<p> redis energy <%= session[:db_energy] %> </p> | |
@@profile | |
<h1> This is your profile </h2> | |
<p> <%= session[:energy] %> </p> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
=begin | |
################################# | |
All Copyrights reserved Mohamed Fouad | |
About this program, this is a signup/login code part of Torii authentication server | |
Version: 1.0.0 | |
This program uses semantic versioning | |
You can learn more about Semantic Versioning at http://semver.org/. | |
################################# | |
=end | |
require 'sinatra' | |
require 'redis' | |
require 'erb' | |
=begin | |
require 'sinatra/base' | |
module Sinatra | |
module PostGet | |
def post_get(route, &block) | |
get(route, &block) | |
post(route, &block) | |
end | |
end | |
# now we just need to register it via Sinatra::Base | |
register PostGet | |
end | |
require 'sinatra/postget' | |
post_get '/torri_ext' do | |
"Hi #{params[:name]}" | |
end | |
=end | |
redis = Redis.new() | |
configure do | |
enable :sessions | |
set :show_exceptions, false | |
# Database | |
#redis = Redis.new | |
# redis = Redis.new(:host => "10.0.1.1", :port => 6380) | |
end | |
before do | |
content_type:txt | |
# Storing initial values on the application level | |
@before_value = 'foo' | |
=begin if session[:user] = "database user" then | |
redirect '/profile' | |
else | |
redirect '/home' | |
end | |
=end | |
end | |
get '/' do | |
# session['current_user.email'] = "[email protected]" | |
redirect '/home' | |
end | |
get '/env' do | |
# will itrate over all the values in the @env variable and display them as output | |
request.env.map { |e| e.to_s + "\n" } | |
end | |
get '/cache' do | |
expires 3600, :public, :must_revalidate | |
"this page is rendered at #{Time.now}" | |
end | |
before '/profile' do | |
# check if profile user is the logged in user | |
# check current energy points & add it to session energy points variable | |
if session[:energy] then | |
session[:energy] = session[:energy] + 1 | |
redis.set "energy", session[:energy] | |
else | |
session[:energy] = 1 | |
redis.set "energy", session[:energy] | |
end | |
end | |
get '/profile' do | |
=begin | |
if session[:user] = "database user" then | |
# nothing you are logged in | |
erb :profile | |
else | |
redirect '/home' | |
end | |
=end | |
# add energy points | |
session['current_user.email'] = "[email protected]" | |
current_energy = redis.get "energy" | |
session[:energy] = current_energy.to_i + 1 | |
erb :profile | |
end | |
after '/profile' do | |
puts # check if profile user is the logged in user | |
# check current energy points | |
session[:energy] | |
end | |
error '/profile' do #is this sinatra ruby code? please check sinatra docs | |
puts "Been an Error on Profile route and you coded to avoid this nasty stack...." | |
end | |
not_found do | |
# haml :about | |
# slim :about | |
puts "Be Cool! as ekoki.me is overloaded or your page not found!" | |
end | |
get '/home' do | |
session[:db_energy] = redis.get "energy" | |
erb :home | |
end | |
get '/logout' do | |
session.clear | |
redirect '/home' | |
end | |
after do | |
#session.clear | |
puts "After filter called to perform some task. such as session.clear" | |
end | |
######################## | |
__END__ | |
######################## | |
# Inline ERB Templates # | |
######################## | |
@@layout | |
<!DOCTYPE html> | |
<head> | |
<title> beta</title> | |
</head> | |
<body> | |
<h1> beta</h2> | |
<% if session['current_user.email'] %> | |
<p> "welcome back, " <%= session['current_user.email'] %> </p> | |
<% else %> | |
<p> <a href="/login">Login</a> | <a href="/register">Register</a> </p> | |
<% end %> | |
<%= yield %> | |
</body> | |
</html> | |
@@home | |
<h1> Welcome to RED </h2> | |
<% if session['current_user.email'] == "[email protected]" %> | |
<p> cool, the user is logged in the content is approved to be shown </p> | |
<p> <%= session[:energy] %> </p> | |
<% else %> | |
<p> "no energy for this user coz he is not logged in and the content is not approved to be shown" | |
</p> | |
<% end %> | |
<p> redis energy <%= session[:db_energy] %> </p> | |
@@profile | |
<h1> This is your profile </h2> | |
<p> <%= session[:energy] %> </p> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment