mirror of
https://github.com/YunoHost-Apps/rocketchat_ynh.git
synced 2024-09-03 20:16:25 +02:00
1069 lines
91 KiB
JavaScript
1069 lines
91 KiB
JavaScript
(function () {
|
|
|
|
/* Imports */
|
|
var Meteor = Package.meteor.Meteor;
|
|
var ECMAScript = Package.ecmascript.ECMAScript;
|
|
var _ = Package.underscore._;
|
|
var RocketChat = Package['rocketchat:lib'].RocketChat;
|
|
var MongoInternals = Package.mongo.MongoInternals;
|
|
var Mongo = Package.mongo.Mongo;
|
|
var babelHelpers = Package['babel-runtime'].babelHelpers;
|
|
var Symbol = Package['ecmascript-runtime'].Symbol;
|
|
var Map = Package['ecmascript-runtime'].Map;
|
|
var Set = Package['ecmascript-runtime'].Set;
|
|
var Promise = Package.promise.Promise;
|
|
var TAPi18next = Package['tap:i18n'].TAPi18next;
|
|
var TAPi18n = Package['tap:i18n'].TAPi18n;
|
|
|
|
/* Package-scope variables */
|
|
var __coffeescriptShare;
|
|
|
|
(function(){
|
|
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// packages/rocketchat_authorization/lib/rocketchat.coffee.js //
|
|
// //
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
__coffeescriptShare = typeof __coffeescriptShare === 'object' ? __coffeescriptShare : {}; var share = __coffeescriptShare;
|
|
RocketChat.authz = {}; // 1
|
|
//
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
}).call(this);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(function(){
|
|
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// packages/rocketchat_authorization/server/models/Permissions.coffee.js //
|
|
// //
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
__coffeescriptShare = typeof __coffeescriptShare === 'object' ? __coffeescriptShare : {}; var share = __coffeescriptShare;
|
|
var extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
|
|
hasProp = {}.hasOwnProperty; //
|
|
//
|
|
RocketChat.models.Permissions = new ((function(superClass) { // 1
|
|
extend(_Class, superClass); // 2
|
|
//
|
|
function _Class() { // 2
|
|
this._initModel('permissions'); // 3
|
|
} //
|
|
//
|
|
_Class.prototype.findByRole = function(role, options) { // 2
|
|
var query; // 7
|
|
query = { // 7
|
|
roles: role // 8
|
|
}; //
|
|
return this.find(query, options); // 10
|
|
}; //
|
|
//
|
|
_Class.prototype.findOneById = function(_id) { // 2
|
|
return this.findOne(_id); // 13
|
|
}; //
|
|
//
|
|
_Class.prototype.createOrUpdate = function(name, roles) { // 2
|
|
return this.upsert({ //
|
|
_id: name // 16
|
|
}, { //
|
|
$set: { // 16
|
|
roles: roles // 16
|
|
} //
|
|
}); //
|
|
}; //
|
|
//
|
|
_Class.prototype.addRole = function(permission, role) { // 2
|
|
return this.update({ //
|
|
_id: permission // 19
|
|
}, { //
|
|
$addToSet: { // 19
|
|
roles: role // 19
|
|
} //
|
|
}); //
|
|
}; //
|
|
//
|
|
_Class.prototype.removeRole = function(permission, role) { // 2
|
|
return this.update({ //
|
|
_id: permission // 22
|
|
}, { //
|
|
$pull: { // 22
|
|
roles: role // 22
|
|
} //
|
|
}); //
|
|
}; //
|
|
//
|
|
return _Class; //
|
|
//
|
|
})(RocketChat.models._Base)); //
|
|
//
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
}).call(this);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(function(){
|
|
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// packages/rocketchat_authorization/server/models/Roles.coffee.js //
|
|
// //
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
__coffeescriptShare = typeof __coffeescriptShare === 'object' ? __coffeescriptShare : {}; var share = __coffeescriptShare;
|
|
var extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
|
|
hasProp = {}.hasOwnProperty; //
|
|
//
|
|
RocketChat.models.Roles = new ((function(superClass) { // 1
|
|
extend(_Class, superClass); // 2
|
|
//
|
|
function _Class() { // 2
|
|
this._initModel('roles'); // 3
|
|
this.tryEnsureIndex({ // 3
|
|
'name': 1 // 4
|
|
}); //
|
|
this.tryEnsureIndex({ // 3
|
|
'scope': 1 // 5
|
|
}); //
|
|
} //
|
|
//
|
|
_Class.prototype.findUsersInRole = function(name, scope, options) { // 2
|
|
var ref, role, roleScope; // 8
|
|
role = this.findOne(name); // 8
|
|
roleScope = (role != null ? role.scope : void 0) || 'Users'; // 8
|
|
return (ref = RocketChat.models[roleScope]) != null ? typeof ref.findUsersInRoles === "function" ? ref.findUsersInRoles(name, scope, options) : void 0 : void 0;
|
|
}; //
|
|
//
|
|
_Class.prototype.isUserInRoles = function(userId, roles, scope) { // 2
|
|
roles = [].concat(roles); // 13
|
|
return _.some(roles, (function(_this) { //
|
|
return function(roleName) { //
|
|
var ref, role, roleScope; // 15
|
|
role = _this.findOne(roleName); // 15
|
|
roleScope = (role != null ? role.scope : void 0) || 'Users'; // 15
|
|
return (ref = RocketChat.models[roleScope]) != null ? typeof ref.isUserInRole === "function" ? ref.isUserInRole(userId, roleName, scope) : void 0 : void 0;
|
|
}; //
|
|
})(this)); //
|
|
}; //
|
|
//
|
|
_Class.prototype.createOrUpdate = function(name, scope, description, protectedRole) { // 2
|
|
var updateData; // 20
|
|
if (scope == null) { //
|
|
scope = 'Users'; //
|
|
} //
|
|
updateData = {}; // 20
|
|
updateData.name = name; // 20
|
|
updateData.scope = scope; // 20
|
|
if (description != null) { // 24
|
|
updateData.description = description; // 25
|
|
} //
|
|
if (protectedRole != null) { // 26
|
|
updateData["protected"] = protectedRole; // 27
|
|
} //
|
|
return this.upsert({ //
|
|
_id: name // 29
|
|
}, { //
|
|
$set: updateData // 29
|
|
}); //
|
|
}; //
|
|
//
|
|
_Class.prototype.addUserRoles = function(userId, roles, scope) { // 2
|
|
var i, len, ref, results, role, roleName, roleScope; // 32
|
|
roles = [].concat(roles); // 32
|
|
results = []; // 33
|
|
for (i = 0, len = roles.length; i < len; i++) { //
|
|
roleName = roles[i]; //
|
|
role = this.findOne(roleName); // 34
|
|
roleScope = (role != null ? role.scope : void 0) || 'Users'; // 34
|
|
results.push((ref = RocketChat.models[roleScope]) != null ? typeof ref.addRolesByUserId === "function" ? ref.addRolesByUserId(userId, roleName, scope) : void 0 : void 0);
|
|
} // 33
|
|
return results; //
|
|
}; //
|
|
//
|
|
_Class.prototype.removeUserRoles = function(userId, roles, scope) { // 2
|
|
var i, len, ref, results, role, roleName, roleScope; // 39
|
|
roles = [].concat(roles); // 39
|
|
results = []; // 40
|
|
for (i = 0, len = roles.length; i < len; i++) { //
|
|
roleName = roles[i]; //
|
|
role = this.findOne(roleName); // 41
|
|
roleScope = (role != null ? role.scope : void 0) || 'Users'; // 41
|
|
results.push((ref = RocketChat.models[roleScope]) != null ? typeof ref.removeRolesByUserId === "function" ? ref.removeRolesByUserId(userId, roleName, scope) : void 0 : void 0);
|
|
} // 40
|
|
return results; //
|
|
}; //
|
|
//
|
|
return _Class; //
|
|
//
|
|
})(RocketChat.models._Base)); //
|
|
//
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
}).call(this);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(function(){
|
|
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// packages/rocketchat_authorization/server/models/Base.js //
|
|
// //
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
RocketChat.models._Base.prototype.roleBaseQuery = function () /*userId, scope*/{ // 1
|
|
return {}; // 2
|
|
}; //
|
|
//
|
|
RocketChat.models._Base.prototype.findRolesByUserId = function (userId /*, options*/) { // 5
|
|
var query = this.roleBaseQuery(userId); // 6
|
|
return this.find(query, { fields: { roles: 1 } }); // 7
|
|
}; //
|
|
//
|
|
RocketChat.models._Base.prototype.isUserInRole = function (userId, roleName, scope) { // 10
|
|
var query = this.roleBaseQuery(userId, scope); // 11
|
|
query.roles = roleName; // 12
|
|
return !_.isUndefined(this.findOne(query)); // 13
|
|
}; //
|
|
//
|
|
RocketChat.models._Base.prototype.addRolesByUserId = function (userId, roles, scope) { // 16
|
|
roles = [].concat(roles); // 17
|
|
var query = this.roleBaseQuery(userId, scope); // 18
|
|
var update = { // 19
|
|
$addToSet: { // 20
|
|
roles: { $each: roles } // 21
|
|
} //
|
|
}; //
|
|
return this.update(query, update); // 24
|
|
}; //
|
|
//
|
|
RocketChat.models._Base.prototype.removeRolesByUserId = function (userId, roles, scope) { // 27
|
|
roles = [].concat(roles); // 28
|
|
var query = this.roleBaseQuery(userId, scope); // 29
|
|
var update = { // 30
|
|
$pullAll: { // 31
|
|
roles: roles // 32
|
|
} //
|
|
}; //
|
|
return this.update(query, update); // 35
|
|
}; //
|
|
//
|
|
RocketChat.models._Base.prototype.findUsersInRoles = function () { // 38
|
|
throw new Meteor.Error('overwrite-function', 'You must overwrite this function in the extended classes');
|
|
}; //
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
}).call(this);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(function(){
|
|
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// packages/rocketchat_authorization/server/models/Users.js //
|
|
// //
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
RocketChat.models.Users.roleBaseQuery = function (userId) { // 1
|
|
return { _id: userId }; // 2
|
|
}; //
|
|
//
|
|
RocketChat.models.Users.findUsersInRoles = function (roles, scope, options) { // 5
|
|
roles = [].concat(roles); // 6
|
|
//
|
|
var query = { // 8
|
|
roles: { $in: roles } // 9
|
|
}; //
|
|
//
|
|
return this.find(query, options); // 12
|
|
}; //
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
}).call(this);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(function(){
|
|
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// packages/rocketchat_authorization/server/models/Subscriptions.js //
|
|
// //
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
RocketChat.models.Subscriptions.roleBaseQuery = function (userId, scope) { // 1
|
|
var query = { 'u._id': userId }; // 2
|
|
if (!_.isUndefined(scope)) { // 3
|
|
query.rid = scope; // 4
|
|
} //
|
|
return query; // 6
|
|
}; //
|
|
//
|
|
RocketChat.models.Subscriptions.findUsersInRoles = function (roles, scope, options) { // 9
|
|
roles = [].concat(roles); // 10
|
|
//
|
|
var query = { // 12
|
|
roles: { $in: roles } // 13
|
|
}; //
|
|
//
|
|
if (scope) { // 16
|
|
query.rid = scope; // 17
|
|
} //
|
|
//
|
|
var subscriptions = this.find(query).fetch(); // 20
|
|
//
|
|
var users = _.compact(_.map(subscriptions, function (subscription) { // 22
|
|
if ('undefined' !== typeof subscription.u && 'undefined' !== typeof subscription.u._id) { // 23
|
|
return subscription.u._id; // 24
|
|
} //
|
|
})); //
|
|
//
|
|
return RocketChat.models.Users.find({ _id: { $in: users } }, options); // 28
|
|
}; //
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
}).call(this);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(function(){
|
|
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// packages/rocketchat_authorization/server/functions/addUserRoles.coffee.js //
|
|
// //
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
__coffeescriptShare = typeof __coffeescriptShare === 'object' ? __coffeescriptShare : {}; var share = __coffeescriptShare;
|
|
RocketChat.authz.addUserRoles = function(userId, roleNames, scope) { // 1
|
|
var existingRoleNames, i, invalidRoleNames, len, role, user; // 2
|
|
if (!userId || !roleNames) { // 2
|
|
return false; // 3
|
|
} //
|
|
user = RocketChat.models.Users.findOneById(userId); // 2
|
|
if (!user) { // 6
|
|
throw new Meteor.Error('invalid-user'); // 7
|
|
} //
|
|
roleNames = [].concat(roleNames); // 2
|
|
existingRoleNames = _.pluck(RocketChat.authz.getRoles(), '_id'); // 2
|
|
invalidRoleNames = _.difference(roleNames, existingRoleNames); // 2
|
|
if (!_.isEmpty(invalidRoleNames)) { // 13
|
|
for (i = 0, len = invalidRoleNames.length; i < len; i++) { // 14
|
|
role = invalidRoleNames[i]; //
|
|
RocketChat.models.Roles.createOrUpdate(role); // 15
|
|
} // 14
|
|
} //
|
|
RocketChat.models.Roles.addUserRoles(userId, roleNames, scope); // 2
|
|
return true; // 19
|
|
}; // 1
|
|
//
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
}).call(this);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(function(){
|
|
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// packages/rocketchat_authorization/server/functions/getRoles.coffee.js //
|
|
// //
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
__coffeescriptShare = typeof __coffeescriptShare === 'object' ? __coffeescriptShare : {}; var share = __coffeescriptShare;
|
|
RocketChat.authz.getRoles = function() { // 1
|
|
return RocketChat.models.Roles.find().fetch(); // 2
|
|
}; // 1
|
|
//
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
}).call(this);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(function(){
|
|
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// packages/rocketchat_authorization/server/functions/getUsersInRole.coffee.js //
|
|
// //
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
__coffeescriptShare = typeof __coffeescriptShare === 'object' ? __coffeescriptShare : {}; var share = __coffeescriptShare;
|
|
RocketChat.authz.getUsersInRole = function(roleName, scope, options) { // 1
|
|
return RocketChat.models.Roles.findUsersInRole(roleName, scope, options); // 2
|
|
}; // 1
|
|
//
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
}).call(this);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(function(){
|
|
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// packages/rocketchat_authorization/server/functions/hasPermission.coffee.js //
|
|
// //
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
__coffeescriptShare = typeof __coffeescriptShare === 'object' ? __coffeescriptShare : {}; var share = __coffeescriptShare;
|
|
RocketChat.authz.hasPermission = function(userId, permissionId, scope) { // 1
|
|
var permission; // 2
|
|
permission = RocketChat.models.Permissions.findOne(permissionId); // 2
|
|
return RocketChat.models.Roles.isUserInRoles(userId, permission.roles, scope); // 3
|
|
}; // 1
|
|
//
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
}).call(this);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(function(){
|
|
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// packages/rocketchat_authorization/server/functions/hasRole.coffee.js //
|
|
// //
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
__coffeescriptShare = typeof __coffeescriptShare === 'object' ? __coffeescriptShare : {}; var share = __coffeescriptShare;
|
|
RocketChat.authz.hasRole = function(userId, roleNames, scope) { // 1
|
|
roleNames = [].concat(roleNames); // 2
|
|
return RocketChat.models.Roles.isUserInRoles(userId, roleNames, scope); // 3
|
|
}; // 1
|
|
//
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
}).call(this);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(function(){
|
|
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// packages/rocketchat_authorization/server/functions/removeUserFromRoles.coffee.js //
|
|
// //
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
__coffeescriptShare = typeof __coffeescriptShare === 'object' ? __coffeescriptShare : {}; var share = __coffeescriptShare;
|
|
RocketChat.authz.removeUserFromRoles = function(userId, roleNames, scope) { // 1
|
|
var existingRoleNames, invalidRoleNames, user; // 2
|
|
if (!userId || !roleNames) { // 2
|
|
return false; // 3
|
|
} //
|
|
user = RocketChat.models.Users.findOneById(userId); // 2
|
|
if (user == null) { // 6
|
|
throw new Meteor.Error('error-invalid-user', 'Invalid user', { // 7
|
|
"function": 'RocketChat.authz.removeUserRoles' // 7
|
|
}); //
|
|
} //
|
|
roleNames = [].concat(roleNames); // 2
|
|
existingRoleNames = _.pluck(RocketChat.authz.getRoles(), 'name'); // 2
|
|
invalidRoleNames = _.difference(roleNames, existingRoleNames); // 2
|
|
if (!_.isEmpty(invalidRoleNames)) { // 13
|
|
throw new Meteor.Error('invalid-role', 'Invalid role', { // 14
|
|
"function": 'RocketChat.authz.removeUserRoles' // 14
|
|
}); //
|
|
} //
|
|
RocketChat.models.Roles.removeUserRoles(userId, roleNames, scope); // 2
|
|
return true; // 18
|
|
}; // 1
|
|
//
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
}).call(this);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(function(){
|
|
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// packages/rocketchat_authorization/server/publications/permissions.js //
|
|
// //
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
Meteor.publish('permissions', function () { // 1
|
|
return RocketChat.models.Permissions.find({}); // 2
|
|
}); //
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
}).call(this);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(function(){
|
|
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// packages/rocketchat_authorization/server/publications/roles.coffee.js //
|
|
// //
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
__coffeescriptShare = typeof __coffeescriptShare === 'object' ? __coffeescriptShare : {}; var share = __coffeescriptShare;
|
|
Meteor.publish('roles', function() { // 1
|
|
if (!this.userId) { // 2
|
|
return this.ready(); // 3
|
|
} //
|
|
return RocketChat.models.Roles.find(); // 5
|
|
}); // 1
|
|
//
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
}).call(this);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(function(){
|
|
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// packages/rocketchat_authorization/server/publications/scopedRoles.js //
|
|
// //
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
/** //
|
|
* Publish logged-in user's roles so client-side checks can work. //
|
|
*/ //
|
|
Meteor.publish('scopedRoles', function (scope) { // 4
|
|
if (!this.userId || _.isUndefined(RocketChat.models[scope]) || !_.isFunction(RocketChat.models[scope].findRolesByUserId)) {
|
|
this.ready(); // 6
|
|
return; // 7
|
|
} //
|
|
//
|
|
return RocketChat.models[scope].findRolesByUserId(this.userId); // 10
|
|
}); //
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
}).call(this);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(function(){
|
|
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// packages/rocketchat_authorization/server/publications/usersInRole.coffee.js //
|
|
// //
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
__coffeescriptShare = typeof __coffeescriptShare === 'object' ? __coffeescriptShare : {}; var share = __coffeescriptShare;
|
|
Meteor.publish('usersInRole', function(roleName, scope, page) { // 1
|
|
var itemsPerPage, pagination; // 2
|
|
if (page == null) { //
|
|
page = 1; //
|
|
} //
|
|
if (!this.userId) { // 2
|
|
return this.ready(); // 3
|
|
} //
|
|
if (!RocketChat.authz.hasPermission(this.userId, 'access-permissions')) { // 5
|
|
throw new Meteor.Error("not-authorized"); // 6
|
|
} //
|
|
itemsPerPage = 20; // 2
|
|
pagination = { // 2
|
|
sort: { // 10
|
|
name: 1 // 11
|
|
}, //
|
|
limit: itemsPerPage, // 10
|
|
offset: itemsPerPage * (page - 1) // 10
|
|
}; //
|
|
return RocketChat.authz.getUsersInRole(roleName, scope, pagination); // 15
|
|
}); // 1
|
|
//
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
}).call(this);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(function(){
|
|
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// packages/rocketchat_authorization/server/methods/addUserToRole.coffee.js //
|
|
// //
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
__coffeescriptShare = typeof __coffeescriptShare === 'object' ? __coffeescriptShare : {}; var share = __coffeescriptShare;
|
|
Meteor.methods({ // 1
|
|
'authorization:addUserToRole': function(roleName, username, scope) { // 2
|
|
var user; // 3
|
|
if (!Meteor.userId() || !RocketChat.authz.hasPermission(Meteor.userId(), 'access-permissions')) { // 3
|
|
throw new Meteor.Error("not-authorized"); // 4
|
|
} //
|
|
if (!roleName || !_.isString(roleName) || !username || !_.isString(username)) { // 6
|
|
throw new Meteor.Error('invalid-arguments'); // 7
|
|
} //
|
|
user = RocketChat.models.Users.findOneByUsername(username, { // 3
|
|
fields: { // 9
|
|
_id: 1 // 9
|
|
} //
|
|
}); //
|
|
if ((user != null ? user._id : void 0) == null) { // 11
|
|
throw new Meteor.Error('user-not-found', 'User_not_found'); // 12
|
|
} //
|
|
RocketChat.Notifications.notifyAll('roles-change', { // 3
|
|
type: 'added', // 14
|
|
_id: roleName, // 14
|
|
u: { // 14
|
|
_id: user._id, // 14
|
|
username: username // 14
|
|
}, //
|
|
scope: scope // 14
|
|
}); //
|
|
return RocketChat.models.Roles.addUserRoles(user._id, roleName, scope); // 16
|
|
} //
|
|
}); //
|
|
//
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
}).call(this);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(function(){
|
|
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// packages/rocketchat_authorization/server/methods/deleteRole.coffee.js //
|
|
// //
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
__coffeescriptShare = typeof __coffeescriptShare === 'object' ? __coffeescriptShare : {}; var share = __coffeescriptShare;
|
|
Meteor.methods({ // 1
|
|
'authorization:deleteRole': function(roleName) { // 2
|
|
var existingUsers, ref, role, roleScope; // 3
|
|
if (!Meteor.userId() || !RocketChat.authz.hasPermission(Meteor.userId(), 'access-permissions')) { // 3
|
|
throw new Meteor.Error("not-authorized"); // 4
|
|
} //
|
|
role = RocketChat.models.Roles.findOne(roleName); // 3
|
|
if (role == null) { // 7
|
|
throw new Meteor.Error('invalid-role'); // 8
|
|
} //
|
|
if (role["protected"]) { // 10
|
|
throw new Meteor.Error('protected-role', 'Cannot_delete_a_protected_role'); // 11
|
|
} //
|
|
roleScope = role.scope || 'Users'; // 3
|
|
existingUsers = (ref = RocketChat.models[roleScope]) != null ? typeof ref.findUsersInRoles === "function" ? ref.findUsersInRoles(roleName) : void 0 : void 0;
|
|
if ((existingUsers != null ? existingUsers.count() : void 0) > 0) { // 16
|
|
throw new Meteor.Error('role-in-use', 'Cannot_delete_role_because_its_in_use'); // 17
|
|
} //
|
|
return RocketChat.models.Roles.remove(role.name); // 19
|
|
} //
|
|
}); //
|
|
//
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
}).call(this);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(function(){
|
|
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// packages/rocketchat_authorization/server/methods/removeUserFromRole.coffee.js //
|
|
// //
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
__coffeescriptShare = typeof __coffeescriptShare === 'object' ? __coffeescriptShare : {}; var share = __coffeescriptShare;
|
|
Meteor.methods({ // 1
|
|
'authorization:removeUserFromRole': function(roleName, username, scope) { // 2
|
|
var user; // 3
|
|
if (!Meteor.userId() || !RocketChat.authz.hasPermission(Meteor.userId(), 'access-permissions')) { // 3
|
|
throw new Meteor.Error("not-authorized"); // 4
|
|
} //
|
|
if (!roleName || !_.isString(roleName) || !username || !_.isString(username)) { // 6
|
|
throw new Meteor.Error('invalid-arguments'); // 7
|
|
} //
|
|
user = Meteor.users.findOne({ // 3
|
|
username: username // 9
|
|
}, { //
|
|
fields: { // 9
|
|
_id: 1 // 9
|
|
} //
|
|
}); //
|
|
if ((user != null ? user._id : void 0) == null) { // 11
|
|
throw new Meteor.Error('user-not-found'); // 12
|
|
} //
|
|
RocketChat.Notifications.notifyAll('roles-change', { // 3
|
|
type: 'removed', // 14
|
|
_id: roleName, // 14
|
|
u: { // 14
|
|
_id: user._id, // 14
|
|
username: username // 14
|
|
}, //
|
|
scope: scope // 14
|
|
}); //
|
|
return RocketChat.models.Roles.removeUserRoles(user._id, roleName, scope); // 16
|
|
} //
|
|
}); //
|
|
//
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
}).call(this);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(function(){
|
|
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// packages/rocketchat_authorization/server/methods/saveRole.coffee.js //
|
|
// //
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
__coffeescriptShare = typeof __coffeescriptShare === 'object' ? __coffeescriptShare : {}; var share = __coffeescriptShare;
|
|
Meteor.methods({ // 1
|
|
'authorization:saveRole': function(roleData) { // 2
|
|
var ref; // 3
|
|
if (!Meteor.userId() || !RocketChat.authz.hasPermission(Meteor.userId(), 'access-permissions')) { // 3
|
|
throw new Meteor.Error("error-not-authorized", 'Not authorized', { // 4
|
|
method: 'authorization:saveRole' // 4
|
|
}); //
|
|
} //
|
|
if (roleData.name == null) { // 6
|
|
throw new Meteor.Error('error-role-name-required', 'Role name is required', { // 7
|
|
method: 'authorization:saveRole' // 7
|
|
}); //
|
|
} //
|
|
if ((ref = roleData.scope) !== 'Users' && ref !== 'Subscriptions') { // 9
|
|
roleData.scope = 'Users'; // 10
|
|
} //
|
|
RocketChat.Notifications.notifyAll('roles-change', { // 3
|
|
type: 'changed', // 12
|
|
_id: roleData.name // 12
|
|
}); //
|
|
return RocketChat.models.Roles.createOrUpdate(roleData.name, roleData.scope, roleData.description); // 14
|
|
} //
|
|
}); //
|
|
//
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
}).call(this);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(function(){
|
|
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// packages/rocketchat_authorization/server/methods/addPermissionToRole.coffee.js //
|
|
// //
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
__coffeescriptShare = typeof __coffeescriptShare === 'object' ? __coffeescriptShare : {}; var share = __coffeescriptShare;
|
|
Meteor.methods({ // 1
|
|
'authorization:addPermissionToRole': function(permission, role) { // 2
|
|
if (!Meteor.userId() || !RocketChat.authz.hasPermission(Meteor.userId(), 'access-permissions')) { // 3
|
|
throw new Meteor.Error("not-authorized"); // 4
|
|
} //
|
|
return RocketChat.models.Permissions.addRole(permission, role); //
|
|
} //
|
|
}); //
|
|
//
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
}).call(this);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(function(){
|
|
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// packages/rocketchat_authorization/server/methods/removeRoleFromPermission.coffee.js //
|
|
// //
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
__coffeescriptShare = typeof __coffeescriptShare === 'object' ? __coffeescriptShare : {}; var share = __coffeescriptShare;
|
|
Meteor.methods({ // 1
|
|
'authorization:removeRoleFromPermission': function(permission, role) { // 2
|
|
if (!Meteor.userId() || !RocketChat.authz.hasPermission(Meteor.userId(), 'access-permissions')) { // 3
|
|
throw new Meteor.Error("not-authorized"); // 4
|
|
} //
|
|
return RocketChat.models.Permissions.removeRole(permission, role); //
|
|
} //
|
|
}); //
|
|
//
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
}).call(this);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(function(){
|
|
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// packages/rocketchat_authorization/server/startup.coffee.js //
|
|
// //
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
__coffeescriptShare = typeof __coffeescriptShare === 'object' ? __coffeescriptShare : {}; var share = __coffeescriptShare;
|
|
Meteor.startup(function() { // 1
|
|
var defaultRoles, i, j, len, len1, permission, permissions, results, role; // 7
|
|
permissions = [ // 7
|
|
{ //
|
|
_id: 'access-permissions', // 8
|
|
roles: ['admin'] // 8
|
|
}, { //
|
|
_id: 'add-oauth-service', // 9
|
|
roles: ['admin'] // 9
|
|
}, { //
|
|
_id: 'add-user-to-room', // 10
|
|
roles: ['admin', 'owner', 'moderator'] // 10
|
|
}, { //
|
|
_id: 'archive-room', // 11
|
|
roles: ['admin', 'owner'] // 11
|
|
}, { //
|
|
_id: 'assign-admin-role', // 12
|
|
roles: ['admin'] // 12
|
|
}, { //
|
|
_id: 'ban-user', // 13
|
|
roles: ['admin', 'moderator', 'owner'] // 13
|
|
}, { //
|
|
_id: 'bulk-create-c', // 14
|
|
roles: ['admin'] // 14
|
|
}, { //
|
|
_id: 'bulk-register-user', // 15
|
|
roles: ['admin'] // 15
|
|
}, { //
|
|
_id: 'create-c', // 16
|
|
roles: ['admin', 'user'] // 16
|
|
}, { //
|
|
_id: 'create-p', // 17
|
|
roles: ['admin', 'user'] // 17
|
|
}, { //
|
|
_id: 'create-user', // 18
|
|
roles: ['admin'] // 18
|
|
}, { //
|
|
_id: 'delete-c', // 19
|
|
roles: ['admin'] // 19
|
|
}, { //
|
|
_id: 'delete-d', // 20
|
|
roles: ['admin'] // 20
|
|
}, { //
|
|
_id: 'delete-message', // 21
|
|
roles: ['admin', 'moderator', 'owner'] // 21
|
|
}, { //
|
|
_id: 'delete-p', // 22
|
|
roles: ['admin'] // 22
|
|
}, { //
|
|
_id: 'delete-user', // 23
|
|
roles: ['admin'] // 23
|
|
}, { //
|
|
_id: 'edit-message', // 24
|
|
roles: ['admin', 'moderator', 'owner'] // 24
|
|
}, { //
|
|
_id: 'edit-other-user-active-status', // 25
|
|
roles: ['admin'] // 25
|
|
}, { //
|
|
_id: 'edit-other-user-info', // 26
|
|
roles: ['admin'] // 26
|
|
}, { //
|
|
_id: 'edit-other-user-password', // 27
|
|
roles: ['admin'] // 27
|
|
}, { //
|
|
_id: 'edit-privileged-setting', // 28
|
|
roles: ['admin'] // 28
|
|
}, { //
|
|
_id: 'edit-room', // 29
|
|
roles: ['admin', 'moderator', 'owner'] // 29
|
|
}, { //
|
|
_id: 'manage-assets', // 30
|
|
roles: ['admin'] // 30
|
|
}, { //
|
|
_id: 'manage-integrations', // 31
|
|
roles: ['admin', 'bot'] // 31
|
|
}, { //
|
|
_id: 'manage-oauth-apps', // 32
|
|
roles: ['admin'] // 32
|
|
}, { //
|
|
_id: 'mute-user', // 33
|
|
roles: ['admin', 'moderator', 'owner'] // 33
|
|
}, { //
|
|
_id: 'remove-user', // 34
|
|
roles: ['admin', 'moderator', 'owner'] // 34
|
|
}, { //
|
|
_id: 'run-import', // 35
|
|
roles: ['admin'] // 35
|
|
}, { //
|
|
_id: 'run-migration', // 36
|
|
roles: ['admin'] // 36
|
|
}, { //
|
|
_id: 'set-moderator', // 37
|
|
roles: ['admin', 'owner'] // 37
|
|
}, { //
|
|
_id: 'set-owner', // 38
|
|
roles: ['admin', 'owner'] // 38
|
|
}, { //
|
|
_id: 'unarchive-room', // 39
|
|
roles: ['admin'] // 39
|
|
}, { //
|
|
_id: 'view-c-room', // 40
|
|
roles: ['admin', 'user', 'bot'] // 40
|
|
}, { //
|
|
_id: 'view-d-room', // 41
|
|
roles: ['admin', 'user'] // 41
|
|
}, { //
|
|
_id: 'view-full-other-user-info', // 42
|
|
roles: ['admin'] // 42
|
|
}, { //
|
|
_id: 'view-logs', // 43
|
|
roles: ['admin'] // 43
|
|
}, { //
|
|
_id: 'view-other-user-channels', // 44
|
|
roles: ['admin'] // 44
|
|
}, { //
|
|
_id: 'view-p-room', // 45
|
|
roles: ['admin', 'user'] // 45
|
|
}, { //
|
|
_id: 'view-privileged-setting', // 46
|
|
roles: ['admin'] // 46
|
|
}, { //
|
|
_id: 'view-room-administration', // 47
|
|
roles: ['admin'] // 47
|
|
}, { //
|
|
_id: 'view-statistics', // 48
|
|
roles: ['admin'] // 48
|
|
}, { //
|
|
_id: 'view-user-administration', // 49
|
|
roles: ['admin'] // 49
|
|
} //
|
|
]; //
|
|
for (i = 0, len = permissions.length; i < len; i++) { // 52
|
|
permission = permissions[i]; //
|
|
if (RocketChat.models.Permissions.findOneById(permission._id) == null) { // 53
|
|
RocketChat.models.Permissions.upsert(permission._id, { // 54
|
|
$set: permission // 54
|
|
}); //
|
|
} //
|
|
} // 52
|
|
defaultRoles = [ // 7
|
|
{ //
|
|
name: 'admin', // 57
|
|
scope: 'Users', // 57
|
|
description: 'Admin' // 57
|
|
}, { //
|
|
name: 'moderator', // 58
|
|
scope: 'Subscriptions', // 58
|
|
description: 'Moderator' // 58
|
|
}, { //
|
|
name: 'owner', // 59
|
|
scope: 'Subscriptions', // 59
|
|
description: 'Owner' // 59
|
|
}, { //
|
|
name: 'user', // 60
|
|
scope: 'Users', // 60
|
|
description: '' // 60
|
|
}, { //
|
|
name: 'bot', // 61
|
|
scope: 'Users', // 61
|
|
description: '' // 61
|
|
} //
|
|
]; //
|
|
results = []; // 64
|
|
for (j = 0, len1 = defaultRoles.length; j < len1; j++) { //
|
|
role = defaultRoles[j]; //
|
|
results.push(RocketChat.models.Roles.upsert({ // 65
|
|
_id: role.name // 65
|
|
}, { //
|
|
$setOnInsert: { // 65
|
|
scope: role.scope, // 65
|
|
description: role.description || '', // 65
|
|
"protected": true // 65
|
|
} //
|
|
})); //
|
|
} // 64
|
|
return results; //
|
|
}); // 1
|
|
//
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
}).call(this);
|
|
|
|
|
|
/* Exports */
|
|
if (typeof Package === 'undefined') Package = {};
|
|
Package['rocketchat:authorization'] = {};
|
|
|
|
})();
|
|
|
|
//# sourceMappingURL=rocketchat_authorization.js.map
|