Skip to content

Instantly share code, notes, and snippets.

@rvanlieshout
Forked from azuby/gist:1335962
Created November 3, 2011 07:14
Show Gist options
  • Save rvanlieshout/1335969 to your computer and use it in GitHub Desktop.
Save rvanlieshout/1335969 to your computer and use it in GitHub Desktop.
def initialize(user)
if !user.nil? && !user.role.nil?
# internal employee
if user.company_id == 1
can :manage, :all
# consumer
else
user.permissions.each do |permission|
if permission.is_internal?
if permission.subject_class.constantize.user
can permission.action.to_sym, permission.subject_class.constantize, :company => { :id => user.company_id }, :user_id => [user.id, user.subordinate_ids ]
elsif permission.subject_class.constantize.users
can permission.action.to_sym, permission.subject_class.constantize, :company => { :id => user.company_id }, :user => { :id => [user.id, user.subordinate_ids ]}
end
else
can permission.action.to_sym, permission.subject_class.constantize
end
end
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment