#
# file:: application.rb
# author:: Jon A. Lambert
# version:: 0.1.0
# date:: 1/6/2006
#
# This source code copyright (C) 2006 by Jon A. Lambert
# All rights reserved.
#
# Released under the terms of the TeensyWeb Public License
# See LICENSE file for additional information.
#
#
# This code originally written by Tobias Luetke and part of
# login_generator (1.1.0) and found in login_system.rb.
#
# Filters added to this controller will be run for all controllers in the application.
# Likewise, all the methods added will be available for all controllers.
class ApplicationController < ActionController::Base
model :user
helper_method :user?
helper_method :admin?
helper_method :owner?
helper_method :msie?
def msie?
puts request
if request.env['HTTP_USER_AGENT'] =~ /IE/
true
else
false
end
end
def user?
!session['user'].nil?
end
def owner?(uid)
!session['user'].nil? && session['user']['id'] == uid
end
def admin?
user? && session['user'].admin == 1
end
# admin_required filter. add
#
# before_filter :admin_required
#
# if the controller should be under any rights management.
# for finer access control you can overwrite
#
# def authorize?(user)
#
def admin_required
return true if admin?
# store current location so that we can
# come back after the user logged in
store_location
# call overwriteable reaction to unauthorized access
flash['notice'] = "Admin priviledges required"
redirect_back_or_default :controller=>"wiki"
return false
end
# login_required filter. add
#
# before_filter :login_required
#
# if the controller should be under any rights management.
# for finer access control you can overwrite
#
# def authorize?(user)
#
def login_required
return true if user?
# store current location so that we can
# come back after the user logged in
store_location
# call overwriteable reaction to unauthorized access
redirect_to :controller=>"account", :action =>"login"
return false
end
# store current uri in the session.
# we can return to this location by calling return_location
def store_location
session['return_to'] = request.request_uri
end
# move to the last store_location call or to the passed default one
def redirect_back_or_default(default)
if session['return_to'].nil?
redirect_to default
else
redirect_to_url session['return_to']
session['return_to'] = nil
end
end
end