Welcome to mirror list, hosted at ThFree Co, Russian Federation.

auth_helper.rb « gitlab « helpers « app - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: fbd52dbca3d3d4467a288c5ddd9ac5bed6644251 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
module Gitlab
  module AuthHelper
    PROVIDERS_WITH_ICONS = %w(twitter github gitlab bitbucket google_oauth2).freeze
    FORM_BASED_PROVIDERS = [/\Aldap/, 'kerberos'].freeze

    def ldap_enabled?
      Gitlab.config.ldap.enabled
    end

    def provider_has_icon?(name)
      PROVIDERS_WITH_ICONS.include?(name.to_s)
    end

    def auth_providers
      Gitlab::OAuth::Provider.providers
    end

    def label_for_provider(name)
      Gitlab::OAuth::Provider.label_for(name)
    end

    def form_based_provider?(name)
      FORM_BASED_PROVIDERS.any? { |pattern| pattern === name.to_s }
    end

    def form_based_providers
      auth_providers.select { |provider| form_based_provider?(provider) }
    end

    def button_based_providers
      auth_providers.reject { |provider| form_based_provider?(provider) }
    end

    def provider_image_tag(provider, size = 64)
      label = label_for_provider(provider)

      if provider_has_icon?(provider)
        file_name = "#{provider.to_s.split('_').first}_#{size}.png"

        image_tag("auth_buttons/#{file_name}", alt: label, title: "Sign in with #{label}")
      else
        label
      end
    end

    def auth_active?(provider)
      current_user.identities.exists?(provider: provider.to_s)
    end

    extend self
  end
end