def permitted_to! (privilege, object_or_sym = nil, options = {}, &block)
context = object = nil
if object_or_sym.nil?
context = self.class.decl_auth_context
elsif !object_or_sym.respond_to?(:proxy_reflection) and object_or_sym.is_a?(Symbol)
context = object_or_sym
else
object = object_or_sym
end
non_bang = options.delete(:non_bang)
args = [
privilege,
{:user => current_user,
:object => object,
:context => context,
:skip_attribute_test => object.nil?}.merge(options)
]
if non_bang
authorization_engine.permit?(*args, &block)
else
authorization_engine.permit!(*args, &block)
end
end