dscf-core 0.3.5 → 0.3.7
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
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 140fe172991cc8a918430e1dfe062b715d930c0a6914820d16eec4bc4c7a9a9f
|
|
4
|
+
data.tar.gz: b6bd385bde47d38da59639170d16843c6000db6fc59410a086eb885c7b5e11b1
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f2f6606363b0d92186f267d703e29cc608f08f9be092500d94435e83b9ca2b44cc129d8898ceab3cea2933323b8c5a534542d1c75ecbab55ccf16ae3a34dd05e
|
|
7
|
+
data.tar.gz: e26442c83f27198db1e1eb2967838ef518e799d1926e76bb286030da06215e68fde220bd3d3f841bf38be2705a4061639be3b7e1b9faaf88ff8f29c56cbd3fc2
|
|
@@ -3,13 +3,29 @@ module Dscf
|
|
|
3
3
|
module RoleAssignable
|
|
4
4
|
extend ActiveSupport::Concern
|
|
5
5
|
|
|
6
|
-
def assign_default_role(user)
|
|
7
|
-
role = Role.find_or_create_by!(code:
|
|
8
|
-
r.name =
|
|
6
|
+
def assign_default_role(user, role_code = "USER")
|
|
7
|
+
role = Role.find_or_create_by!(code: role_code) do |r|
|
|
8
|
+
r.name = role_code.titleize
|
|
9
|
+
r.active = true
|
|
9
10
|
end
|
|
10
11
|
|
|
12
|
+
copy_user_role_permissions(role) unless role_code == "USER"
|
|
13
|
+
|
|
11
14
|
UserRole.find_or_create_by!(user: user, role: role)
|
|
12
15
|
end
|
|
16
|
+
|
|
17
|
+
private
|
|
18
|
+
|
|
19
|
+
def copy_user_role_permissions(role)
|
|
20
|
+
return if role.permissions.any?
|
|
21
|
+
|
|
22
|
+
user_role = Role.find_by(code: "USER")
|
|
23
|
+
return unless user_role
|
|
24
|
+
|
|
25
|
+
user_role.permissions.each do |permission|
|
|
26
|
+
RolePermission.find_or_create_by!(role: role, permission: permission)
|
|
27
|
+
end
|
|
28
|
+
end
|
|
13
29
|
end
|
|
14
30
|
end
|
|
15
31
|
end
|
|
@@ -47,7 +47,19 @@ module Dscf
|
|
|
47
47
|
|
|
48
48
|
ActiveRecord::Base.transaction do
|
|
49
49
|
if user.save
|
|
50
|
-
|
|
50
|
+
role_code = if params[:agent].present?
|
|
51
|
+
"AGENT"
|
|
52
|
+
elsif params[:retailer].present?
|
|
53
|
+
"RETAILER"
|
|
54
|
+
else
|
|
55
|
+
"USER"
|
|
56
|
+
end
|
|
57
|
+
assign_default_role(user, role_code)
|
|
58
|
+
|
|
59
|
+
# Optionally create marketplace records when onboarding via mobile app
|
|
60
|
+
create_agent_from_signup!(user) if params[:agent].present?
|
|
61
|
+
create_retailer_from_signup!(user) if params[:retailer].present?
|
|
62
|
+
|
|
51
63
|
user_with_includes = User.includes(roles: :permissions, user_profile: {}).find(user.id)
|
|
52
64
|
render_success(
|
|
53
65
|
"auth.success.signup",
|
|
@@ -124,6 +136,40 @@ module Dscf
|
|
|
124
136
|
def refresh_params
|
|
125
137
|
params.permit(:refresh_token)
|
|
126
138
|
end
|
|
139
|
+
|
|
140
|
+
# Creates an Agent record when included in signup request (mobile onboarding)
|
|
141
|
+
def create_agent_from_signup!(user)
|
|
142
|
+
return unless defined?(Dscf::Marketplace::Agent)
|
|
143
|
+
|
|
144
|
+
Dscf::Marketplace::Agent.create!(
|
|
145
|
+
name: agent_signup_params[:name],
|
|
146
|
+
phone: agent_signup_params[:phone],
|
|
147
|
+
service_area: agent_signup_params[:service_area],
|
|
148
|
+
fayda_number: agent_signup_params[:fayda_number],
|
|
149
|
+
user: user
|
|
150
|
+
)
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
# Creates a Retailer record when included in signup request (mobile onboarding)
|
|
154
|
+
def create_retailer_from_signup!(user)
|
|
155
|
+
return unless defined?(Dscf::Marketplace::Retailer)
|
|
156
|
+
|
|
157
|
+
Dscf::Marketplace::Retailer.create!(
|
|
158
|
+
name: retailer_signup_params[:name],
|
|
159
|
+
phone: retailer_signup_params[:phone],
|
|
160
|
+
tin_number: retailer_signup_params[:tin_number],
|
|
161
|
+
location: retailer_signup_params[:location],
|
|
162
|
+
user: user
|
|
163
|
+
)
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
def agent_signup_params
|
|
167
|
+
params.fetch(:agent, {}).permit(:name, :phone, :service_area, :fayda_number)
|
|
168
|
+
end
|
|
169
|
+
|
|
170
|
+
def retailer_signup_params
|
|
171
|
+
params.fetch(:retailer, {}).permit(:name, :phone, :tin_number, :location)
|
|
172
|
+
end
|
|
127
173
|
end
|
|
128
174
|
end
|
|
129
175
|
end
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
module Dscf
|
|
2
2
|
module Core
|
|
3
3
|
class UserAuthSerializer < ActiveModel::Serializer
|
|
4
|
-
attributes :id, :email, :phone, :verified_at, :permissions
|
|
4
|
+
attributes :id, :email, :phone, :verified_at, :permissions, :review_status
|
|
5
5
|
|
|
6
6
|
has_one :user_profile, serializer: Dscf::Core::UserProfileSerializer
|
|
7
7
|
has_many :roles, serializer: Dscf::Core::RoleLightSerializer
|
|
@@ -9,6 +9,29 @@ module Dscf
|
|
|
9
9
|
def permissions
|
|
10
10
|
object.active_permissions.to_a
|
|
11
11
|
end
|
|
12
|
+
|
|
13
|
+
def review_status
|
|
14
|
+
return @review_status if defined?(@review_status)
|
|
15
|
+
|
|
16
|
+
@review_status = if defined?(Dscf::Marketplace::Agent) && (agent = Dscf::Marketplace::Agent.find_by(user_id: object.id))
|
|
17
|
+
{ type: "agent", entity_id: agent.id, status: agent.verification_status }
|
|
18
|
+
elsif defined?(Dscf::Marketplace::Supplier) && (supplier = supplier_for_user)
|
|
19
|
+
{ type: "supplier", entity_id: supplier.id, status: supplier.current_status_for(:default) }
|
|
20
|
+
elsif defined?(Dscf::Marketplace::Retailer) && (retailer = Dscf::Marketplace::Retailer.find_by(user_id: object.id))
|
|
21
|
+
{ type: "retailer", entity_id: retailer.id, status: "pending" }
|
|
22
|
+
else
|
|
23
|
+
nil
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
private
|
|
28
|
+
|
|
29
|
+
def supplier_for_user
|
|
30
|
+
business = Dscf::Core::Business.find_by(user_id: object.id)
|
|
31
|
+
return nil unless business && defined?(Dscf::Marketplace::Supplier)
|
|
32
|
+
|
|
33
|
+
Dscf::Marketplace::Supplier.find_by(business_id: business.id)
|
|
34
|
+
end
|
|
12
35
|
end
|
|
13
36
|
end
|
|
14
37
|
end
|
data/lib/dscf/core/version.rb
CHANGED