Sha256: a11e0150928602932263db038a8f222bcb2b807d46c0add8455eead3118f6db6

Contents?: true

Size: 1.71 KB

Versions: 39

Compression:

Stored size: 1.71 KB

Contents

class Card
  module Auth
    # singleton permission methods
    module Permissions
      RECAPTCHA_DEFAULTS = {
        recaptcha_public_key: "6LeoHfESAAAAAN1NdQeYHREq4jTSQhu1foEzv6KC",
        recaptcha_private_key: "6LeoHfESAAAAAHLZpn7ijrO4_KGLEr2nGL4qjjis"
      }.freeze

      # user has "root" permissions
      # @return [true/false]
      def always_ok?
        usr_id = as_id
        return false unless usr_id
        always_ok_usr_id? usr_id
      end

      # specified user has root permission
      # @param usr_id [Integer]
      # @return [true/false]
      def always_ok_usr_id? usr_id
        return true if usr_id == Card::WagnBotID # cannot disable

        always = Card.cache.read("ALWAYS") || {}
        if always[usr_id].nil?
          always = always.dup if always.frozen?
          always[usr_id] = admin? usr_id
          Card.cache.write "ALWAYS", always
        end
        always[usr_id]
      end

      # list of names of cardtype cards that current user has perms to create
      # @return [Array of strings]
      def createable_types
        type_names =
          Auth.as_bot do
            Card.search(
              { type: Card::CardtypeID, return: :name,
                not: { codename: ["in"] + Card.config.non_createable_types } },
              "find createable types"
            )
          end

        type_names.select do |name|
          Card.new(type: name).ok? :create
        end.sort
      end

      # test whether user is an administrator
      # @param user_id [Integer]
      # @return [true/false]
      def admin? user_id
        has_role? user_id, Card::AdministratorID
      end

      def has_role? user_id, role_id
        Card[user_id].all_roles.include? role_id
      end
    end
  end
end

Version data entries

39 entries across 39 versions & 1 rubygems

Version Path
card-1.96.8 lib/card/auth/permissions.rb
card-1.96.7 lib/card/auth/permissions.rb
card-1.96.6 lib/card/auth/permissions.rb
card-1.96.5 lib/card/auth/permissions.rb
card-1.96.4 lib/card/auth/permissions.rb
card-1.96.3 lib/card/auth/permissions.rb
card-1.96.2 lib/card/auth/permissions.rb
card-1.96.1 lib/card/auth/permissions.rb
card-1.96.0 lib/card/auth/permissions.rb
card-1.95.3 lib/card/auth/permissions.rb
card-1.95.2 lib/card/auth/permissions.rb
card-1.95.1 lib/card/auth/permissions.rb
card-1.95.0 lib/card/auth/permissions.rb
card-1.94.1 lib/card/auth/permissions.rb
card-1.94.0 lib/card/auth/permissions.rb
card-1.93.13 lib/card/auth/permissions.rb
card-1.93.12 lib/card/auth/permissions.rb
card-1.93.11 lib/card/auth/permissions.rb
card-1.93.10 lib/card/auth/permissions.rb
card-1.93.9 lib/card/auth/permissions.rb