module.exports.Group = function(tenantAlias, id, alias, opts) { opts = opts || {}; var that = {}; that.id = id; that.alias = alias; that.tenant = TenantsAPI.getCachedTenantByAlias(tenantAlias); that.visibility = opts.visibility; that.joinable = opts.joinable; that.displayName = opts.displayName; that.description = opts.description; that.profilePath = '/group/' + that.id; that.resourceType = 'group'; that.picture = {}; if (opts.smallPictureUri) { that.picture.smallUri = opts.smallPictureUri; } if (opts.mediumPictureUri) { that.picture.mediumUri = opts.mediumPictureUri; } if (opts.largePictureUri) { that.picture.largeUri = opts.largePictureUri; } return that; };
var _transformGroupDocuments = function(ctx, docs, callback) { var transformedDocs = {}; var docIds = _.keys(docs); for (var i = 0; i < docIds.length; i++) { var docId = docIds[i]; var doc = docs[docId]; var result = _.extend({}, doc.fields, {'id': doc['_id']}); // Augment it with a downloadable thumbnail url if it has a thumbnail uri. // The thumbnail should not be hidden, even if the group is private. if (doc.fields.thumbnailUrl) { result.thumbnailUrl = PrincipalsUtil.getSignedPictureUrl(ctx, ctx.tenant().alias, doc.fields.thumbnailUrl); } if (doc.fields._extra && doc.fields._extra.alias) { result.alias = doc.fields._extra.alias; } // Attach the group tenant information result.tenant = TenantsAPI.getCachedTenantByAlias(result.tenantAlias); transformedDocs[docId] = result; } return callback(null, transformedDocs); };
var _storageHashToDiscussion = function(discussionId, hash) { // Use tenantAlias as a slug column to determine if this discussion actually existed if (!hash.tenantAlias) { return null; } return new Discussion( TenantsAPI.getCachedTenantByAlias(hash.tenantAlias), discussionId, hash.createdBy, hash.displayName, hash.description, hash.visibility, hash.created, hash.lastModified ); };
var ensureGlobalAdmin = function(config, callback) { // We'll create/get 1 global admin account in the internal global tenant that can be used // to create tenants/other global accounts. var globalTenant = TenantsAPI.getCachedTenantByAlias(config.servers.globalAdminAlias); var globalLoginId = new LoginId(globalTenant.alias, AuthenticationConstants.providers.LOCAL, 'administrator', { 'password': '******' }); var globalUser = new User(globalTenant.alias, null, 'Global Administrator', { visibility: 'private', isGlobalAdmin: true }); var globalContext = new Context(globalTenant, globalUser); AuthenticationAPI.getUserIdFromLoginId(globalLoginId.tenantAlias, globalLoginId.provider, globalLoginId.externalId, function(err, userId) { if (err) { return callback(err); } // The global admin does not exist. create it if (!userId) { AuthenticationAPI.createUser(globalContext, globalLoginId, globalUser.displayName, { visibility: 'private' }, function(err, createdUser) { if (err) { return callback(err); } // Promote them to administrator PrincipalsAPI.setGlobalAdmin(globalContext, createdUser.id, true, function(err) { if (err) { return callback(err); } log().info('Admin account created with ID "%s" and username "%s".', createdUser.id, 'administrator'); return callback(); }); }); } else { return callback(); } }); };