mirror of
https://github.com/rickbarrette/redmine_qbo.git
synced 2025-11-09 01:14:23 -05:00
Compare commits
31 Commits
0.4.2
...
permission
| Author | SHA1 | Date | |
|---|---|---|---|
| a34b6a07fc | |||
| 2ce811bbbf | |||
| 02153de8b0 | |||
| 68be20459b | |||
| bbd03cc337 | |||
| 4fc71a93f2 | |||
| 8e7e1908e4 | |||
| 89fba883ef | |||
| 15f317fba1 | |||
| 894ee9abfd | |||
| ca17807117 | |||
| a70ba2f164 | |||
| 78ac97298c | |||
| 72cd349c1b | |||
| 6fc1d27dca | |||
| 525c6b99d6 | |||
| 3eaff0ab30 | |||
| 85b40bc9cf | |||
| 37a2b95447 | |||
| 33feb91713 | |||
| f7357f30ce | |||
| c0ae01018b | |||
| 4353e910c8 | |||
| bef9774c4e | |||
| 863437b1b7 | |||
| 7cfa15910a | |||
| 2154a3d001 | |||
| fdab090a3d | |||
| 3f32b7fef1 | |||
| 14422bc549 | |||
| 6bb66597e8 |
@@ -27,7 +27,8 @@ class CustomersController < ApplicationController
|
|||||||
include SortHelper
|
include SortHelper
|
||||||
helper :timelog
|
helper :timelog
|
||||||
|
|
||||||
before_filter :require_user, :except => :view
|
before_filter :add_customer, :only => :new
|
||||||
|
before_filter :view_customer, :except => :new
|
||||||
skip_before_filter :verify_authenticity_token, :check_if_login_required, :only => [:view]
|
skip_before_filter :verify_authenticity_token, :check_if_login_required, :only => [:view]
|
||||||
|
|
||||||
default_search_scope :names
|
default_search_scope :names
|
||||||
@@ -144,6 +145,14 @@ class CustomersController < ApplicationController
|
|||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
|
def add_customer
|
||||||
|
global_check_permission(:add_customers)
|
||||||
|
end
|
||||||
|
|
||||||
|
def view_customer
|
||||||
|
global_check_permission(:view_customers)
|
||||||
|
end
|
||||||
|
|
||||||
def only_one_non_zero?( array )
|
def only_one_non_zero?( array )
|
||||||
found_non_zero = false
|
found_non_zero = false
|
||||||
array.each do |val|
|
array.each do |val|
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ class PaymentsController < ApplicationController
|
|||||||
|
|
||||||
include AuthHelper
|
include AuthHelper
|
||||||
|
|
||||||
before_filter :require_user
|
before_filter :check_permissions
|
||||||
|
|
||||||
def new
|
def new
|
||||||
@payment = Payment.new
|
@payment = Payment.new
|
||||||
@@ -37,6 +37,12 @@ end
|
|||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
|
def check_permissions
|
||||||
|
if !allowed_to?(:add_payments)
|
||||||
|
render :file => "public/401.html.erb", :status => :unauthorized, :layout =>true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def only_one_non_zero?( array )
|
def only_one_non_zero?( array )
|
||||||
found_non_zero = false
|
found_non_zero = false
|
||||||
array.each do |val|
|
array.each do |val|
|
||||||
|
|||||||
@@ -16,4 +16,38 @@ module AuthHelper
|
|||||||
render :file => "public/401.html.erb", :status => :unauthorized, :layout =>true
|
render :file => "public/401.html.erb", :status => :unauthorized, :layout =>true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def allowed_to?(action)
|
||||||
|
return false if User.current.nil?
|
||||||
|
project = Project.find(params[:project_id])
|
||||||
|
return false if project.nil?
|
||||||
|
return true if User.current.allowed_to?(action, project)
|
||||||
|
false
|
||||||
|
end
|
||||||
|
|
||||||
|
def check_permission(permission)
|
||||||
|
if !allowed_to?(permission)
|
||||||
|
render :file => "public/401.html.erb", :status => :unauthorized, :layout =>true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
def global_check_permission(permission)
|
||||||
|
if !globaly_allowed_to?(permission)
|
||||||
|
render :file => "public/401.html.erb", :status => :unauthorized, :layout =>true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def globaly_allowed_to?( action)
|
||||||
|
return false if User.current.nil?
|
||||||
|
|
||||||
|
projects = Project.all
|
||||||
|
projects.each { |p|
|
||||||
|
if User.current.allowed_to?(action, p)
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
}
|
||||||
|
false
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|||||||
15
init.rb
15
init.rb
@@ -48,17 +48,20 @@ Redmine::Plugin.register :redmine_qbo do
|
|||||||
# set per_page globally
|
# set per_page globally
|
||||||
WillPaginate.per_page = 10
|
WillPaginate.per_page = 10
|
||||||
|
|
||||||
|
permission :view_customers, :customers => :index, :public => false
|
||||||
|
permission :add_customers, :customers => :new, :public => false
|
||||||
|
permission :view_payments, :payments => :index, :public => false
|
||||||
|
permission :add_payments, :payments => :new, :public => false
|
||||||
|
permission :view_vehicles, :payments => :new, :public => false
|
||||||
|
|
||||||
# Register QBO top menu item
|
# Register QBO top menu item
|
||||||
#menu :top_menu, :qbo, { :controller => :qbo, :action => :index }, :caption => 'Quickbooks', :if => Proc.new { User.current.admin? }
|
#menu :top_menu, :qbo, { :controller => :qbo, :action => :index }, :caption => 'Quickbooks', :if => Proc.new { User.current.admin? }
|
||||||
menu :top_menu, :customers, { :controller => :customers, :action => :index }, :caption => 'Customers', :if => Proc.new {User.current.logged?}
|
menu :top_menu, :customers, { :controller => :customers, :action => :index }, :caption => 'Customers', :if => Proc.new {User.current.logged?}
|
||||||
menu :top_menu, :vehicles, { :controller => :vehicles, :action => :index }, :caption => 'Vehicles', :if => Proc.new { User.current.logged? }
|
menu :top_menu, :vehicles, { :controller => :vehicles, :action => :index }, :caption => 'Vehicles', :if => Proc.new { User.current.allowed_to?(:view_vehicles, @project) }
|
||||||
|
|
||||||
menu :application_menu, :new_customer, { :controller => :customers, :action => :new }, :caption => 'New Customer', :if => Proc.new { User.current.logged? }
|
menu :application_menu, :new_customer, { :controller => :customers, :action => :new }, :caption => 'New Customer', :if => Proc.new { User.current.allowed_to?(:add_customers, @project) }
|
||||||
menu :application_menu, :new_payment, { :controller => :payments, :action => :new }, :caption => 'New Payment', :if => Proc.new { User.current.logged? }
|
menu :application_menu, :new_payment, { :controller => :payments, :action => :new }, :caption => 'New Payment', :if => Proc.new { User.current.allowed_to?(:add_payments, @project)}
|
||||||
|
|
||||||
permission :customers, { :customers => [:index, :new] }, :public => false
|
|
||||||
menu :project_menu, :customers, { :controller => 'customers', :action => 'new' }, :caption => 'New Customer', :after => :new_issue, :param => :project_id
|
menu :project_menu, :customers, { :controller => 'customers', :action => 'new' }, :caption => 'New Customer', :after => :new_issue, :param => :project_id
|
||||||
|
|
||||||
permission :payments, { :payments => [:index, :new] }, :public => false
|
|
||||||
menu :project_menu, :payments, { :controller => 'payments', :action => 'new' }, :caption => 'New Payment', :after => :customers, :param => :project_id
|
menu :project_menu, :payments, { :controller => 'payments', :action => 'new' }, :caption => 'New Payment', :after => :customers, :param => :project_id
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user