Passed
Push — master ( 921f25...cdf465 )
by Jesus
07:01
created

ApplicationHelper.can_reset_password()   A

Complexity

Conditions 1

Size

Total Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
c 0
b 0
f 0
dl 0
loc 4
rs 10
1
# frozen_string_literal: true
2
3
# BigBlueButton open source conferencing system - http://www.bigbluebutton.org/.
4
#
5
# Copyright (c) 2018 BigBlueButton Inc. and by respective authors (see below).
6
#
7
# This program is free software; you can redistribute it and/or modify it under the
8
# terms of the GNU Lesser General Public License as published by the Free Software
9
# Foundation; either version 3.0 of the License, or (at your option) any later
10
# version.
11
#
12
# BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
13
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
14
# PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
15
#
16
# You should have received a copy of the GNU Lesser General Public License along
17
# with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
18
19
require 'bbb_api'
20
require 'i18n/language/mapping'
21
22
module ApplicationHelper
23
  include MeetingsHelper
24
  include BbbApi
25
  include I18n::Language::Mapping
26
27
  # Gets all configured omniauth providers.
28
  def configured_providers
29
    Rails.configuration.providers.select do |provider|
30
      Rails.configuration.send("omniauth_#{provider}")
31
    end
32
  end
33
34
  # Determines which providers can show a login button in the login modal.
35
  def iconset_providers
36
    providers = configured_providers & [:google, :twitter, :office365, :ldap]
37
38
    providers.delete(:twitter) if session[:old_twitter_user_id]
39
40
    providers
41
  end
42
43
  # Generates the login URL for a specific provider.
44
  def omniauth_login_url(provider)
45
    if provider == :ldap
46
      ldap_signin_path
47
    else
48
      "#{Rails.configuration.relative_url_root}/auth/#{provider}"
49
    end
50
  end
51
52
  # Determine if Greenlight is configured to allow user signups.
53
  def allow_user_signup?
54
    Rails.configuration.allow_user_signup
55
  end
56
57
  # Determines if the BigBlueButton endpoint is the default.
58
  def bigbluebutton_endpoint_default?
59
    Rails.configuration.bigbluebutton_endpoint_default == Rails.configuration.bigbluebutton_endpoint
60
  end
61
62
  # Returns language selection options
63
  def language_options
64
    locales = I18n.available_locales
65
    language_opts = [['<<<< ' + t("language_default") + ' >>>>', "default"]]
66
    locales.each do |locale|
67
      language_mapping = I18n::Language::Mapping.language_mapping_list[locale.to_s.gsub("_", "-")]
68
      language_opts.push([language_mapping["nativeName"], locale.to_s])
69
    end
70
    language_opts.sort
71
  end
72
73
  # Parses markdown for rendering.
74
  def markdown(text)
75
    markdown = Redcarpet::Markdown.new(Redcarpet::Render::HTML,
76
      no_intra_emphasis: true,
77
      fenced_code_blocks: true,
78
      disable_indented_code_blocks: true,
79
      autolink: true,
80
      tables: true,
81
      underline: true,
82
      highlight: true)
83
84
    markdown.render(text).html_safe
85
  end
86
87
  def allow_greenlight_accounts?
88
    return Rails.configuration.allow_user_signup unless Rails.configuration.loadbalanced_configuration
89
    return false unless @user_domain && !@user_domain.empty? && Rails.configuration.allow_user_signup
90
    return false if @user_domain == "greenlight"
91
    # Proceed with retrieving the provider info
92
    begin
93
      provider_info = retrieve_provider_info(@user_domain, 'api2', 'getUserGreenlightCredentials')
94
      provider_info['provider'] == 'greenlight'
95
    rescue => e
96
      logger.info e
97
      false
98
    end
99
  end
100
101
  # Return all the translations available in the client side through javascript
102
  def current_translations
103
    @translations ||= I18n.backend.send(:translations)
104
    @translations[I18n.locale].with_indifferent_access[:javascript] || {}
105
  end
106
107
  # Returns the page that the logo redirects to when clicked on
108
  def home_page
109
    return root_path unless current_user
110
    return admins_path if current_user.has_role? :super_admin
111
    current_user.main_room
112
  end
113
114
  def role_colour(role)
115
    role.colour || Rails.configuration.primary_color_default
116
  end
117
118
  def translated_role_name(role)
119
    if role.name == "denied"
120
      I18n.t("roles.banned")
121
    elsif role.name == "pending"
122
      I18n.t("roles.pending")
123
    elsif role.name == "admin"
124
      I18n.t("roles.admin")
125
    elsif role.name == "user"
126
      I18n.t("roles.user")
127
    else
128
      role.name
129
    end
130
  end
131
132
  def can_reset_password
133
    # Check if admin is editting user
134
    Rails.application.routes.recognize_path(request.env['PATH_INFO'])[:action] == "edit_user"
135
  end
136
end
137