Module: PrxAuth::Rails::UserInfo

Included in:
Controller
Defined in:
lib/prx_auth/rails/ext/controller/user_info.rb

Constant Summary collapse

PRX_USER_INFO_SESSION_KEY =
"prx.auth.info".freeze
PRX_ADMIN_SCOPE =
"prxadmin".freeze

Instance Method Summary collapse

Instance Method Details

#current_userObject



9
10
11
# File 'lib/prx_auth/rails/ext/controller/user_info.rb', line 9

def current_user
  prx_auth_token
end

#current_user_access?(scope = :read_private) ⇒ Boolean

Returns:

  • (Boolean)


13
14
15
# File 'lib/prx_auth/rails/ext/controller/user_info.rb', line 13

def current_user_access?(scope = :read_private)
  current_user&.globally_authorized?(scope) || current_user&.(scope)&.any?
end

#current_user_admin?Boolean

Returns:

  • (Boolean)


42
43
44
# File 'lib/prx_auth/rails/ext/controller/user_info.rb', line 42

def current_user_admin?
  current_user&.scopes&.include?(PRX_ADMIN_SCOPE)
end

#current_user_appsObject



28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/prx_auth/rails/ext/controller/user_info.rb', line 28

def current_user_apps
  apps = (.try(:[], "apps") || []).map do |name, url|
    label = name.sub(/^https?:\/\//, "").sub(/\..+/, "").capitalize
    ["PRX #{label}", url]
  end

  # only return entire list in development
  if ::Rails.env.production? || ::Rails.env.staging?
    apps.to_h.select { |k, v| v.match?(/\.(org|tech)/) }
  else
    apps.to_h
  end
end

#current_user_infoObject



17
18
19
20
21
22
# File 'lib/prx_auth/rails/ext/controller/user_info.rb', line 17

def 
  session[PRX_USER_INFO_SESSION_KEY] ||= begin
    info = fetch_userinfo
    info.slice("name", "preferred_username", "email", "image_href", "apps")
  end
end

#current_user_nameObject



24
25
26
# File 'lib/prx_auth/rails/ext/controller/user_info.rb', line 24

def current_user_name
  ["name"] || ["preferred_username"] || ["email"]
end

#current_user_wildcard?Boolean

Returns:

  • (Boolean)


46
47
48
# File 'lib/prx_auth/rails/ext/controller/user_info.rb', line 46

def current_user_wildcard?
  current_user&.globally_authorized?(:read_private)
end