Module: LcpRuby::ConditionServices::CurrentUserRole

Defined in:
lib/lcp_ruby/condition_services/current_user_role.rb

Overview

Roles are read via ‘LcpRuby.user_roles(user)`, which honours `Configuration#role_method` across `:none`/`:built_in`/`:external` auth modes. See docs/reference/condition-operators.md for usage.

Class Method Summary collapse

Class Method Details

.call(_record, context: {}, **args) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/lcp_ruby/condition_services/current_user_role.rb', line 8

def call(_record, context: {}, **args)
  user = context[:current_user]
  user_roles = LcpRuby.user_roles(user)

  if args.key?(:in)
    allowed = Array(args[:in]).map(&:to_s)
    return false if user_roles.empty?
    allowed.any? { |role| user_roles.include?(role) }
  elsif args.key?(:not_in)
    denied = Array(args[:not_in]).map(&:to_s)
    return true if user_roles.empty?
    denied.none? { |role| user_roles.include?(role) }
  else
    raise LcpRuby::ConditionError,
      "current_user_role service requires 'in:' or 'not_in:' argument"
  end
end