2016-08-10 15:39:31 +02:00
|
|
|
import { Meteor } from 'meteor/meteor';
|
|
|
|
|
import { Accounts } from 'meteor/accounts-base';
|
2016-04-21 23:14:28 +02:00
|
|
|
|
2016-08-10 15:39:31 +02:00
|
|
|
Meteor.startup(function() {
|
2016-04-21 23:14:28 +02:00
|
|
|
_.each(Meteor.settings.servers, function(endpoints, serverType) {
|
|
|
|
|
_.each(endpoints, function(endpoint) {
|
|
|
|
|
var server = _.clone(endpoint);
|
2016-05-07 15:34:27 +02:00
|
|
|
server.origin = 'json';
|
2016-04-21 23:14:28 +02:00
|
|
|
server.type = serverType;
|
|
|
|
|
Servers.insert(server);
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
2016-06-01 19:50:17 +02:00
|
|
|
class ServersControl {
|
2016-05-15 04:46:10 +02:00
|
|
|
|
2016-06-01 19:50:17 +02:00
|
|
|
static validateUser() {
|
2016-04-21 23:14:28 +02:00
|
|
|
if (!Meteor.userId()) {
|
|
|
|
|
throw new Meteor.Error('not-authorized');
|
|
|
|
|
}
|
2016-06-01 19:50:17 +02:00
|
|
|
}
|
2016-05-07 15:34:27 +02:00
|
|
|
|
2016-06-01 19:50:17 +02:00
|
|
|
static writeCallback(error, affected) {
|
|
|
|
|
if (error) {
|
|
|
|
|
throw new Meteor.Error('data-write', error);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static save(serverSettings) {
|
|
|
|
|
this.validateUser();
|
2016-05-15 04:46:10 +02:00
|
|
|
var query = {
|
2016-05-07 15:34:27 +02:00
|
|
|
_id: serverSettings._id
|
|
|
|
|
};
|
|
|
|
|
var options = {
|
|
|
|
|
upsert: true
|
|
|
|
|
};
|
2016-05-14 17:30:11 +02:00
|
|
|
|
|
|
|
|
if (!serverSettings._id) {
|
|
|
|
|
delete serverSettings._id;
|
|
|
|
|
}
|
|
|
|
|
|
2016-06-01 19:50:17 +02:00
|
|
|
return Servers.update(query, serverSettings, options, this.writeCallback);
|
|
|
|
|
}
|
2016-04-21 23:14:28 +02:00
|
|
|
|
2016-06-01 19:50:17 +02:00
|
|
|
static setActive(serverId) {
|
|
|
|
|
this.validateUser();
|
|
|
|
|
var query = {
|
|
|
|
|
_id: Meteor.userId()
|
2016-05-07 15:34:27 +02:00
|
|
|
};
|
2016-06-01 19:50:17 +02:00
|
|
|
var data = {
|
|
|
|
|
$set: {
|
|
|
|
|
'profile.activeServer': serverId
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
Accounts.users.update(query, data, this.writeCallback);
|
|
|
|
|
}
|
2016-05-07 15:34:27 +02:00
|
|
|
|
2016-06-01 19:50:17 +02:00
|
|
|
static remove(serverId) {
|
|
|
|
|
this.validateUser();
|
2016-05-15 04:46:10 +02:00
|
|
|
var query = {
|
|
|
|
|
_id: serverId
|
|
|
|
|
};
|
2016-06-01 19:50:17 +02:00
|
|
|
return Servers.remove(query, this.writeCallback);
|
2016-05-07 15:34:27 +02:00
|
|
|
}
|
2016-05-15 04:46:10 +02:00
|
|
|
|
2016-06-01 19:50:17 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Meteor.methods({
|
|
|
|
|
serverSave: serverSettings => ServersControl.save(serverSettings),
|
|
|
|
|
serverSetActive: serverId => ServersControl.setActive(serverId),
|
|
|
|
|
serverRemove: serverId => ServersControl.remove(serverId)
|
2016-08-29 18:47:53 +02:00
|
|
|
});
|