- content_for :page_title do = t('auth.register') - content_for :header_tags do = render partial: 'shared/og', locals: { description: description_for_sign_up(@invite) } = simple_form_for(resource, as: resource_name, url: registration_path(resource_name), html: { novalidate: false }) do |f| = render 'auth/shared/progress', stage: 'details' %h1.title= t('auth.sign_up.title', domain: site_hostname) %p.lead= t('auth.sign_up.preamble') = render 'shared/error_messages', object: resource - if @invite.present? && @invite.autofollow? .fields-group.invited-by %p.hint= t('invites.invited_by') = render 'application/card', account: @invite.user.account .fields-group = f.simple_fields_for :account do |ff| = ff.input :username, append: "@#{site_hostname}", input_html: { 'aria-label': t('simple_form.labels.defaults.username'), autocomplete: 'off', placeholder: t('simple_form.labels.defaults.username'), pattern: '[a-zA-Z0-9_]+', maxlength: Account::USERNAME_LENGTH_LIMIT }, label: false, required: true, wrapper: :with_label = f.input :email, hint: false, input_html: { 'aria-label': t('simple_form.labels.defaults.email'), autocomplete: 'username' }, placeholder: t('simple_form.labels.defaults.email'), required: true = f.input :password, hint: false, input_html: { 'aria-label': t('simple_form.labels.defaults.password'), autocomplete: 'new-password', minlength: User.password_length.first, maxlength: User.password_length.last }, placeholder: t('simple_form.labels.defaults.password'), required: true = f.input :password_confirmation, hint: false, input_html: { 'aria-label': t('simple_form.labels.defaults.confirm_password'), autocomplete: 'new-password', maxlength: User.password_length.last }, placeholder: t('simple_form.labels.defaults.confirm_password'), required: true = f.input :confirm_password, as: :string, hint: false, input_html: { 'aria-label': t('simple_form.labels.defaults.honeypot', label: t('simple_form.labels.defaults.password')), autocomplete: 'off' }, placeholder: t('simple_form.labels.defaults.honeypot', label: t('simple_form.labels.defaults.password')), required: false = f.input :website, as: :url, input_html: { 'aria-label': t('simple_form.labels.defaults.honeypot', label: 'Website'), autocomplete: 'off' }, label: t('simple_form.labels.defaults.honeypot', label: 'Website'), required: false, wrapper: :with_label - if approved_registrations? && @invite.blank? %p.lead= t('auth.sign_up.manual_review', domain: site_hostname) .fields-group = f.simple_fields_for :invite_request, resource.invite_request || resource.build_invite_request do |invite_request_fields| = invite_request_fields.input :text, as: :text, hint: false, label: false, input_html: { maxlength: UserInviteRequest::TEXT_SIZE_LIMIT }, required: Setting.require_invite_text, wrapper: :with_block_label = hidden_field_tag :accept, params[:accept] = f.input :invite_code, as: :hidden .fields-group = f.input :agreement, as: :boolean, label: t('auth.user_agreement_html', privacy_policy_path: privacy_policy_path, terms_of_service_path: terms_of_service_path), required: false, wrapper: :with_label .actions = f.button :button, @invite.present? ? t('auth.register') : sign_up_message, type: :submit