From a16b45eb6a26ad7738e5d919faaf515708507cbf Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Wed, 8 Feb 2012 22:38:02 +0000 Subject: [PATCH] Add convenience methods to make ACL use simpler --- app/controllers/trace_controller.rb | 2 +- app/controllers/user_controller.rb | 6 +++--- app/models/acl.rb | 8 ++++++++ 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/app/controllers/trace_controller.rb b/app/controllers/trace_controller.rb index dbb8a6f2c..0ab87f6af 100644 --- a/app/controllers/trace_controller.rb +++ b/app/controllers/trace_controller.rb @@ -163,7 +163,7 @@ class TraceController < ApplicationController trace = Trace.find(params[:id]) if trace.visible? and (trace.public? or (@user and @user == trace.user)) - if Acl.match(request.remote_ip).where(:k => "no_trace_download").exists? + if Acl.no_trace_download(request.remote_ip) render :nothing => true, :status => :forbidden elsif request.format == Mime::XML send_file(trace.xml_file, :filename => "#{trace.id}.xml", :type => Mime::XML.to_s, :disposition => 'attachment') diff --git a/app/controllers/user_controller.rb b/app/controllers/user_controller.rb index 1d86c0524..7b3b596df 100644 --- a/app/controllers/user_controller.rb +++ b/app/controllers/user_controller.rb @@ -38,7 +38,7 @@ class UserController < ApplicationController else render :action => 'terms' end - elsif params[:user] and Acl.match(request.remote_ip, params[:user][:email].split("@").last).where(:k => "no_account_creation").exists? + elsif params[:user] and Acl.no_account_creation(request.remote_ip, params[:user][:email].split("@").last) render :action => 'blocked' else session[:referer] = params[:referer] @@ -112,7 +112,7 @@ class UserController < ApplicationController else redirect_to :action => :account, :display_name => @user.display_name end - elsif Acl.match(request.remote_ip, params[:user][:email].split("@").last).where(:k => "no_account_creation").exists? + elsif Acl.no_account_creation(request.remote_ip, params[:user][:email].split("@").last) render :action => 'blocked' else @user = User.new(params[:user]) @@ -271,7 +271,7 @@ class UserController < ApplicationController :openid_url => params[:openid]) flash.now[:notice] = t 'user.new.openid association' - elsif Acl.match(request.remote_ip).where(:k => "no_account_creation").exists? + elsif Acl.no_account_creation(request.remote_ip) render :action => 'blocked' end end diff --git a/app/models/acl.rb b/app/models/acl.rb index e19c6988b..9938984aa 100644 --- a/app/models/acl.rb +++ b/app/models/acl.rb @@ -6,4 +6,12 @@ class Acl < ActiveRecord::Base condition = Acl.where("address >> ?", address) end end + + def self.no_account_creation(address, domain = nil) + self.match(address, domain).where(:k => "no_account_creation").exists? + end + + def self.no_trace_download(address, domain = nil) + self.match(address, domain).where(:k => "no_trace_download").exists? + end end -- 2.43.2