stay_commerce 0.1.8 → 0.1.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/assets/javascripts/stay/admin/property.js +8 -8
- data/app/controllers/devise/api/tokens_controller.rb +185 -0
- data/app/controllers/stay/api/v1/profiles_controller.rb +9 -5
- data/app/controllers/stay/api/v1/property_categories_controller.rb +1 -1
- data/app/controllers/stay/api/v1/property_types_controller.rb +18 -2
- data/app/models/stay/user.rb +0 -1
- data/app/serializers/user_serializer.rb +0 -4
- data/app/services/devise/api/resource_owner_service/authenticate.rb +28 -0
- data/app/services/devise/api/resource_owner_service/sign_in.rb +31 -0
- data/app/services/devise/api/resource_owner_service/social_authenticate.rb +26 -0
- data/app/services/devise/api/resource_owner_service/social_sign_in.rb +30 -0
- data/app/services/devise/api/tokens_service/create.rb +45 -0
- data/app/views/stay/admin/shared/_store_switcher.html.erb +0 -30
- data/lib/stay/version.rb +1 -1
- metadata +12 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b24ed7bc626048ec0567a639f138b6177756960fb6b4206ec03e85802e016c67
|
4
|
+
data.tar.gz: ee0e76e20df358f79a4199b27678cb47d931adec21fabcb6c52c031737bcf820
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 82f905a9fac7c37250665077ced813b2a1e1563250835c0e757df0a506a370a73bf4b4444e0e47d733d0510bcbf6a90cb511e61721b6b6d701b7f3e016862135
|
7
|
+
data.tar.gz: 94e34f1b56d89639347113ea1bd3180fa70d9039446aaef09974d2f2e1d11f1279e18a63f4590f34d75e73b80ce70cae1a13235fcfccd77aec4cfb23b376d576
|
@@ -25,13 +25,13 @@ $(document).ready(function() {
|
|
25
25
|
const roomTypeField = document.getElementById('room_type_field');
|
26
26
|
const propertyCategoryData = document.getElementById('property-category-data');
|
27
27
|
|
28
|
-
const roomTypesByCategory = JSON.parse(propertyCategoryData.getAttribute('data-room-types'));
|
28
|
+
// const roomTypesByCategory = JSON.parse(propertyCategoryData.getAttribute('data-room-types'));
|
29
29
|
|
30
|
-
window.updateRoomType = function(selectedCategoryId) {
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
};
|
30
|
+
// window.updateRoomType = function(selectedCategoryId) {
|
31
|
+
// if (roomTypesByCategory[selectedCategoryId]) {
|
32
|
+
// roomTypeField.value = roomTypesByCategory[selectedCategoryId];
|
33
|
+
// } else {
|
34
|
+
// roomTypeField.value = '';
|
35
|
+
// }
|
36
|
+
// };
|
37
37
|
});
|
@@ -0,0 +1,185 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# rubocop:disable Metrics/ClassLength
|
4
|
+
module Devise
|
5
|
+
module Api
|
6
|
+
class TokensController < Devise.api.config.base_controller.constantize
|
7
|
+
wrap_parameters false
|
8
|
+
skip_before_action :verify_authenticity_token, raise: false
|
9
|
+
before_action :authenticate_devise_api_token!, only: %i[info]
|
10
|
+
|
11
|
+
respond_to :json
|
12
|
+
|
13
|
+
# rubocop:disable Metrics/AbcSize
|
14
|
+
def sign_up
|
15
|
+
unless Devise.api.config.sign_up.enabled
|
16
|
+
error_response = Devise::Api::Responses::ErrorResponse.new(request, error: :sign_up_disabled,
|
17
|
+
resource_class: resource_class)
|
18
|
+
|
19
|
+
return render json: error_response.body, status: error_response.status
|
20
|
+
end
|
21
|
+
|
22
|
+
Devise.api.config.before_sign_up.call(sign_up_params, request, resource_class)
|
23
|
+
|
24
|
+
service = Devise::Api::ResourceOwnerService::SignUp.new(params: sign_up_params,
|
25
|
+
resource_class: resource_class).call
|
26
|
+
if service.success?
|
27
|
+
token = service.success
|
28
|
+
|
29
|
+
call_devise_trackable!(token.resource_owner)
|
30
|
+
|
31
|
+
token_response = Devise::Api::Responses::TokenResponse.new(request, token: token, action: __method__)
|
32
|
+
Devise.api.config.after_successful_sign_up.call(token.resource_owner, token, request)
|
33
|
+
assign_role(token.resource_owner) if token.resource_owner
|
34
|
+
data = ActiveModelSerializers::SerializableResource.new(token.resource_owner, serializer: UserSerializer).as_json
|
35
|
+
UserMailer.welcome_email(token.resource_owner).deliver_later if token.resource_owner
|
36
|
+
return render json: { access_token: token_response&.token.access_token, success: true }, status: token_response.status
|
37
|
+
end
|
38
|
+
|
39
|
+
error_response = Devise::Api::Responses::ErrorResponse.new(request,
|
40
|
+
resource_class: resource_class,
|
41
|
+
**service.failure)
|
42
|
+
|
43
|
+
error_message = error_response.body[:error_description].is_a?(Array) ? error_response.body[:error_description].join : error_response.body[:error_description].to_s
|
44
|
+
render json: { error: error_message, success: false }, status: error_response.status
|
45
|
+
end
|
46
|
+
# rubocop:enable Metrics/AbcSize
|
47
|
+
|
48
|
+
# rubocop:disable Metrics/AbcSize
|
49
|
+
def sign_in
|
50
|
+
Devise.api.config.before_sign_in.call(sign_in_params, request, resource_class)
|
51
|
+
service = Devise::Api::ResourceOwnerService::SignIn.new(params: sign_in_params,
|
52
|
+
resource_class: resource_class).call
|
53
|
+
|
54
|
+
if service.success?
|
55
|
+
token = service.success
|
56
|
+
|
57
|
+
call_devise_trackable!(token.resource_owner)
|
58
|
+
|
59
|
+
token_response = Devise::Api::Responses::TokenResponse.new(request, token: service.success,
|
60
|
+
action: __method__)
|
61
|
+
Devise.api.config.after_successful_sign_in.call(token.resource_owner, token, request)
|
62
|
+
data = ActiveModelSerializers::SerializableResource.new(token.resource_owner, serializer: UserSerializer).as_json
|
63
|
+
return render json: { access_token: token_response&.token.access_token, success: true }, status: token_response.status
|
64
|
+
end
|
65
|
+
|
66
|
+
error_response = Devise::Api::Responses::ErrorResponse.new(request,
|
67
|
+
resource_class: resource_class,
|
68
|
+
**service.failure)
|
69
|
+
error_message = error_response.body[:error_description].is_a?(Array) ? error_response.body[:error_description].join : error_response.body[:error_description].to_s
|
70
|
+
|
71
|
+
render json: { error: error_message, success: false }, status: :unprocessable_entity
|
72
|
+
end
|
73
|
+
# rubocop:enable Metrics/AbcSize
|
74
|
+
|
75
|
+
def info
|
76
|
+
token_response = Devise::Api::Responses::TokenResponse.new(request, token: current_devise_api_token,
|
77
|
+
action: __method__)
|
78
|
+
data = ActiveModelSerializers::SerializableResource.new(token_response.resource_owner, serializer: UserSerializer).as_json
|
79
|
+
render json: { data: data, success: true }, status: token_response.status
|
80
|
+
end
|
81
|
+
|
82
|
+
# rubocop:disable Metrics/AbcSize
|
83
|
+
def revoke
|
84
|
+
Devise.api.config.before_revoke.call(current_devise_api_token, request)
|
85
|
+
|
86
|
+
service = Devise::Api::TokensService::Revoke.new(devise_api_token: current_devise_api_token).call
|
87
|
+
|
88
|
+
if service.success?
|
89
|
+
token_response = Devise::Api::Responses::TokenResponse.new(request, token: service.success,
|
90
|
+
action: __method__)
|
91
|
+
|
92
|
+
Devise.api.config.after_successful_revoke.call(service.success&.resource_owner, service.success, request)
|
93
|
+
|
94
|
+
return render json: token_response.body, status: token_response.status
|
95
|
+
end
|
96
|
+
|
97
|
+
error_response = Devise::Api::Responses::ErrorResponse.new(request,
|
98
|
+
resource_class: resource_class,
|
99
|
+
**service.failure)
|
100
|
+
|
101
|
+
render json: error_response.body, status: error_response.status
|
102
|
+
end
|
103
|
+
# rubocop:enable Metrics/AbcSize
|
104
|
+
|
105
|
+
# rubocop:disable Metrics/AbcSize
|
106
|
+
def refresh
|
107
|
+
unless Devise.api.config.refresh_token.enabled
|
108
|
+
error_response = Devise::Api::Responses::ErrorResponse.new(request,
|
109
|
+
resource_class: resource_class,
|
110
|
+
error: :refresh_token_disabled)
|
111
|
+
|
112
|
+
return render json: error_response.body, status: error_response.status
|
113
|
+
end
|
114
|
+
|
115
|
+
if current_devise_api_refresh_token.blank?
|
116
|
+
error_response = Devise::Api::Responses::ErrorResponse.new(request, error: :invalid_token,
|
117
|
+
resource_class: resource_class)
|
118
|
+
|
119
|
+
return render json: error_response.body, status: error_response.status
|
120
|
+
end
|
121
|
+
|
122
|
+
if current_devise_api_refresh_token.revoked?
|
123
|
+
error_response = Devise::Api::Responses::ErrorResponse.new(request, error: :revoked_token,
|
124
|
+
resource_class: resource_class)
|
125
|
+
|
126
|
+
return render json: error_response.body, status: error_response.status
|
127
|
+
end
|
128
|
+
|
129
|
+
Devise.api.config.before_refresh.call(current_devise_api_refresh_token, request)
|
130
|
+
|
131
|
+
service = Devise::Api::TokensService::Refresh.new(devise_api_token: current_devise_api_refresh_token).call
|
132
|
+
|
133
|
+
if service.success?
|
134
|
+
token_response = Devise::Api::Responses::TokenResponse.new(request, token: service.success,
|
135
|
+
action: __method__)
|
136
|
+
|
137
|
+
Devise.api.config.after_successful_refresh.call(service.success.resource_owner, service.success, request)
|
138
|
+
|
139
|
+
return render json: token_response.body, status: token_response.status
|
140
|
+
end
|
141
|
+
|
142
|
+
error_response = Devise::Api::Responses::ErrorResponse.new(request,
|
143
|
+
resource_class: resource_class,
|
144
|
+
**service.failure)
|
145
|
+
|
146
|
+
render json: error_response.body, status: error_response.status
|
147
|
+
end
|
148
|
+
# rubocop:enable Metrics/AbcSize
|
149
|
+
|
150
|
+
private
|
151
|
+
|
152
|
+
def sign_up_params
|
153
|
+
params.permit(*Devise.api.config.sign_up.extra_fields, *resource_class.authentication_keys,
|
154
|
+
*::Devise::ParameterSanitizer::DEFAULT_PERMITTED_ATTRIBUTES[:sign_up]).to_h
|
155
|
+
end
|
156
|
+
|
157
|
+
def assign_role(user)
|
158
|
+
role = Stay::Role.find_by(name: params[:type])
|
159
|
+
user.role_users.create(role_id: role&.id) if role.present?
|
160
|
+
token = Random.hex(16)
|
161
|
+
user.update(confirmation_token: token)
|
162
|
+
end
|
163
|
+
|
164
|
+
def sign_in_params
|
165
|
+
params.permit(*resource_class.authentication_keys,
|
166
|
+
*::Devise::ParameterSanitizer::DEFAULT_PERMITTED_ATTRIBUTES[:sign_in]).to_h
|
167
|
+
end
|
168
|
+
|
169
|
+
def call_devise_trackable!(resource_owner)
|
170
|
+
return unless resource_class.supported_devise_modules.trackable?
|
171
|
+
|
172
|
+
resource_owner.update_tracked_fields!(request)
|
173
|
+
end
|
174
|
+
|
175
|
+
def current_devise_api_refresh_token
|
176
|
+
return @current_devise_api_refresh_token if @current_devise_api_refresh_token
|
177
|
+
|
178
|
+
token = find_devise_api_token
|
179
|
+
devise_api_token_model = Devise.api.config.base_token_model.constantize
|
180
|
+
@current_devise_api_refresh_token = devise_api_token_model.find_by(refresh_token: token)
|
181
|
+
end
|
182
|
+
end
|
183
|
+
end
|
184
|
+
end
|
185
|
+
# rubocop:enable Metrics/ClassLength
|
@@ -6,18 +6,22 @@ class Stay::Api::V1::ProfilesController < Stay::BaseApiController
|
|
6
6
|
end
|
7
7
|
|
8
8
|
def update
|
9
|
-
@profile.update(profile_params)
|
10
|
-
|
9
|
+
if @profile.update(profile_params)
|
10
|
+
data = ActiveModelSerializers::SerializableResource.new(@profile, serializer: UserSerializer)
|
11
|
+
render json: { profile: data, success: true }, status: :ok
|
12
|
+
else
|
13
|
+
render json: { errors: @profile.errors.full_messages, success:false }, status: :unprocessable_entity
|
14
|
+
end
|
11
15
|
end
|
12
|
-
|
16
|
+
|
13
17
|
private
|
14
18
|
|
15
19
|
def set_user
|
16
|
-
@profile = current_devise_api_user || Stay::
|
20
|
+
@profile = current_devise_api_user || Stay::User.find(params[:id])
|
17
21
|
end
|
18
22
|
|
19
23
|
def profile_params
|
20
|
-
params.require(:profile).permit(:first_name, :last_name, :phone, :date_of_birth, :gender )
|
24
|
+
params.require(:profile).permit(:first_name, :last_name, :phone, :date_of_birth, :gender, :profile_image )
|
21
25
|
end
|
22
26
|
|
23
27
|
end
|
@@ -3,12 +3,12 @@ class Stay::Api::V1::PropertyCategoriesController < Stay::BaseApiController
|
|
3
3
|
|
4
4
|
def index
|
5
5
|
@type = Stay::PropertyCategory.all
|
6
|
+
return render json: { error: "no data found", success: false }, status: :not_found unless @type.any?
|
6
7
|
render json: { data: ActiveModelSerializers::SerializableResource.new(@type, each_serializer: PropertyCategorySerializer), message: "data found", success: true }, status: :ok
|
7
8
|
end
|
8
9
|
|
9
10
|
def show
|
10
11
|
@type = Stay::PropertyCategory.find_by(id: params[:id])
|
11
|
-
return render json: { error: "no data found", success: false }, status: :unprocessable_entity if @type.nil?
|
12
12
|
render json: { data: PropertyCategorySerializer.new(@type), message: "data found", success: true }, status: :ok
|
13
13
|
end
|
14
14
|
end
|
@@ -2,9 +2,25 @@ class Stay::Api::V1::PropertyTypesController < Stay::BaseApiController
|
|
2
2
|
before_action :authenticate_devise_api_token!
|
3
3
|
|
4
4
|
def index
|
5
|
-
|
6
|
-
|
5
|
+
property_types = Stay::PropertyType.all
|
6
|
+
|
7
|
+
if property_types.any?
|
8
|
+
serialized_data = ActiveModelSerializers::SerializableResource.new(property_types, each_serializer: PropertyTypeSerializer)
|
9
|
+
|
10
|
+
render json: {
|
11
|
+
data: serialized_data,
|
12
|
+
message: "Data found",
|
13
|
+
success: true
|
14
|
+
}, status: :ok
|
15
|
+
else
|
16
|
+
render json: {
|
17
|
+
data: [],
|
18
|
+
message: "No property types found",
|
19
|
+
success: false
|
20
|
+
}, status: :ok
|
21
|
+
end
|
7
22
|
end
|
23
|
+
|
8
24
|
|
9
25
|
def show
|
10
26
|
@type = Stay::PropertyType.find_by(id: params[:id])
|
data/app/models/stay/user.rb
CHANGED
@@ -5,7 +5,6 @@ module Stay
|
|
5
5
|
devise :database_authenticatable, :registerable,
|
6
6
|
:recoverable, :rememberable, :validatable, :api
|
7
7
|
|
8
|
-
validates :first_name, :last_name, presence: true
|
9
8
|
has_many :role_users, class_name: "Stay::RoleUser", dependent: :destroy
|
10
9
|
has_many :stay_roles, through: :role_users, class_name: "Stay::Role", source: :role
|
11
10
|
has_many :bookings
|
@@ -31,10 +31,6 @@ class UserSerializer < ActiveModel::Serializer
|
|
31
31
|
object&.preferences.present? ? object&.preferences["sms_notification"]: false
|
32
32
|
end
|
33
33
|
|
34
|
-
def payment_method_preference
|
35
|
-
object.payment_method_name
|
36
|
-
end
|
37
|
-
|
38
34
|
def image_file_name
|
39
35
|
object.profile_image&.filename&.to_s || nil
|
40
36
|
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Devise
|
4
|
+
module Api
|
5
|
+
module ResourceOwnerService
|
6
|
+
class Authenticate < Devise::Api::BaseService
|
7
|
+
option :params, type: Types::Hash
|
8
|
+
option :resource_class, type: Types::Class
|
9
|
+
|
10
|
+
def call
|
11
|
+
resource = resource_class.find_for_authentication(email: params[:email])
|
12
|
+
return Failure(error: :invalid_email, record: nil) if resource.blank?
|
13
|
+
return Failure(error: :invalid_authentication, record: resource) unless authenticate!(resource)
|
14
|
+
|
15
|
+
Success(resource)
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def authenticate!(resource)
|
21
|
+
resource.valid_for_authentication? do
|
22
|
+
resource.valid_password?(params[:password])
|
23
|
+
end && resource.active_for_authentication?
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Devise
|
4
|
+
module Api
|
5
|
+
module ResourceOwnerService
|
6
|
+
class SignIn < Devise::Api::BaseService
|
7
|
+
option :params, type: Types::Hash
|
8
|
+
option :resource_class, type: Types::Class
|
9
|
+
|
10
|
+
def call
|
11
|
+
resource_owner = yield call_authenticate_service
|
12
|
+
devise_api_token = yield call_create_devise_api_token_service(resource_owner)
|
13
|
+
resource_owner.reset_failed_attempts! if resource_owner.class.supported_devise_modules.lockable?
|
14
|
+
|
15
|
+
Success(devise_api_token)
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def call_authenticate_service
|
21
|
+
Devise::Api::ResourceOwnerService::Authenticate.new(params: params,
|
22
|
+
resource_class: resource_class).call
|
23
|
+
end
|
24
|
+
|
25
|
+
def call_create_devise_api_token_service(resource_owner)
|
26
|
+
Devise::Api::TokensService::Create.new(resource_owner: resource_owner).call
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Devise
|
4
|
+
module Api
|
5
|
+
module ResourceOwnerService
|
6
|
+
class SocialAuthenticate < Devise::Api::BaseService
|
7
|
+
option :params, type: Types::Hash
|
8
|
+
option :resource_class, type: Types::Class
|
9
|
+
|
10
|
+
def call
|
11
|
+
resource = resource_class.find_for_authentication(email: params["email"])
|
12
|
+
return Failure(error: :invalid_email, record: nil) if resource.blank?
|
13
|
+
Success(resource)
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def authenticate!(resource)
|
19
|
+
resource.valid_for_authentication? do
|
20
|
+
resource.valid_password?(params[:password])
|
21
|
+
end && resource.active_for_authentication?
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Devise
|
4
|
+
module Api
|
5
|
+
module ResourceOwnerService
|
6
|
+
class SocialSignIn < Devise::Api::BaseService
|
7
|
+
option :params, type: Types::Hash
|
8
|
+
option :resource_class, type: Types::Class
|
9
|
+
|
10
|
+
def call
|
11
|
+
resource_owner = yield call_authenticate_service
|
12
|
+
devise_api_token = yield call_create_devise_api_token_service(resource_owner)
|
13
|
+
resource_owner.reset_failed_attempts! if resource_owner.class.supported_devise_modules.lockable?
|
14
|
+
|
15
|
+
Success(devise_api_token)
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def call_authenticate_service
|
21
|
+
Devise::Api::ResourceOwnerService::SocialAuthenticate.new(params: params, resource_class: resource_class).call
|
22
|
+
end
|
23
|
+
|
24
|
+
def call_create_devise_api_token_service(resource_owner)
|
25
|
+
Devise::Api::TokensService::Create.new(resource_owner: resource_owner).call
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Devise
|
4
|
+
module Api
|
5
|
+
module TokensService
|
6
|
+
class Create < Devise::Api::BaseService
|
7
|
+
option :resource_owner
|
8
|
+
option :previous_refresh_token, type: Types::String | Types::Nil, default: proc { nil }
|
9
|
+
|
10
|
+
def call
|
11
|
+
return Failure(error: :invalid_resource_owner) unless resource_owner.respond_to?(:access_tokens)
|
12
|
+
|
13
|
+
devise_api_token = yield create_devise_api_token
|
14
|
+
|
15
|
+
Success(devise_api_token)
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def authenticate_service
|
21
|
+
Devise::Api::ResourceOwnerService::Authenticate.new(params: params,
|
22
|
+
resource_class: resource_class).call
|
23
|
+
end
|
24
|
+
|
25
|
+
def create_devise_api_token
|
26
|
+
devise_api_token = resource_owner.access_tokens.new(params)
|
27
|
+
|
28
|
+
return Success(devise_api_token) if devise_api_token.save
|
29
|
+
|
30
|
+
Failure(error: :devise_api_token_create_error, record: devise_api_token)
|
31
|
+
end
|
32
|
+
|
33
|
+
def params
|
34
|
+
{
|
35
|
+
access_token: Devise.api.config.base_token_model.constantize.generate_uniq_access_token(resource_owner),
|
36
|
+
refresh_token: Devise.api.config.base_token_model.constantize.generate_uniq_refresh_token(resource_owner),
|
37
|
+
expires_in: Devise.api.config.access_token.expires_in,
|
38
|
+
revoked_at: nil,
|
39
|
+
previous_refresh_token: previous_refresh_token
|
40
|
+
}
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -1,30 +0,0 @@
|
|
1
|
-
<% if current_store %>
|
2
|
-
<a class="px-0 py-1 btn text-light" id="storeSelectorDropdown" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
3
|
-
<span class="d-sm-none"><%= svg_icon name: "store.svg", width: '18', height: '18' %></span>
|
4
|
-
<span class="d-none d-sm-inline"><%= current_store.name %></span> (<%= current_store.code %>) <%= svg_icon name: "chevron-down.svg", width: '12', height: '12', classes: 'ml-1 mb-0' %>
|
5
|
-
</a>
|
6
|
-
|
7
|
-
<div class="dropdown-menu dropdown-menu-left overflow-hidden ml-2" aria-labelledby="storeSelectorDropdown">
|
8
|
-
<% @stores.each do |store| %>
|
9
|
-
<%= store_switcher_link(store) %>
|
10
|
-
<% end %>
|
11
|
-
|
12
|
-
<div class="dropdown-divider m-0"></div>
|
13
|
-
<%= link_to new_admin_store_path, class: 'py-2 px-4 mt-1 mb-0 dropdown-item', id: 'addNewStoreLink' do %>
|
14
|
-
<%= svg_icon name: "plus-circle", width: '18', height: '18' %> Add New Store
|
15
|
-
<% end %>
|
16
|
-
</div>
|
17
|
-
<% end %>
|
18
|
-
|
19
|
-
<script type="text/javascript">
|
20
|
-
$('#storeSelectorDropdown').click(function () {
|
21
|
-
event.preventDefault();
|
22
|
-
$(this).next('.dropdown-menu').toggle();
|
23
|
-
});
|
24
|
-
|
25
|
-
$(document).click(function (e) {
|
26
|
-
if (!$(e.target).closest('#storeSelectorDropdown').length) {
|
27
|
-
$('.dropdown-menu').hide();
|
28
|
-
}
|
29
|
-
});
|
30
|
-
</script>
|
data/lib/stay/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stay_commerce
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- w3villa-vikaspal
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-
|
11
|
+
date: 2025-04-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -480,6 +480,7 @@ files:
|
|
480
480
|
- app/channels/chat_channel.rb
|
481
481
|
- app/controllers/concerns/stay/booking_validations.rb
|
482
482
|
- app/controllers/concerns/stay/stripe_concern.rb
|
483
|
+
- app/controllers/devise/api/tokens_controller.rb
|
483
484
|
- app/controllers/stay/admin/addresses_controller.rb
|
484
485
|
- app/controllers/stay/admin/amenities_controller.rb
|
485
486
|
- app/controllers/stay/admin/amenity_categories_controller.rb
|
@@ -623,6 +624,11 @@ files:
|
|
623
624
|
- app/serializers/room_type_serializer.rb
|
624
625
|
- app/serializers/user_listing_serializer.rb
|
625
626
|
- app/serializers/user_serializer.rb
|
627
|
+
- app/services/devise/api/resource_owner_service/authenticate.rb
|
628
|
+
- app/services/devise/api/resource_owner_service/sign_in.rb
|
629
|
+
- app/services/devise/api/resource_owner_service/social_authenticate.rb
|
630
|
+
- app/services/devise/api/resource_owner_service/social_sign_in.rb
|
631
|
+
- app/services/devise/api/tokens_service/create.rb
|
626
632
|
- app/services/stay/bookings/create_booking_service.rb
|
627
633
|
- app/services/stay/bookings/create_line_item_service.rb
|
628
634
|
- app/services/stay/bookings/existing_booking_service.rb
|
@@ -947,7 +953,7 @@ metadata:
|
|
947
953
|
homepage_uri: https://github.com/w3villa/StayCommerce
|
948
954
|
source_code_uri: https://github.com/w3villa/StayCommerce
|
949
955
|
changelog_uri: https://github.com/w3villa/StayCommerce
|
950
|
-
post_install_message:
|
956
|
+
post_install_message:
|
951
957
|
rdoc_options: []
|
952
958
|
require_paths:
|
953
959
|
- lib
|
@@ -962,8 +968,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
962
968
|
- !ruby/object:Gem::Version
|
963
969
|
version: '0'
|
964
970
|
requirements: []
|
965
|
-
rubygems_version: 3.
|
966
|
-
signing_key:
|
971
|
+
rubygems_version: 3.5.9
|
972
|
+
signing_key:
|
967
973
|
specification_version: 4
|
968
974
|
summary: Summary of Stay.
|
969
975
|
test_files: []
|