lib/ddr/auth/auth_context.rb in ddr-models-2.4.15 vs lib/ddr/auth/auth_context.rb in ddr-models-2.4.16
- old
+ new
@@ -7,10 +7,24 @@
def initialize(user = nil, env = nil)
@user = user
@env = env
end
+ def ability
+ if anonymous?
+ AnonymousAbility.new(self)
+ elsif superuser?
+ SuperuserAbility.new(self)
+ else
+ default_ability_class.new(self)
+ end
+ end
+
+ def default_ability_class
+ Ddr::Auth::default_ability.constantize
+ end
+
# Return whether a user is absent from the auth context.
# @return [Boolean]
def anonymous?
user.nil?
end
@@ -23,9 +37,13 @@
# Return whether context is authenticated in superuser scope.
# @return [Boolean]
def superuser?
env && env.key?("warden") && env["warden"].authenticate?(scope: :superuser)
+ end
+
+ def metadata_manager?
+ member_of? Ddr::Auth.metadata_managers_group
end
# Return the user agent for this context.
# @return [String] or nil, if auth context is anonymous/
def agent