dscf-core 0.3.6 → 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: c79b0bd46b44ace100520a0a873e5a6dce32e9f13caf6c72c5ea7a729e1db870
4
- data.tar.gz: 6715fc56d379b5600c71a4a78cccd4991a381f9a9a5d8ab0a80d5bc78b4c468d
3
+ metadata.gz: 140fe172991cc8a918430e1dfe062b715d930c0a6914820d16eec4bc4c7a9a9f
4
+ data.tar.gz: b6bd385bde47d38da59639170d16843c6000db6fc59410a086eb885c7b5e11b1
5
5
  SHA512:
6
- metadata.gz: a8b2df9c292d42b1331e30f05af007a2e45d416b4af9863fba943e329130a8705951cbf407c96fe014d0d2d4c9112abcafca38be10a47d8b24ac9e48ccdcce7e
7
- data.tar.gz: 8268c64be459eacf7f1afa2c0f80b6b5370fcaad0d2f95f9744fde90c7e7e70add2a5f345fd70b53bf5eb1f1852f01f7261576ea623dee23308f2230c61623bc
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: "USER") do |r|
8
- r.name = "User"
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,11 +47,18 @@ module Dscf
47
47
 
48
48
  ActiveRecord::Base.transaction do
49
49
  if user.save
50
- assign_default_role(user)
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)
51
58
 
52
59
  # Optionally create marketplace records when onboarding via mobile app
53
- create_agent_from_signup! if params[:agent].present?
54
- create_retailer_from_signup! if params[:retailer].present?
60
+ create_agent_from_signup!(user) if params[:agent].present?
61
+ create_retailer_from_signup!(user) if params[:retailer].present?
55
62
 
56
63
  user_with_includes = User.includes(roles: :permissions, user_profile: {}).find(user.id)
57
64
  render_success(
@@ -131,26 +138,28 @@ module Dscf
131
138
  end
132
139
 
133
140
  # Creates an Agent record when included in signup request (mobile onboarding)
134
- def create_agent_from_signup!
141
+ def create_agent_from_signup!(user)
135
142
  return unless defined?(Dscf::Marketplace::Agent)
136
143
 
137
144
  Dscf::Marketplace::Agent.create!(
138
145
  name: agent_signup_params[:name],
139
146
  phone: agent_signup_params[:phone],
140
147
  service_area: agent_signup_params[:service_area],
141
- fayda_number: agent_signup_params[:fayda_number]
148
+ fayda_number: agent_signup_params[:fayda_number],
149
+ user: user
142
150
  )
143
151
  end
144
152
 
145
153
  # Creates a Retailer record when included in signup request (mobile onboarding)
146
- def create_retailer_from_signup!
154
+ def create_retailer_from_signup!(user)
147
155
  return unless defined?(Dscf::Marketplace::Retailer)
148
156
 
149
157
  Dscf::Marketplace::Retailer.create!(
150
158
  name: retailer_signup_params[:name],
151
159
  phone: retailer_signup_params[:phone],
152
160
  tin_number: retailer_signup_params[:tin_number],
153
- location: retailer_signup_params[:location]
161
+ location: retailer_signup_params[:location],
162
+ user: user
154
163
  )
155
164
  end
156
165
 
@@ -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
@@ -1,5 +1,5 @@
1
1
  module Dscf
2
2
  module Core
3
- VERSION = "0.3.6".freeze
3
+ VERSION = "0.3.7".freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dscf-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.6
4
+ version: 0.3.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Asrat