##// END OF EJS Templates
Image attachments are now sent inline to be viewed directly in the browser....
Image attachments are now sent inline to be viewed directly in the browser. git-svn-id: http://redmine.rubyforge.org/svn/trunk@642 e93f8b46-1217-0410-a6f0-8f06a7374b81

File last commit:

r558:136a2a614b23
r636:38e0c237a448
Show More
application.rb
175 lines | 5.3 KiB | text/x-ruby | RubyLexer
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 # redMine - project management software
# Copyright (C) 2006-2007 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
class ApplicationController < ActionController::Base
before_filter :check_if_login_required, :set_localization
filter_parameter_logging :password
Jean-Philippe Lang
Applied this fix http://dev.rubyonrails.org/ticket/4967 to solve namespaced models dependencies problem....
r558 REDMINE_SUPPORTED_SCM.each do |scm|
require_dependency "repository/#{scm.underscore}"
end
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 def logged_in_user=(user)
@logged_in_user = user
session[:user_id] = (user ? user.id : nil)
end
def logged_in_user
if session[:user_id]
@logged_in_user ||= User.find(session[:user_id])
else
nil
end
end
Jean-Philippe Lang
Modified logged_in_user_membership controller method so that it returns a role...
r412 # Returns the role that the logged in user has on the current project
# or nil if current user is not a member of the project
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 def logged_in_user_membership
Jean-Philippe Lang
Modified logged_in_user_membership controller method so that it returns a role...
r412 @user_membership ||= logged_in_user.role_for_project(@project)
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 end
# check if login is globally required to access the application
def check_if_login_required
Jean-Philippe Lang
Added autologin feature (disabled by default)....
r511 # no check needed if user is already logged in
return true if logged_in_user
# auto-login feature
autologin_key = cookies[:autologin]
if autologin_key && Setting.autologin?
self.logged_in_user = User.find_by_autologin_key(autologin_key)
end
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 require_login if Setting.login_required?
end
def set_localization
lang = begin
if self.logged_in_user and self.logged_in_user.language and !self.logged_in_user.language.empty? and GLoc.valid_languages.include? self.logged_in_user.language.to_sym
self.logged_in_user.language
elsif request.env['HTTP_ACCEPT_LANGUAGE']
accept_lang = parse_qvalues(request.env['HTTP_ACCEPT_LANGUAGE']).first.split('-').first
if accept_lang and !accept_lang.empty? and GLoc.valid_languages.include? accept_lang.to_sym
accept_lang
end
end
rescue
nil
end || Setting.default_language
set_language_if_valid(lang)
end
def require_login
unless self.logged_in_user
store_location
redirect_to :controller => "account", :action => "login"
return false
end
true
end
def require_admin
return unless require_login
unless self.logged_in_user.admin?
Jean-Philippe Lang
A 403 error page is now displayed (instead of a blank page) when trying to access a protected page....
r492 render_403
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 return false
end
true
end
# authorizes the user for the requested action.
def authorize(ctrl = params[:controller], action = params[:action])
Jean-Philippe Lang
Added the ability to archive projects:...
r546 unless @project.active?
@project = nil
render_404
return false
end
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 # check if action is allowed on public projects
if @project.is_public? and Permission.allowed_to_public "%s/%s" % [ ctrl, action ]
return true
end
# if action is not public, force login
return unless require_login
# admin is always authorized
return true if self.logged_in_user.admin?
# if not admin, check membership permission
Jean-Philippe Lang
Modified logged_in_user_membership controller method so that it returns a role...
r412 if logged_in_user_membership and Permission.allowed_to_role( "%s/%s" % [ ctrl, action ], logged_in_user_membership )
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 return true
end
Jean-Philippe Lang
A 403 error page is now displayed (instead of a blank page) when trying to access a protected page....
r492 render_403
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 false
end
# make sure that the user is a member of the project (or admin) if project is private
# used as a before_filter for actions that do not require any particular permission on the project
def check_project_privacy
Jean-Philippe Lang
Added the ability to archive projects:...
r546 unless @project.active?
@project = nil
render_404
return false
end
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 return true if @project.is_public?
return false unless logged_in_user
return true if logged_in_user.admin? || logged_in_user_membership
Jean-Philippe Lang
A 403 error page is now displayed (instead of a blank page) when trying to access a protected page....
r492 render_403
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 false
end
Jean-Philippe Lang
v0.2.0...
r5 # store current uri in session.
# return to this location by calling redirect_back_or_default
def store_location
Jean-Philippe Lang
* replaced :controller => '' broken statements by :controller => 'welcome'...
r172 session[:return_to_params] = params
Jean-Philippe Lang
v0.2.0...
r5 end
# move to the last store_location call or to the passed default one
def redirect_back_or_default(default)
Jean-Philippe Lang
* replaced :controller => '' broken statements by :controller => 'welcome'...
r172 if session[:return_to_params].nil?
Jean-Philippe Lang
v0.2.0...
r5 redirect_to default
else
Jean-Philippe Lang
* replaced :controller => '' broken statements by :controller => 'welcome'...
r172 redirect_to session[:return_to_params]
session[:return_to_params] = nil
Jean-Philippe Lang
v0.2.0...
r5 end
end
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330
Jean-Philippe Lang
A 403 error page is now displayed (instead of a blank page) when trying to access a protected page....
r492 def render_403
@html_title = "403"
@project = nil
render :template => "common/403", :layout => true, :status => 403
return false
end
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 def render_404
@html_title = "404"
render :template => "common/404", :layout => true, :status => 404
return false
end
# qvalues http header parser
# code taken from webrick
def parse_qvalues(value)
tmp = []
if value
parts = value.split(/,\s*/)
parts.each {|part|
if m = %r{^([^\s,]+?)(?:;\s*q=(\d+(?:\.\d+)?))?$}.match(part)
val = m[1]
q = (m[2] or 1).to_f
tmp.push([val, q])
end
}
tmp = tmp.sort_by{|val, q| -q}
tmp.collect!{|val, q| val}
end
return tmp
end
Jean-Philippe Lang
Initial commit...
r2 end