72 lines
1.8 KiB
JavaScript
72 lines
1.8 KiB
JavaScript
import { Meteor } from 'meteor/meteor';
|
|
import { Accounts } from 'meteor/accounts-base';
|
|
|
|
Meteor.startup(function() {
|
|
_.each(Meteor.settings.servers, function(endpoints, serverType) {
|
|
_.each(endpoints, function(endpoint) {
|
|
var server = _.clone(endpoint);
|
|
server.origin = 'json';
|
|
server.type = serverType;
|
|
Servers.insert(server);
|
|
});
|
|
});
|
|
});
|
|
|
|
class ServersControl {
|
|
|
|
static validateUser() {
|
|
if (!Meteor.userId()) {
|
|
throw new Meteor.Error('not-authorized');
|
|
}
|
|
}
|
|
|
|
static writeCallback(error, affected) {
|
|
if (error) {
|
|
throw new Meteor.Error('data-write', error);
|
|
}
|
|
}
|
|
|
|
static save(serverSettings) {
|
|
this.validateUser();
|
|
var query = {
|
|
_id: serverSettings._id
|
|
};
|
|
var options = {
|
|
upsert: true
|
|
};
|
|
|
|
if (!serverSettings._id) {
|
|
delete serverSettings._id;
|
|
}
|
|
|
|
return Servers.update(query, serverSettings, options, this.writeCallback);
|
|
}
|
|
|
|
static setActive(serverId) {
|
|
this.validateUser();
|
|
var query = {
|
|
_id: Meteor.userId()
|
|
};
|
|
var data = {
|
|
$set: {
|
|
'profile.activeServer': serverId
|
|
}
|
|
};
|
|
Accounts.users.update(query, data, this.writeCallback);
|
|
}
|
|
|
|
static remove(serverId) {
|
|
this.validateUser();
|
|
var query = {
|
|
_id: serverId
|
|
};
|
|
return Servers.remove(query, this.writeCallback);
|
|
}
|
|
|
|
}
|
|
|
|
Meteor.methods({
|
|
serverSave: serverSettings => ServersControl.save(serverSettings),
|
|
serverSetActive: serverId => ServersControl.setActive(serverId),
|
|
serverRemove: serverId => ServersControl.remove(serverId)
|
|
}); |