diff --git a/app/assets/stylesheets/startup/startup-signin.scss b/app/assets/stylesheets/startup/startup-signin.scss index 6902a67fbb7beb44a3c5e82be5f12547cf03aa95..34f1a7d26e4ea3227554083f90754fc12a9c0502 100644 --- a/app/assets/stylesheets/startup/startup-signin.scss +++ b/app/assets/stylesheets/startup/startup-signin.scss @@ -294,11 +294,6 @@ fieldset:disabled a.btn { .mb-3 { margin-bottom: 1rem !important; } -@media (min-width: 576px) { - .mt-sm-0 { - margin-top: 0 !important; - } -} .text-center { text-align: center !important; } @@ -823,6 +818,11 @@ svg { .gl-mb-5 { margin-bottom: 1rem; } +@media (min-width: 36rem) { + .gl-sm-mt-0 { + margin-top: 0; + } +} .gl-text-left { text-align: left; } diff --git a/app/helpers/sessions_helper.rb b/app/helpers/sessions_helper.rb index ef737b25bc784acf5be4adad09d54cf59c255326..117f662fec6775e3127330543603db0e3492e8ee 100644 --- a/app/helpers/sessions_helper.rb +++ b/app/helpers/sessions_helper.rb @@ -1,6 +1,15 @@ # frozen_string_literal: true module SessionsHelper + include Gitlab::Utils::StrongMemoize + + def recently_confirmed_com? + strong_memoize(:recently_confirmed_com) do + ::Gitlab.dev_env_or_com? && + !!flash[:notice]&.include?(t(:confirmed, scope: [:devise, :confirmations])) + end + end + def unconfirmed_email? flash[:alert] == t(:unconfirmed, scope: [:devise, :failure]) end diff --git a/app/views/layouts/devise.html.haml b/app/views/layouts/devise.html.haml index ae7c160c060b1cf596ff32d14fa51f389d0bf900..3acc41f04b76105fddffc6932e86d8f1bf58862d 100644 --- a/app/views/layouts/devise.html.haml +++ b/app/views/layouts/devise.html.haml @@ -17,25 +17,26 @@ = current_appearance&.title.presence || "GitLab" .row.mb-3 .col-sm-7.order-12.order-sm-1.brand-holder - = brand_image - - if current_appearance&.description? - = brand_text - - else - %h3.mt-sm-0 - = _('A complete DevOps platform') + - unless recently_confirmed_com? + = brand_image + - if current_appearance&.description? + = brand_text + - else + %h3.gl-sm-mt-0 + = _('A complete DevOps platform') - %p - = _('GitLab is a single application for the entire software development lifecycle. From project planning and source code management to CI/CD, monitoring, and security.') + %p + = _('GitLab is a single application for the entire software development lifecycle. From project planning and source code management to CI/CD, monitoring, and security.') - %p - = _('This is a self-managed instance of GitLab.') + %p + = _('This is a self-managed instance of GitLab.') - if Gitlab::CurrentSettings.sign_in_text.present? = markdown_field(Gitlab::CurrentSettings.current_application_settings, :sign_in_text) = render_if_exists 'layouts/devise_help_text' - .col-sm-5.order-1.order-sm-12.new-session-forms-container + .col-sm-5.order-1.new-session-forms-container{ class: recently_confirmed_com? ? 'order-sm-first' : 'order-sm-12' } = yield = render 'devise/shared/footer', footer_message: footer_message diff --git a/ee/app/assets/stylesheets/startup/startup-signin.scss b/ee/app/assets/stylesheets/startup/startup-signin.scss index 6902a67fbb7beb44a3c5e82be5f12547cf03aa95..34f1a7d26e4ea3227554083f90754fc12a9c0502 100644 --- a/ee/app/assets/stylesheets/startup/startup-signin.scss +++ b/ee/app/assets/stylesheets/startup/startup-signin.scss @@ -294,11 +294,6 @@ fieldset:disabled a.btn { .mb-3 { margin-bottom: 1rem !important; } -@media (min-width: 576px) { - .mt-sm-0 { - margin-top: 0 !important; - } -} .text-center { text-align: center !important; } @@ -823,6 +818,11 @@ svg { .gl-mb-5 { margin-bottom: 1rem; } +@media (min-width: 36rem) { + .gl-sm-mt-0 { + margin-top: 0; + } +} .gl-text-left { text-align: left; } diff --git a/spec/helpers/sessions_helper_spec.rb b/spec/helpers/sessions_helper_spec.rb index 027943aecee235c8f0a024322c338a09b7386836..816e43669bd0e10bc0c68d09ff4986ee37cff637 100644 --- a/spec/helpers/sessions_helper_spec.rb +++ b/spec/helpers/sessions_helper_spec.rb @@ -3,6 +3,42 @@ require 'spec_helper' RSpec.describe SessionsHelper do + describe '#recently_confirmed_com?' do + subject { helper.recently_confirmed_com? } + + context 'when on .com' do + before do + allow(Gitlab).to receive(:dev_env_or_com?).and_return(true) + end + + it 'when flash notice is empty it is false' do + flash[:notice] = nil + expect(subject).to be false + end + + it 'when flash notice is anything it is false' do + flash[:notice] = 'hooray!' + expect(subject).to be false + end + + it 'when flash notice is devise confirmed message it is true' do + flash[:notice] = t(:confirmed, scope: [:devise, :confirmations]) + expect(subject).to be true + end + end + + context 'when not on .com' do + before do + allow(Gitlab).to receive(:dev_env_or_com?).and_return(false) + end + + it 'when flash notice is devise confirmed message it is false' do + flash[:notice] = t(:confirmed, scope: [:devise, :confirmations]) + expect(subject).to be false + end + end + end + describe '#unconfirmed_email?' do it 'returns true when the flash alert contains a devise failure unconfirmed message' do flash[:alert] = t(:unconfirmed, scope: [:devise, :failure]) diff --git a/spec/views/devise/sessions/new.html.haml_spec.rb b/spec/views/devise/sessions/new.html.haml_spec.rb index b5c69f4f04d051f05c4a102ab9b2d31c192f97db..d3552bf2e5a722b921671a57d988f778bdd51cd1 100644 --- a/spec/views/devise/sessions/new.html.haml_spec.rb +++ b/spec/views/devise/sessions/new.html.haml_spec.rb @@ -3,6 +3,32 @@ require 'spec_helper' RSpec.describe 'devise/sessions/new' do + describe 'marketing text' do + subject { render(template: 'devise/sessions/new', layout: 'layouts/devise') } + + before do + stub_devise + disable_captcha + allow(Gitlab).to receive(:dev_env_or_com?).and_return(true) + end + + it 'when flash is anything it renders marketing text' do + flash[:notice] = "You can't do that" + + subject + + expect(rendered).to have_content('A complete DevOps platform') + end + + it 'when flash notice is devise confirmed message it hides marketing text' do + flash[:notice] = t(:confirmed, scope: [:devise, :confirmations]) + + subject + + expect(rendered).not_to have_content('A complete DevOps platform') + end + end + describe 'ldap' do include LdapHelpers