Module: Card::Auth::Permissions

Included in:
Card::Auth
Defined in:
lib/card/auth/permissions.rb

Overview

singleton permission methods

Constant Summary collapse

RECAPTCHA_DEFAULTS =
{
  recaptcha_public_key: "6LeoHfESAAAAAN1NdQeYHREq4jTSQhu1foEzv6KC",
  recaptcha_private_key: "6LeoHfESAAAAAHLZpn7ijrO4_KGLEr2nGL4qjjis"
}.freeze

Instance Method Summary collapse

Instance Method Details

#admin?(user_id) ⇒ true/false

test whether user is an administrator

Parameters:

  • user_id (Integer)

Returns:

  • (true/false)


53
54
55
56
57
# File 'lib/card/auth/permissions.rb', line 53

def admin? user_id
  !Card[user_id].all_roles.find do |r|
    r == Card::AdministratorID
  end.nil?
end

#always_ok?true/false

user has "root" permissions

Returns:

  • (true/false)


12
13
14
15
16
# File 'lib/card/auth/permissions.rb', line 12

def always_ok?
  usr_id = as_id
  return false unless usr_id
  always_ok_usr_id? usr_id
end

#always_ok_usr_id?(usr_id) ⇒ true/false

specified user has root permission

Parameters:

  • usr_id (Integer)

Returns:

  • (true/false)


21
22
23
24
25
26
27
28
29
30
31
# File 'lib/card/auth/permissions.rb', line 21

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

#createable_typesArray of strings

list of names of cardtype cards that current user has perms to create

Returns:

  • (Array of strings)


35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/card/auth/permissions.rb', line 35

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