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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f15cdff1527a5033ba32892a8a9455198666e4ed2939b696dcfeb336f0c02388
|
4
|
+
data.tar.gz: 2ccc62d0759644c52dc80a63b4d0b940aae6e69a7a077502fd708592e5b99cc4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5f3951c2c91370b336a38c0adf0e372230ca7ae7125bbf11dcb4b6fc548921d41d7d356ad1aea7dd72074adfd1e1747086f3587c50c784db28e766c5ec9e33bc
|
7
|
+
data.tar.gz: 5ae92530a31d4bab42850f5cccc70a14a07bd3b720317616c964eceae719ae6e355394f2225cf353c08373d3808435fc6bdb81423483f615350ecc27b61b6559
|
@@ -2,24 +2,8 @@ module Ecom
|
|
2
2
|
module Core
|
3
3
|
class MenusController < ApplicationController
|
4
4
|
def index
|
5
|
-
|
6
|
-
|
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
|
data/lib/ecom/core/version.rb
CHANGED
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.
|
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-
|
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
|