Sha256: 4a0662d53614f1da7a040628bd03d7243b540e936bd6c87b2ba8154715e5a778

Contents?: true

Size: 1.04 KB

Versions: 7

Compression:

Stored size: 1.04 KB

Contents

require 'ood_support'

module OodAppkit
  module Validators
    # Class used to determine if user is in valid list of groups
    class Groups < Validator
      # @param groups [Array<#to_s>] list of groups
      # @param allow [Boolean] whether these groups are allowed access
      def initialize(groups: [], allow: true, **kwargs)
        super(kwargs)
        @groups = groups.map(&:to_s)
        @allow = allow
      end

      # Whether this validation was successful
      # @return [Boolean] whether successful
      def success?
        @allow ? in_user_groups?(@groups) : not_in_user_groups?(@groups)
      end

      private
        # List of groups user is in
        def user_groups
          OodSupport::User.new.groups.map(&:to_s)
        end

        # Whether any groups match user's groups
        def in_user_groups?(groups)
          !(groups & user_groups).empty?
        end

        # Whether groups don't correspond with any user group
        def not_in_user_groups?(groups)
          !in_user_groups?(groups)
        end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
ood_appkit-0.3.6 lib/ood_appkit/validators/groups.rb
ood_appkit-0.3.5 lib/ood_appkit/validators/groups.rb
ood_appkit-0.3.4 lib/ood_appkit/validators/groups.rb
ood_appkit-0.3.3 lib/ood_appkit/validators/groups.rb
ood_appkit-0.3.2 lib/ood_appkit/validators/groups.rb
ood_appkit-0.3.1 lib/ood_appkit/validators/groups.rb
ood_appkit-0.3.0 lib/ood_appkit/validators/groups.rb