mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-24 20:36:49 +00:00
Move more login handling out of Angular
This commit is contained in:
@@ -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'
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user