diff options
Diffstat (limited to 'ui/imports/startup/server')
-rw-r--r-- | ui/imports/startup/server/config.js | 9 | ||||
-rw-r--r-- | ui/imports/startup/server/configs/accounts.js | 16 | ||||
-rw-r--r-- | ui/imports/startup/server/index.js | 13 | ||||
-rw-r--r-- | ui/imports/startup/server/register-api.js | 56 | ||||
-rw-r--r-- | ui/imports/startup/server/seeds.js | 10 | ||||
-rw-r--r-- | ui/imports/startup/server/seeds/constants.js | 68 | ||||
-rw-r--r-- | ui/imports/startup/server/seeds/users.js | 51 |
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); |