Skip to content

Commit f55057d

Browse files
authored
Merge pull request #1691 from adaptlearning/issue/1502
Fixes #1502
2 parents cc19a42 + e79b020 commit f55057d

28 files changed

Lines changed: 1388 additions & 1511 deletions

.travis.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ before_install:
3333
- mongod --version
3434
- npm install -g adapt-cli
3535
- adapt --version
36+
- npm install -g grunt-cli
3637

3738
install:
3839
- npm config set spin false

Gruntfile.js

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -201,17 +201,10 @@ module.exports = function(grunt) {
201201
files: ['./test_frontend/*.js', '!./test_frontend/login.js']
202202
},
203203
mochaTest: {
204-
test: {
205-
options: {
206-
reporter: 'dot',
207-
timeout: 3500,
208-
require: ['should'],
209-
ui: 'bdd',
210-
globals: ['app']
211-
},
212-
src: [
213-
'test/*.js'
214-
]
204+
src: ['test/*.js'],
205+
options: {
206+
reporter: 'spec',
207+
timeout: 3500
215208
}
216209
},
217210
open: {
@@ -357,7 +350,6 @@ module.exports = function(grunt) {
357350
}
358351
});
359352

353+
grunt.registerTask('test', ['mochaTest'/*, 'casperjs'*/]);
360354
grunt.registerTask('default', ['merge-json', 'requireBundle', 'less:dev', 'handlebars', 'watch']);
361-
grunt.registerTask('test', ['mochaTest']);
362-
grunt.registerTask('test-ui', ['casperjs']);
363355
};

Makefile

Lines changed: 0 additions & 44 deletions
This file was deleted.

lib/filestorage.js

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,6 @@
11
// LICENCE https://github.com/adaptlearning/adapt_authoring/blob/master/LICENSE
2-
/**
3-
* Module depencies
4-
*/
5-
6-
var path = require('path'),
7-
fs = require('fs'),
8-
logger = require('./logger'),
9-
EventEmitter = require('events').EventEmitter,
10-
util = require('util'),
11-
pluginmanager = require('./pluginmanager'),
12-
configuration = require('./configuration');
13-
2+
var logger = require('./logger')
3+
var pluginmanager = require('./pluginmanager');
144
/*
155
* CONSTANTS
166
*/

lib/logger.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,16 @@ Log.prototype.add = function(transport, options) {
4141
}
4242
};
4343

44+
/**
45+
* Function to change transpots log level
46+
*/
47+
Log.prototype.level = function(type, level) {
48+
if(!this.logger.transports.hasOwnProperty(type)) {
49+
return console.log("Unknown transport type", type);
50+
}
51+
this.logger.transports[type].level = level;
52+
};
53+
4454
/**
4555
* A wrapper for winston's clear method (removes all transports)
4656
*

lib/permissions.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ var ignoreRoutes = [
1111
/^\/\/?$/,
1212
/^\/install\/?.*$/,
1313
/^\/api\/login\/?$/,
14+
/^\/api\/loginas\/?$/,
1415
/^\/api\/logout\/?$/,
1516
/^\/api\/authcheck\/?$/,
1617
/^\/api\/register\/?$/,

lib/rolemanager.js

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -164,16 +164,14 @@ var RoleManager = {
164164
var self = this;
165165
database.getDatabase(function(err, db){
166166
// confirm the role exists and is there is only one of them
167-
self.retrieveRole({ _id: roleId }, function (error, results) {
167+
self.retrieveRole({ _id: roleId }, function (error, result) {
168168
if (error) {
169169
return callback(error);
170170
}
171-
172-
if (results && results.length === 1) {
173-
return db.destroy('role', { _id: roleId }, callback);
171+
if (!result) {
172+
return callback(new Error('No matching role record found'));
174173
}
175-
176-
return callback(new Error('No matching role record found'));
174+
return db.destroy('role', { _id: result._id }, callback);
177175
});
178176
}, configuration.getConfig('dbName'));
179177
},
@@ -559,12 +557,13 @@ function syncDefaultRoles (options, next) {
559557
}
560558

561559
// Apply the latest version of the roles to the master tenant
562-
db.update('role', {name: role.name}, { version: role.version, statement: role.statement }, function (err, rec) {
563-
if (err || !rec) {
564-
// Log error, but continue
565-
logger.log('warn', '- ' + role.name + ' update failed!', err);
560+
db.update('role', { name: role.name }, { version: role.version, statement: role.statement }, function (err, rec) {
561+
if (err) {
562+
logger.log('warn', '- ' + role.name + ' update failed', err);
563+
}
564+
if (!rec) {
565+
logger.log('warn', '- ' + role.name + ' doesn\'t exist, cannot update', err);
566566
}
567-
568567
return callback(err);
569568
});
570569
},

lib/tenantmanager.js

Lines changed: 44 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,17 @@
22
/**
33
* Tenant management module
44
*/
5-
6-
var util = require('util'),
7-
database = require('./database'),
8-
logger = require('./logger'),
9-
fs = require('fs'),
10-
path = require('path'),
11-
ncp = require('ncp'),
12-
mkdirp = require('mkdirp'),
13-
frameworkhelper = require('./frameworkhelper'),
14-
configuration = require('./configuration');
5+
var async = require('async');
6+
var fs = require('fs-extra');
7+
var mkdirp = require('mkdirp');
8+
var ncp = require('ncp');
9+
var path = require('path');
10+
var util = require('util');
11+
12+
var configuration = require('./configuration');
13+
var database = require('./database');
14+
var frameworkhelper = require('./frameworkhelper');
15+
var logger = require('./logger');
1516

1617
// Constants
1718
var MODNAME = 'tenantmanager';
@@ -442,12 +443,12 @@ exports = module.exports = {
442443
}
443444

444445
// only execute if we have a single matching record
445-
self.retrieveTenant(search, function (error, result) {
446+
self.retrieveTenant(search, function (error, tenantRec) {
446447
if (error) {
447448
return callback(error);
448449
}
449450

450-
if (result) {
451+
if (tenantRec) {
451452
if (!update.updatedAt) {
452453
update.updatedAt = new Date();
453454
}
@@ -458,12 +459,12 @@ exports = module.exports = {
458459
}
459460

460461
// Re-fetch the tenant
461-
self.retrieveTenant(search, function(error, result) {
462+
self.retrieveTenant(search, function(error, tenantRec) {
462463
if (error) {
463464
return callback(error);
464465
}
465466

466-
return callback(null, result);
467+
return callback(null, tenantRec);
467468
});
468469

469470
});
@@ -489,18 +490,15 @@ exports = module.exports = {
489490
logger.log('error', err);
490491
return callback(err);
491492
}
492-
493-
// confirm the tenant exists and is there is only one of them
494-
self.retrieveTenant({ _id: tenantId }, function (error, results) {
493+
// confirm the tenant exists
494+
self.retrieveTenant({ _id: tenantId }, function (error, tenantRec) {
495495
if (error) {
496496
return callback(error);
497497
}
498-
499-
if (results && results.length === 1) {
500-
return self.updateTenant({ '_id': results[0]._id }, { _isDeleted: true }, callback);
498+
if (!result) {
499+
return callback(new Error('No matching tenant record found'));
501500
}
502-
503-
return callback(new Error('No matching tenant record found'));
501+
return self.updateTenant({ '_id': tenantRec._id }, { _isDeleted: true }, callback);
504502
});
505503
}, configuration.getConfig('dbName'));
506504
},
@@ -515,27 +513,40 @@ exports = module.exports = {
515513

516514
deleteTenant: function (tenant, callback) {
517515
var self = this;
518-
database.getDatabase(function(err, db){
516+
database.getDatabase(function(err, db) {
519517
if (err) {
520518
logger.log('error', err);
521519
return callback(err);
522520
}
523-
524-
// confirm the tenant exists and is there is only one of them
525-
self.retrieveTenant(tenant, function (error, result) {
521+
// confirm the tenant exists
522+
self.retrieveTenant(tenant, function (error, tenantRec) {
526523
if (error) {
527524
return callback(error);
528525
}
529-
530-
if (result) {
531-
return db.destroy('tenant', tenant, callback);
526+
if (!tenantRec) {
527+
return callback(new Error('No matching tenant record found'));
532528
}
533-
534-
return callback(new Error('No matching tenant record found'));
529+
async.parallel([
530+
function cleanDB(done) {
531+
db.destroy('tenant', tenant, done);
532+
},
533+
function removeTemp(done) {
534+
self.deleteTenantFilesystem(tenantRec, done);
535+
}
536+
], callback);
535537
});
536538
}, configuration.getConfig('dbName'));
537539
},
538540

541+
/**
542+
* Removes the tenant's working folders
543+
* @param {object} tenant - a fully defined tenant object
544+
* @param {function} callback - function of the form function (error)
545+
*/
546+
deleteTenantFilesystem: function(tenant, callback) {
547+
fs.remove(path.join(configuration.tempDir, tenant._id.toString()), callback);
548+
},
549+
539550
/**
540551
* returns the database object for a named tenant
541552
*
@@ -544,7 +555,7 @@ exports = module.exports = {
544555
*/
545556
getDatabaseConfig: function (tenantId, next) {
546557
// just fetch up the tenant from the master db
547-
this.retrieveTenant({ _id: tenantId }, function (err, tenant) {
558+
this.retrieveTenant({ _id: tenantId }, function (err, tenantRec) {
548559
if (err) {
549560
return next(err);
550561
}
@@ -554,7 +565,7 @@ exports = module.exports = {
554565
}
555566

556567
// if database is not defined, the caller is expected to deal with item
557-
return next(null, tenant.database);
568+
return next(null, tenantRec.database);
558569
});
559570
}
560571
};

0 commit comments

Comments
 (0)