cartodb-4.29/app/helpers/login_helper.rb
2020-06-15 10:58:47 +08:00

78 lines
2.3 KiB
Ruby

module LoginHelper
DEFAULT_BACKGROUND_COLOR = "#F9F9F9".freeze
def background
base_color = (@organization.present? && @organization.color.present?) ? @organization.color : DEFAULT_BACKGROUND_COLOR
color = color_to_rgb(base_color)
"background-image: linear-gradient(0deg, #F9F9F9 70%, rgba(#{color}, 0.4) 100%);"
end
def color_to_rgb(hex_color)
hex_color = hex_color.delete('#')
rgb = hex_color.scan(/../).map(&:hex)
"#{rgb[0]}, #{rgb[1]}, #{rgb[2]}"
end
def darken_color(hex_color, amount=0.4)
hex_color = hex_color.gsub('#','')
rgb = hex_color.scan(/../).map {|color| color.hex}
rgb[0] = (rgb[0].to_i * amount).round
rgb[1] = (rgb[1].to_i * amount).round
rgb[2] = (rgb[2].to_i * amount).round
"#%02x%02x%02x" % rgb
end
def organization_color(organization)
!organization.nil? ? darken_color(organization.color, 0.4) : "#292E33"
end
def render_organization_avatar
brand_path = image_path("layout/sessions/brand.png")
if @organization && @organization.name != 'team' && @organization.avatar_url.present?
avatar_url = @organization.avatar_url.sub(/^https?\:/, '')
"<picture class=\"Navbar-brand\">
<img src=\"#{avatar_url}\" alt=\"#{@organization.name}\" height=\"48\" />
</picture>
<sup>
<img src=\"#{brand_path}\" alt=\"CartoDB\" height=\"26\" width=\"26\">
</sup>".html_safe
else
"<picture class=\"Navbar-brand\">
<source type='image/svg+xml' srcset=\"#{brand_path}\">
<img src=\"#{brand_path}\" alt='CARTO' height=\"48\" width=\"48\" />
</picture>".html_safe
end
end
def forget_password_url(organization_name: nil)
if organization_name
"#{CartoDB.base_url(organization_name)}/password_resets/new"
elsif CartoDB.account_host
"#{request.protocol}#{CartoDB.account_host}/password_resets/new"
else
CartoDB.url(self, 'new_password_reset')
end
end
def cdb_logout
logout(CartoDB.extract_subdomain(request))
logout
if env['warden']
env['warden'].logout
warden_sessions = request.session.to_hash.select do |k, _|
k.start_with?("warden.user") && !k.end_with?(".session")
end
warden_sessions.each do |_, value|
env['warden'].logout(value) if warden_proxy.authenticated?(value)
end
end
end
end