module Sinatra::SinatraRedisAuth
Public Class Methods
registered(app)
click to toggle source
# File lib/sinatra-redis-auth.rb, line 14 def self.registered(app) app.use Rack::Session::Redis app.use Rack::Flash, :accessorize => [:notice, :error] app.set :sinatra_redis_auth_views, File.expand_path('../views/', __FILE__) app.set :default_url_after_sign_in, "/" app.set :default_url_after_sign_up, "/" app.set :default_url_after_sign_out, "/" app.before do if session[:user] @current_user = User.get(:email => session[:user]) else @current_user = nil end end app.get '/sign_in' do if session[:user] redirect options.default_url_after_sign_in else erb get_view_as_string("sign_in"), :layout => use_layout? end end app.post '/sign_in' do if user = User.authenticate(params[:email], params[:password]) pp user.email session[:user] = user.email if Rack.const_defined?('Flash') flash[:notice] = "Login successful." end if session[:return_to] redirect_url = session[:return_to] session[:return_to] = false redirect redirect_url else redirect options.default_url_after_sign_in end else if Rack.const_defined?('Flash') flash[:error] = "The email or password you entered is incorrect." end redirect '/sign_in' end end app.get '/sign_out' do session[:user] = nil if Rack.const_defined?('Flash') flash[:notice] = "Logout successful." end redirect options.default_url_after_sign_out end app.get '/sign_up' do if session[:user] redirect options.default_url_after_sign_up else erb get_view_as_string("sign_up"), :layout => use_layout? end end app.post '/sign_up' do @user = User.new(params) if @user.save session[:user] = @user.email if Rack.const_defined?('Flash') flash[:notice] = "Account created." end if session[:return_to] redirect_url = session[:return_to] session[:return_to] = false redirect session[:return_to] else redirect options.default_url_after_sign_up end else if Rack.const_defined?('Flash') flash[:error] = "There were some problems creating your account: #{@user.errors}." end redirect '/sign_up?' + hash_to_query_string(params['email']) end end app.get '/password/reset' do if session[:user] redirect options.default_url_after_sign_in else erb get_view_as_string("password_reset"), :layout => use_layout? end end app.post '/password/reset' do if user = User.get(:email => params[:email]) user.forgot_password flash[:notice] = "We send information for password reset to your email." Mailer.send_mail :to => user.email, :link => "http://#{request.host}/password/change/#{user.reset_token}" redirect '/sign_in' else if Rack.const_defined?('Flash') flash[:error] = "Email you entered isn't valid." end erb get_view_as_string("password_reset"), :layout => use_layout? end end app.get '/password/change/:reset_token' do if user = User.get_by_alias(:reset_token, params) session[:reset_token] = user.reset_token erb get_view_as_string("password_change"), :layout => use_layout? else flash[:error] = "Link is not valid!" redirect "/" end end app.post '/password/change' do if session[:reset_token] if user = User.get_by_alias(:reset_token, :reset_token => session[:reset_token]) user.change_password params[:password_new] user.reset_token = "" user.save session[:reset_token] = false session[:user] = user.email flash[:notice] = "Password sucesfully changed." redirect "/" else flash[:error] = "Link is not valid!" redirect "/" end else flash[:error] = "Link is not valid!" redirect "/" end end end