mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-02-05 22:26:07 +00:00
Handle user registration with turbo stream
This commit is contained in:
@@ -3,7 +3,6 @@
|
||||
module Spree
|
||||
class UsersController < ::BaseController
|
||||
include I18nHelper
|
||||
include CablecarResponses
|
||||
|
||||
layout 'darkswarm'
|
||||
|
||||
@@ -25,34 +24,14 @@ module Spree
|
||||
@unconfirmed_email = spree_current_user.unconfirmed_email
|
||||
end
|
||||
|
||||
# Endpoint for queries to check if a user is already registered
|
||||
def registered_email
|
||||
registered = Spree::User.find_by(email: params[:email]).present?
|
||||
|
||||
if registered
|
||||
render status: :ok, cable_ready: cable_car.
|
||||
inner_html(
|
||||
"#login-feedback",
|
||||
partial("layouts/alert",
|
||||
locals: { type: "alert", message: t('devise.failure.already_registered') })
|
||||
).
|
||||
dispatch_event(name: "login:modal:open")
|
||||
else
|
||||
head :not_found
|
||||
end
|
||||
end
|
||||
|
||||
def create
|
||||
@user = Spree::User.new(user_params)
|
||||
|
||||
if @user.save
|
||||
flash[:success] = t('devise.user_registrations.spree_user.signed_up_but_unconfirmed')
|
||||
render cable_ready: cable_car.redirect_to(url: main_app.root_path)
|
||||
redirect_to main_app.root_path
|
||||
else
|
||||
render status: :unprocessable_entity, cable_ready: cable_car.morph(
|
||||
"#signup-tab",
|
||||
partial("layouts/signup_tab", locals: { signup_form_user: @user })
|
||||
)
|
||||
render :create, status: :unprocessable_entity
|
||||
end
|
||||
end
|
||||
|
||||
@@ -97,14 +76,7 @@ module Spree
|
||||
end
|
||||
|
||||
def render_alert_timestamp_error_message
|
||||
render cable_ready: cable_car.inner_html(
|
||||
"#signup-feedback",
|
||||
partial("layouts/alert",
|
||||
locals: {
|
||||
type: "alert",
|
||||
message: InvisibleCaptcha.timestamp_error_message
|
||||
})
|
||||
)
|
||||
render :render_alert_timestamp_error_message
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
- signup_form_user = Spree::User.new if local_assigns[:signup_form_user].nil?
|
||||
|
||||
#signup-tab
|
||||
= form_with model: signup_form_user, url: spree.account_path, scope: :user, data: { remote: "true" } do |form|
|
||||
= form_with model: signup_form_user, url: spree.account_path, scope: :user, data: { turbo: true } do |form|
|
||||
.row
|
||||
.large-12.columns#signup-feedback
|
||||
|
||||
.row
|
||||
.large-12.columns
|
||||
= form.label :email, t(:signup_email)
|
||||
= form.email_field :email, { tabindex: 1, "data-login-modal-target": "email", "data-action": "input->login-modal#emailOnInput" }
|
||||
= form.email_field :email, { tabindex: 1 }
|
||||
= form.error_message_on :email
|
||||
.row
|
||||
.large-12.columns
|
||||
|
||||
2
app/views/spree/users/create.turbo_stream.haml
Normal file
2
app/views/spree/users/create.turbo_stream.haml
Normal file
@@ -0,0 +1,2 @@
|
||||
= turbo_stream.update 'signup-tab' do
|
||||
= render partial: 'layouts/signup_tab', locals: { signup_form_user: @user }
|
||||
@@ -0,0 +1,3 @@
|
||||
= turbo_stream.update 'signup-feedback' do
|
||||
= render partial: 'layouts/alert',
|
||||
locals: { type: "alert", message: InvisibleCaptcha.timestamp_error_message }
|
||||
@@ -16,7 +16,6 @@ Openfoodnetwork::Application.routes.draw do
|
||||
|
||||
get "/register", to: "registration#index", as: :registration
|
||||
get "/register/auth", to: "registration#authenticate", as: :registration_auth
|
||||
post "/user/registered_email", to: "spree/users#registered_email"
|
||||
resources :locales, only: [:show]
|
||||
|
||||
# Redirects to global website
|
||||
|
||||
@@ -55,22 +55,6 @@ RSpec.describe Spree::UsersController do
|
||||
end
|
||||
end
|
||||
|
||||
describe "#registered_email" do
|
||||
routes { Openfoodnetwork::Application.routes }
|
||||
|
||||
let!(:user) { create(:user) }
|
||||
|
||||
it "returns ok (200) if email corresponds to a registered user" do
|
||||
post :registered_email, params: { email: user.email }
|
||||
expect(response).to have_http_status(:ok)
|
||||
end
|
||||
|
||||
it "returns not_found (404) if email does not correspond to a registered user" do
|
||||
post :registered_email, params: { email: 'nonregistereduser@example.com' }
|
||||
expect(response).to have_http_status(:not_found)
|
||||
end
|
||||
end
|
||||
|
||||
describe '#load_object' do
|
||||
it 'redirects to signup path if user is not found' do
|
||||
allow(controller).to receive_messages(spree_current_user: nil)
|
||||
|
||||
Reference in New Issue
Block a user