From ecf1ece59887f095fdb9a73645a042bd066533d2 Mon Sep 17 00:00:00 2001 From: Rafael Kellermann Streit Date: Fri, 26 Jan 2018 10:29:17 -0500 Subject: [PATCH] Create a new API that returns all logged user roles --- .../rocketchat-api/server/v1/permissions.js | 3 ++- packages/rocketchat-api/server/v1/users.js | 24 +++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/packages/rocketchat-api/server/v1/permissions.js b/packages/rocketchat-api/server/v1/permissions.js index 83139fe3c9a..542675c419c 100644 --- a/packages/rocketchat-api/server/v1/permissions.js +++ b/packages/rocketchat-api/server/v1/permissions.js @@ -1,5 +1,6 @@ /** - This API returns logged user permissions. + This API returns all permissions that exists + on the server, with respective roles. Method: GET Route: api/v1/permissions diff --git a/packages/rocketchat-api/server/v1/users.js b/packages/rocketchat-api/server/v1/users.js index 234e73e83ac..d9606b21995 100644 --- a/packages/rocketchat-api/server/v1/users.js +++ b/packages/rocketchat-api/server/v1/users.js @@ -270,3 +270,27 @@ RocketChat.API.v1.addRoute('users.createToken', { authRequired: true }, { return data ? RocketChat.API.v1.success({data}) : RocketChat.API.v1.unauthorized(); } }); + +/** + This API returns the logged user roles. + + Method: GET + Route: api/v1/user.roles + */ +RocketChat.API.v1.addRoute('user.roles', { authRequired: true }, { + get() { + let result; + var currentUserRoles = {}; + + Meteor.runAsUser(this.userId, () => + result = Meteor.call('getUserRoles') + ); + + if (Array.isArray(result) && result.length > 0) { + currentUserRoles = result[0] + } + + return RocketChat.API.v1.success(currentUserRoles); + } +}); +