-
-
Notifications
You must be signed in to change notification settings - Fork 121
/
Copy pathuser_sessions_controller.rb
66 lines (55 loc) · 1.61 KB
/
user_sessions_controller.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# frozen_string_literal: true
class Spree::UserSessionsController < Devise::SessionsController
helper 'spree/base', 'spree/store'
include Spree::Core::ControllerHelpers::Auth
include Spree::Core::ControllerHelpers::Common
include Spree::Core::ControllerHelpers::Order
include Spree::Core::ControllerHelpers::Store
# This is included in ControllerHelpers::Order. We just want to call
# it after someone has successfully logged in.
after_action :set_current_order, only: :create
def create
authenticate_spree_user!
if spree_user_signed_in?
respond_to do |format|
format.html do
flash[:success] = I18n.t('spree.logged_in_succesfully')
redirect_back_or_default(after_sign_in_path_for(spree_current_user))
end
format.js { render success_json }
end
else
respond_to do |format|
format.html do
flash.now[:error] = t('devise.failure.invalid')
render :new
end
format.js do
render json: { error: t('devise.failure.invalid') },
status: :unprocessable_entity
end
end
end
end
protected
def translation_scope
'devise.user_sessions'
end
private
def accurate_title
I18n.t('spree.login')
end
def redirect_back_or_default(default)
redirect_to(session["spree_user_return_to"] || default)
session["spree_user_return_to"] = nil
end
def success_json
{
json: {
user: spree_current_user,
ship_address: spree_current_user.ship_address,
bill_address: spree_current_user.bill_address
}.to_json
}
end
end