Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions packages/rocketchat-api/package.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ Package.onUse(function(api) {
api.addFiles('server/helpers/getUserFromParams.js', 'server');
api.addFiles('server/helpers/isUserFromParams.js', 'server');
api.addFiles('server/helpers/parseJsonQuery.js', 'server');
api.addFiles('server/helpers/deprecationWarning.js', 'server');
api.addFiles('server/helpers/getLoggedInUser.js', 'server');

//Add default routes
Expand Down
10 changes: 10 additions & 0 deletions packages/rocketchat-api/server/helpers/deprecationWarning.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
RocketChat.API.helperMethods.set('deprecationWarning', function _deprecationWarning({ endpoint, versionWillBeRemove, response }) {
const warningMessage = `The endpoint "${ endpoint }" is deprecated and will be removed after version ${ versionWillBeRemove }`;
console.warn(warningMessage);
if (process.env.NODE_ENV === 'development') {
response.warning = warningMessage;
}

return response;
});

8 changes: 7 additions & 1 deletion packages/rocketchat-api/server/v1/misc.js
Original file line number Diff line number Diff line change
Expand Up @@ -52,12 +52,18 @@ RocketChat.API.v1.addRoute('me', { authRequired: true }, {
'username',
'utcOffset',
'active',
'language'
'language',
'roles',
'settings'
]);

const verifiedEmail = me.emails.find((email) => email.verified);
const userHasNotSetPreferencesYet = !me.settings || !me.settings.preferences;

me.email = verifiedEmail ? verifiedEmail.address : undefined;
if (userHasNotSetPreferencesYet) {
me.settings = { preferences: {} };
}

return RocketChat.API.v1.success(me);
}
Expand Down
16 changes: 11 additions & 5 deletions packages/rocketchat-api/server/v1/users.js
Original file line number Diff line number Diff line change
Expand Up @@ -359,7 +359,7 @@ RocketChat.API.v1.addRoute('users.setPreferences', { authRequired: true }, {
delete this.bodyParams.data.language;
preferences = _.extend({ _id: userId, settings: { preferences: this.bodyParams.data }, language });
} else {
preferences = _.extend({ _id: userId, settings: { preferences: this.bodyParams.data }});
preferences = _.extend({ _id: userId, settings: { preferences: this.bodyParams.data } });
}

Meteor.runAsUser(this.userId, () => RocketChat.saveUser(this.userId, preferences));
Expand All @@ -369,10 +369,12 @@ RocketChat.API.v1.addRoute('users.setPreferences', { authRequired: true }, {
});

/**
This API returns the logged user roles.
DEPRECATED
// TODO: Remove this after three versions have been released. That means at 0.66 this should be gone.
This API returns the logged user roles.

Method: GET
Route: api/v1/user.roles
Method: GET
Route: api/v1/user.roles
*/
RocketChat.API.v1.addRoute('user.roles', { authRequired: true }, {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please add a console.warn('The endpoint /api/v1/user.roles is deprecated and will be removed after version v0.xx.'). Also, add it to the resulting object but only when we are in a development environment. Which, might need to add a helper method which generates everything I just mentioned with providing the endpoint and the version it will be removed.

We will need to update the deprecation warnings for the real version after it has been merged.

get() {
Expand All @@ -384,6 +386,10 @@ RocketChat.API.v1.addRoute('user.roles', { authRequired: true }, {
currentUserRoles = result[0];
}

return RocketChat.API.v1.success(currentUserRoles);
return RocketChat.API.v1.success(this.deprecationWarning({
endpoint: 'user.roles',
versionWillBeRemove: 'v0.66',
response: currentUserRoles
}));
}
});
2 changes: 2 additions & 0 deletions tests/end-to-end/api/00-miscellaneous.js
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,9 @@ describe('miscellaneous', function() {
expect(res.body).to.have.property('username', login.user);
expect(res.body).to.have.property('active');
expect(res.body).to.have.property('name');
expect(res.body).to.have.property('roles').and.to.be.an('array');
expect(res.body).to.have.nested.property('emails[0].address', adminEmail);
expect(res.body).to.have.nested.property('settings.preferences').and.to.be.an('object');
})
.end(done);
});
Expand Down
2 changes: 2 additions & 0 deletions tests/end-to-end/api/01-users.js
Original file line number Diff line number Diff line change
Expand Up @@ -541,6 +541,8 @@ describe('[Users]', function() {
});
});

//DEPRECATED
// TODO: Remove this after three versions have been released. That means at 0.66 this should be gone.
describe('[/user.roles]', () => {

it('should return id and name of user, and an array of roles', (done) => {
Expand Down