module Sinatra::Backstage::User::Helper

Public Class Methods

included(app) click to toggle source
# File lib/sinatra/backstage/user/user_helper.rb, line 16
def self.included(app)
        if app.ancestors.include? Sinatra::Base
                app.set(:user_access) do |roles|
                        condition do
                                settings.site_routes.each do |controller, hash|
                                        if request.path =~ /^(#{hash['href']}$|#{hash['href']}\/.*$)/
                                                # puts "-- Backstage::UserHelper :user_access ( controller = #{controller} )"
                                                # puts "-- Backstage::UserHelper :user_access ( hash = #{hash} )"
                                                return hash['access'].compare(roles)
                                        end
                                end
                        end
                end

                ## Hooks
                app.before :user_access => [:anon] do
                        # puts "-- Backstage::User before authorized? = #{authorized?}"
                        redirect '/' if authorized?
                        # settings.site_routes[request.path]['active'] = true if settings.site_routes[request.path]
                end

                # app.after :user_access => [:anon] do
                #         settings.site_routes[request.path]['active'] = false if settings.site_routes[request.path]
                # end
        end
end

Public Instance Methods

authorized?() click to toggle source
# File lib/sinatra/backstage/user/user_helper.rb, line 53
def authorized?
        authorized_user.role != :anon
end
authorized_user() click to toggle source
# File lib/sinatra/backstage/user/user_helper.rb, line 57
def authorized_user
        if @authorized_user.nil?
                if cookies[:username] && cookies[:session]
                        user = settings.user_class.first :username => cookies[:username]
                        if user && user.session == cookies[:session]
                                return @authorized_user = user
                        end
                end
                @authorized_user = settings.user_class.new
        end
        @authorized_user
end
set_session(user) click to toggle source
# File lib/sinatra/backstage/user/user_helper.rb, line 43
def set_session(user)
        if user
                cookies[:username] = user.username
                cookies[:session] = user.session
        else
                cookies[:username] = nil
                cookies[:session] = nil
        end
end