1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/rocketchat_ynh.git synced 2024-09-03 20:16:25 +02:00
rocketchat_ynh/sources/programs/server/packages/rocketchat_authorization.js
2016-04-29 16:32:48 +02:00

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