summaryrefslogtreecommitdiffstats
path: root/ui/imports/startup/server
diff options
context:
space:
mode:
Diffstat (limited to 'ui/imports/startup/server')
-rw-r--r--ui/imports/startup/server/config.js9
-rw-r--r--ui/imports/startup/server/configs/accounts.js16
-rw-r--r--ui/imports/startup/server/index.js13
-rw-r--r--ui/imports/startup/server/register-api.js56
-rw-r--r--ui/imports/startup/server/seeds.js10
-rw-r--r--ui/imports/startup/server/seeds/constants.js68
-rw-r--r--ui/imports/startup/server/seeds/users.js51
7 files changed, 223 insertions, 0 deletions
diff --git a/ui/imports/startup/server/config.js b/ui/imports/startup/server/config.js
new file mode 100644
index 0000000..ac7c9a2
--- /dev/null
+++ b/ui/imports/startup/server/config.js
@@ -0,0 +1,9 @@
+/////////////////////////////////////////////////////////////////////////////////////////
+// Copyright (c) 2017 Koren Lev (Cisco Systems), Yaron Yogev (Cisco Systems) and others /
+// /
+// All rights reserved. This program and the accompanying materials /
+// are made available under the terms of the Apache License, Version 2.0 /
+// which accompanies this distribution, and is available at /
+// http://www.apache.org/licenses/LICENSE-2.0 /
+/////////////////////////////////////////////////////////////////////////////////////////
+import './configs/accounts';
diff --git a/ui/imports/startup/server/configs/accounts.js b/ui/imports/startup/server/configs/accounts.js
new file mode 100644
index 0000000..f098233
--- /dev/null
+++ b/ui/imports/startup/server/configs/accounts.js
@@ -0,0 +1,16 @@
+/////////////////////////////////////////////////////////////////////////////////////////
+// Copyright (c) 2017 Koren Lev (Cisco Systems), Yaron Yogev (Cisco Systems) and others /
+// /
+// All rights reserved. This program and the accompanying materials /
+// are made available under the terms of the Apache License, Version 2.0 /
+// which accompanies this distribution, and is available at /
+// http://www.apache.org/licenses/LICENSE-2.0 /
+/////////////////////////////////////////////////////////////////////////////////////////
+Accounts.validateNewUser((_user) => {
+ let loggedInUser = Meteor.user();
+ if (Roles.userIsInRole(loggedInUser, 'manage-users', Roles.GLOBAL_GROUP)) {
+ return true;
+ }
+
+ throw new Meteor.Error(403, 'NotAuthorized to create new users');
+});
diff --git a/ui/imports/startup/server/index.js b/ui/imports/startup/server/index.js
new file mode 100644
index 0000000..ee22e45
--- /dev/null
+++ b/ui/imports/startup/server/index.js
@@ -0,0 +1,13 @@
+/////////////////////////////////////////////////////////////////////////////////////////
+// Copyright (c) 2017 Koren Lev (Cisco Systems), Yaron Yogev (Cisco Systems) and others /
+// /
+// All rights reserved. This program and the accompanying materials /
+// are made available under the terms of the Apache License, Version 2.0 /
+// which accompanies this distribution, and is available at /
+// http://www.apache.org/licenses/LICENSE-2.0 /
+/////////////////////////////////////////////////////////////////////////////////////////
+// This defines all the collections, publications and methods that the application provides
+// as an API to the client.
+import './register-api.js';
+import './seeds.js';
+import './config.js';
diff --git a/ui/imports/startup/server/register-api.js b/ui/imports/startup/server/register-api.js
new file mode 100644
index 0000000..3475c53
--- /dev/null
+++ b/ui/imports/startup/server/register-api.js
@@ -0,0 +1,56 @@
+/////////////////////////////////////////////////////////////////////////////////////////
+// Copyright (c) 2017 Koren Lev (Cisco Systems), Yaron Yogev (Cisco Systems) and others /
+// /
+// All rights reserved. This program and the accompanying materials /
+// are made available under the terms of the Apache License, Version 2.0 /
+// which accompanies this distribution, and is available at /
+// http://www.apache.org/licenses/LICENSE-2.0 /
+/////////////////////////////////////////////////////////////////////////////////////////
+import '../../api/constants/server/publications';
+
+import '../../api/environments/server/publications.js';
+import '../../api/environments/methods.js';
+
+import '../../api/inventories/server/publications.js';
+import '../../api/inventories/server/methods.js';
+
+import '../../api/scans/server/publications.js';
+import '../../api/scans/methods.js';
+import '../../api/scans/server/methods.js';
+
+import '../../api/scheduled-scans/server/publications.js';
+import '../../api/scheduled-scans/methods.js';
+import '../../api/scheduled-scans/server/methods.js';
+
+import '../../api/messages/server/publications';
+import '../../api/messages/server/methods';
+import '../../api/messages/methods.js';
+
+import '../../api/cliques/server/publications';
+import '../../api/cliques/methods.js';
+
+import '../../api/links/server/publications';
+import '../../api/links/methods.js';
+
+import '../../api/statistics/server/publications';
+import '../../api/statistics/methods.js';
+
+import '../../api/attributes_for_hover_on_data/server/publications';
+import '../../api/attributes_for_hover_on_data/methods.js';
+
+import '../../api/link-types/server/publications';
+import '../../api/link-types/methods.js';
+
+import '../../api/clique-types/server/publications';
+import '../../api/clique-types/methods.js';
+
+import '../../api/clique-constraints/server/publications';
+import '../../api/clique-constraints/methods.js';
+
+import '../../api/accounts/server/publications';
+import '../../api/accounts/methods';
+
+import '../../api/supported_environments/server/publications';
+import '../../api/supported_environments/methods';
+
+import '../../api/migrations/migrations';
diff --git a/ui/imports/startup/server/seeds.js b/ui/imports/startup/server/seeds.js
new file mode 100644
index 0000000..a6132bf
--- /dev/null
+++ b/ui/imports/startup/server/seeds.js
@@ -0,0 +1,10 @@
+/////////////////////////////////////////////////////////////////////////////////////////
+// Copyright (c) 2017 Koren Lev (Cisco Systems), Yaron Yogev (Cisco Systems) and others /
+// /
+// All rights reserved. This program and the accompanying materials /
+// are made available under the terms of the Apache License, Version 2.0 /
+// which accompanies this distribution, and is available at /
+// http://www.apache.org/licenses/LICENSE-2.0 /
+/////////////////////////////////////////////////////////////////////////////////////////
+//import './seeds/constants'; //disabled as of US2758.
+import './seeds/users';
diff --git a/ui/imports/startup/server/seeds/constants.js b/ui/imports/startup/server/seeds/constants.js
new file mode 100644
index 0000000..2d59d99
--- /dev/null
+++ b/ui/imports/startup/server/seeds/constants.js
@@ -0,0 +1,68 @@
+/////////////////////////////////////////////////////////////////////////////////////////
+// Copyright (c) 2017 Koren Lev (Cisco Systems), Yaron Yogev (Cisco Systems) and others /
+// /
+// All rights reserved. This program and the accompanying materials /
+// are made available under the terms of the Apache License, Version 2.0 /
+// which accompanies this distribution, and is available at /
+// http://www.apache.org/licenses/LICENSE-2.0 /
+/////////////////////////////////////////////////////////////////////////////////////////
+import { Constants } from '/imports/api/constants/constants';
+import * as R from 'ramda';
+import { Distributions } from '/imports/api/constants/data/distributions';
+//import { NetworkPlugins } from './data/network-plugins';
+import { LogLevels } from '/imports/api/constants/data/log-levels';
+import { MechanismDrivers } from '/imports/api/constants/data/mechanism-drivers';
+import { ObjectTypesForLinks } from '/imports/api/constants/data/object-types-for-links';
+import { TypeDrivers } from '/imports/api/constants/data/type-drivers';
+import { EnvTypes } from '/imports/api/constants/data/env-types';
+import { Statuses as ScansStatuses } from '/imports/api/constants/data/scans-statuses';
+import { EnvironmentMonitoringTypes } from '/imports/api/constants/data/environment-monitoring-types';
+import { EnvProvisionTypes } from '/imports/api/constants/data/environment-provision-types';
+import { MessageSourceSystems } from '/imports/api/constants/data/message-source-systems';
+
+let constantsDefaults = [{
+ name: 'env_types',
+ values: EnvTypes
+}, {
+ name: 'scans_statuses',
+ values: ScansStatuses
+}, {
+ name: 'environment_monitoring_types',
+ values: EnvironmentMonitoringTypes
+}, {
+ name: 'distributions',
+ values: Distributions
+}, {
+ name: 'log_levels',
+ values: LogLevels
+}, {
+ name: 'mechanism_drivers',
+ values: MechanismDrivers
+}, {
+ name: 'object_types_for_links',
+ values: ObjectTypesForLinks
+}, {
+ name: 'type_drivers',
+ values: TypeDrivers
+}, {
+ name: 'environment_provision_types',
+ values: EnvProvisionTypes
+}, {
+ name: 'message_source_systems',
+ values: MessageSourceSystems
+}];
+
+if (Meteor.server) {
+ R.forEach((def) => {
+ insertConstants(Constants, def.name, def.values);
+ }, constantsDefaults);
+}
+
+function insertConstants(collection, name, values) {
+ if (collection.find({ name: name}).count() === 0) {
+ Constants.insert({
+ name: name,
+ data: values
+ });
+ }
+}
diff --git a/ui/imports/startup/server/seeds/users.js b/ui/imports/startup/server/seeds/users.js
new file mode 100644
index 0000000..34c20c6
--- /dev/null
+++ b/ui/imports/startup/server/seeds/users.js
@@ -0,0 +1,51 @@
+/////////////////////////////////////////////////////////////////////////////////////////
+// Copyright (c) 2017 Koren Lev (Cisco Systems), Yaron Yogev (Cisco Systems) and others /
+// /
+// All rights reserved. This program and the accompanying materials /
+// are made available under the terms of the Apache License, Version 2.0 /
+// which accompanies this distribution, and is available at /
+// http://www.apache.org/licenses/LICENSE-2.0 /
+/////////////////////////////////////////////////////////////////////////////////////////
+import * as R from 'ramda';
+import { Roles } from 'meteor/alanning:roles';
+
+let users = [
+ {
+ username: 'admin',
+ name: 'admin',
+ email: 'admin@example.com',
+ password: '123456',
+ roles: [
+ { role: 'manage-users', group: Roles.GLOBAL_GROUP },
+ { role: 'manage-link-types', group: Roles.GLOBAL_GROUP },
+ { role: 'manage-clique-types', group: Roles.GLOBAL_GROUP },
+ { role: 'manage-clique-constraints', group: Roles.GLOBAL_GROUP },
+ { role: 'view-env', group: Roles.GLOBAL_GROUP },
+ { role: 'edit-env', group: Roles.GLOBAL_GROUP },
+ ]
+ }
+];
+
+R.forEach((user) => {
+ let id;
+ let userDb = Meteor.users.findOne({ username: user.username });
+ if (R.isNil(userDb)) {
+ console.log('creating user', user);
+ id = Accounts.createUser({
+ username: user.username,
+ email: user.email,
+ password: user.password,
+ profile: { name: user.name }
+ });
+ } else {
+ id = userDb._id;
+ }
+
+ if (user.roles.length > 0) {
+ console.log('adding roles to user', user, user.roles);
+
+ R.forEach((roleItem) => {
+ Roles.addUsersToRoles(id, roleItem.role, roleItem.group);
+ }, user.roles);
+ }
+}, users);