diff --git a/packages/rocketchat-ui-sidenav/side-nav/sideNav.coffee b/packages/rocketchat-ui-sidenav/side-nav/sideNav.coffee
index 7c9d2574f8a..227023ce43f 100644
--- a/packages/rocketchat-ui-sidenav/side-nav/sideNav.coffee
+++ b/packages/rocketchat-ui-sidenav/side-nav/sideNav.coffee
@@ -36,7 +36,10 @@ Template.sideNav.helpers
return RocketChat.authz.hasAtLeastOnePermission( ['view-statistics', 'view-room-administration', 'view-user-administration', 'view-privileged-setting'])
registeredMenus: ->
- return AccountBox.getOptions()
+ return AccountBox.getItems()
+
+ itemPath: ->
+ FlowRouter.path @route.name
Template.sideNav.events
'click .close-flex': ->
diff --git a/packages/rocketchat-ui-sidenav/side-nav/sideNav.html b/packages/rocketchat-ui-sidenav/side-nav/sideNav.html
index 605c277d14e..69de45698bd 100644
--- a/packages/rocketchat-ui-sidenav/side-nav/sideNav.html
+++ b/packages/rocketchat-ui-sidenav/side-nav/sideNav.html
@@ -21,7 +21,7 @@
{{_ "Invisible"}}
{{_ "My_Account"}}
{{#each registeredMenus}}
- {{name}}
+ {{name}}
{{/each}}
{{#if showAdminOption }}
{{_ "Administration"}}
diff --git a/packages/rocketchat-ui/lib/accountBox.coffee b/packages/rocketchat-ui/lib/accountBox.coffee
index c575f1760f7..a83288bfe3d 100644
--- a/packages/rocketchat-ui/lib/accountBox.coffee
+++ b/packages/rocketchat-ui/lib/accountBox.coffee
@@ -1,7 +1,7 @@
@AccountBox = (->
status = 0
self = {}
- options = new ReactiveVar []
+ items = new ReactiveVar []
setStatus = (status) ->
Meteor.call('UserPresence:setDefaultStatus', status)
@@ -30,20 +30,25 @@
###
# @param newOption:
- # name: Button label
- # icon: Button icon
- # class: Class of item
- # roles: Which roles see this options
+ # name: Button label
+ # icon: Button icon
+ # class: Class of the item
+ # permissions: Which permissions a user should have (all of them) to see this item
###
- addOption = (newOption) ->
+ addItem = (newItem) ->
Tracker.nonreactive ->
- actual = options.get()
- actual.push newOption
- options.set actual
-
- getOptions = ->
- return _.filter options.get(), (option) ->
- if not option.roles? or RocketChat.authz.hasRole(Meteor.userId(), option.roles)
+ actual = items.get()
+ actual.push newItem
+ items.set actual
+
+ if newItem.route?.path? and newItem.route?.name? and newItem.route?.action?
+ FlowRouter.route newItem.route.path,
+ name: newItem.route.name
+ action: newItem.route.action
+
+ getItems = ->
+ return _.filter items.get(), (item) ->
+ if not item.permissions? or RocketChat.authz.hasAllPermission item.permissions
return true
setStatus: setStatus
@@ -51,6 +56,7 @@
open: open
close: close
init: init
- addOption: addOption
- getOptions: getOptions
+
+ addItem: addItem
+ getItems: getItems
)()
diff --git a/packages/rocketchat-ui/package.js b/packages/rocketchat-ui/package.js
index 34ddea1afb0..bff71ffe618 100644
--- a/packages/rocketchat-ui/package.js
+++ b/packages/rocketchat-ui/package.js
@@ -28,6 +28,8 @@ Package.onUse(function(api) {
'raix:ui-dropped-event'
]);
+ api.use('kadira:flow-router', 'client');
+
// LIB FILES
api.addFiles('lib/accountBox.coffee', 'client');
api.addFiles('lib/accounts.coffee', 'client');