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_site_key: "6LdoqpgUAAAAAEdhJ4heI1h3XLlpXcDf0YubriCG",
  recaptcha_secret_key: "6LdoqpgUAAAAAP4Sz1L5PY6VKum_RFxq4-awj4BH"
}.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)


65
66
67
# File 'lib/card/auth/permissions.rb', line 65

def admin? user_id
  has_role? user_id, Card::AdministratorID
end

#always_cacheObject



41
42
43
# File 'lib/card/auth/permissions.rb', line 41

def always_cache
  Card.cache.read("ALWAYS") || {}
end

#always_ok?true/false

user has "root" permissions

Returns:

  • (true/false)


12
13
14
15
16
17
# 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, force_cache_update = false) ⇒ true/false

specified user has root permission

Parameters:

  • usr_id (Integer)

Returns:

  • (true/false)


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

def always_ok_usr_id? usr_id, force_cache_update=false
  return true if usr_id == Card::WagnBotID # cannot disable

  always = always_cache
  if always[usr_id].nil? || force_cache_update
    update_always_cache usr_id, admin?(usr_id)
  else
    always[usr_id]
  end
end

#createable_typesArray of strings

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

Returns:

  • (Array of strings)


47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/card/auth/permissions.rb', line 47

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

#has_role?(user_id, role_id) ⇒ Boolean

Returns:

  • (Boolean)


69
70
71
# File 'lib/card/auth/permissions.rb', line 69

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

#update_always_cache(usr_id, value) ⇒ Object



33
34
35
36
37
38
39
# File 'lib/card/auth/permissions.rb', line 33

def update_always_cache usr_id, value
  always = always_cache
  always = always.dup if always.frozen?
  always[usr_id] = value
  Card.cache.write "ALWAYS", always
  value
end