Move more login handling out of Angular

This commit is contained in:
Matt-Yorkley
2022-01-21 14:33:32 +00:00
parent 77d8e7da90
commit 13a7fb79cf
5 changed files with 23 additions and 17 deletions

View File

@@ -1,4 +1,4 @@
angular.module('Darkswarm').controller "CheckoutCtrl", ($scope, localStorageService, Checkout, CurrentUser, CurrentHub, AuthenticationService, SpreeUser, $http) ->
angular.module('Darkswarm').controller "CheckoutCtrl", ($scope, localStorageService, Checkout, CurrentUser, CurrentHub, $http) ->
$scope.Checkout = Checkout
$scope.submitted = false
@@ -35,14 +35,9 @@ angular.module('Darkswarm').controller "CheckoutCtrl", ($scope, localStorageServ
$scope.$broadcast 'purchaseFormInvalid', $scope.formdata
$scope.ensureUserIsGuest = (callback = null) ->
$http.post("/user/registered_email", {email: $scope.order.email}).then (response)->
if response.data.registered == true
$scope.promptLogin()
else
$http.post("/user/registered_email", {email: $scope.order.email})
.then (response)->
window.CableReady.perform(response.data)
.catch ->
$scope.validateForm() if $scope.submitted
callback() if callback
$scope.promptLogin = ->
SpreeUser.spree_user.email = $scope.order.email
AuthenticationService.pushMessage t('devise.failure.already_registered')
AuthenticationService.open '/login'

View File

@@ -1,4 +1,4 @@
angular.module('Darkswarm').controller "DetailsCtrl", ($scope, $timeout, $http, CurrentUser, AuthenticationService, SpreeUser, $controller) ->
angular.module('Darkswarm').controller "DetailsCtrl", ($scope, $timeout, $http, CurrentUser, SpreeUser, $controller) ->
angular.extend this, $controller('FieldsetMixin', {$scope: $scope})
$scope.name = "details"

View File

@@ -27,8 +27,18 @@ module Spree
# Endpoint for queries to check if a user is already registered
def registered_email
user = Spree::User.find_by email: params[:email]
render json: { registered: user.present? }
registered = Spree::User.find_by(email: params[:email]).present?
if registered
render status: :ok, operations: 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

View File

@@ -14,6 +14,7 @@ import { CableCar } from "mrujs/plugins"
import * as Turbo from "@hotwired/turbo"
window.Turbo = Turbo
window.CableReady = CableReady
mrujs.start({
plugins: [
new CableCar(CableReady)

View File

@@ -60,14 +60,14 @@ describe Spree::UsersController, type: :controller do
let!(:user) { create(:user) }
it "returns true if email corresponds to a registered user" do
it "returns ok (200) if email corresponds to a registered user" do
post :registered_email, params: { email: user.email }
expect(json_response['registered']).to eq true
expect(response).to have_http_status(:ok)
end
it "returns false if email does not correspond to a registered user" do
it "returns not_found (404) if email does not correspond to a registered user" do
post :registered_email, params: { email: 'nonregistereduser@example.com' }
expect(json_response['registered']).to eq false
expect(response).to have_http_status(:not_found)
end
end