Example #1
0
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;
};
Example #2
0
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);
};
Example #3
0
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
    );
};
Example #4
0
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();
        }
    });
};