ecom_core 1.1.1 → 1.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2a0c28baf17d2c00ff282fba227a6cf7c10d4c6f11507e773214d3d82df2477e
4
- data.tar.gz: 00e5b91dd8f598b92353923d80750deb193f627cec91e5563a85de6c770e25a5
3
+ metadata.gz: f15cdff1527a5033ba32892a8a9455198666e4ed2939b696dcfeb336f0c02388
4
+ data.tar.gz: 2ccc62d0759644c52dc80a63b4d0b940aae6e69a7a077502fd708592e5b99cc4
5
5
  SHA512:
6
- metadata.gz: e7ea275f8bc129cc1490ca5f2b6a4f90d7e631dabb4d6fb0e9af31f625f1e8fa4538caa6362dac463cd86db86ee3e2304b29a0959e4471cc73578b207bf6f003
7
- data.tar.gz: 39d5157a5bb77483d59124289439d52ac94f2a0d37f53c486727727da1f14b83380bdd0afbffa69fa640150fff80dadf805404fef87583c48a7ca39cb3f3a8f1
6
+ metadata.gz: 5f3951c2c91370b336a38c0adf0e372230ca7ae7125bbf11dcb4b6fc548921d41d7d356ad1aea7dd72074adfd1e1747086f3587c50c784db28e766c5ec9e33bc
7
+ data.tar.gz: 5ae92530a31d4bab42850f5cccc70a14a07bd3b720317616c964eceae719ae6e355394f2225cf353c08373d3808435fc6bdb81423483f615350ecc27b61b6559
@@ -14,6 +14,7 @@ module Ecom
14
14
  @current_user ||= user if user
15
15
  end
16
16
 
17
+
17
18
  private
18
19
 
19
20
  def authenticate
@@ -2,24 +2,8 @@ module Ecom
2
2
  module Core
3
3
  class MenusController < ApplicationController
4
4
  def index
5
- user = current_user
6
- roles = user.user_roles
7
- app_module = roles[0].application_module
8
- menus = []
9
- roles.each do |role|
10
- menu_list = role.menus.where(parent: nil, application_module: app_module)
11
- menu_list.each do |menu|
12
- children = []
13
- menu.children.order(:label).each do |child|
14
- if role.menus.include? child
15
- children << { label: child.label, icon: child.icon, route: child.route }
16
- end
17
- end
18
- menus << { label: menu.label, icon: menu.icon, children: children }
19
- end
20
- end
21
-
22
- render json: menus
5
+ service = MenuService.new
6
+ render json: service.fetch_menu(current_user)
23
7
  end
24
8
  end
25
9
  end
@@ -0,0 +1,24 @@
1
+ module Ecom
2
+ module Core
3
+ class MenuService
4
+ def fetch_menu(user)
5
+ role_ids = user.user_roles.map(&:id)
6
+ join_sql = <<-SQL
7
+ INNER JOIN ecom_core_menus_user_roles MUR ON MUR.menu_id = ecom_core_menus.id
8
+ INNER JOIN ecom_core_user_roles UR ON MUR.user_role_id = UR.id
9
+ SQL
10
+ menu = Menu.joins(join_sql).where('UR.id IN (?)', role_ids).distinct
11
+ menu_list = menu.select { |m| m.parent.nil? }.each_with_object([]) do |item, list|
12
+ list << { id: item.id, label: item.label, icon: item.icon, route: item.route, children: [] }
13
+ end
14
+
15
+ menu_list.each do |ml|
16
+ ml[:children] = menu.reject { |m| m.parent.nil? }.each_with_object([]) do |item, list|
17
+ list << { id: item.id, label: item.label, icon: item.icon, route: item.route } if item.parent_id == ml[:id]
18
+ end
19
+ end
20
+ menu_list
21
+ end
22
+ end
23
+ end
24
+ end
@@ -1,5 +1,5 @@
1
1
  module Ecom
2
2
  module Core
3
- VERSION = '1.1.1'.freeze
3
+ VERSION = '1.1.2'.freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ecom_core
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Henock L.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-03-17 00:00:00.000000000 Z
11
+ date: 2020-03-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aasm
@@ -255,6 +255,7 @@ files:
255
255
  - app/serializers/ecom/core/resource_type_serializer.rb
256
256
  - app/serializers/ecom/core/user_role_serializer.rb
257
257
  - app/serializers/ecom/core/user_serializer.rb
258
+ - app/services/ecom/core/menu_service.rb
258
259
  - app/services/ecom/core/token_auth_service.rb
259
260
  - config/database.ci.yml
260
261
  - config/routes.rb