diff options
author | Koren Lev <korenlev@gmail.com> | 2017-07-27 16:42:15 +0300 |
---|---|---|
committer | Koren Lev <korenlev@gmail.com> | 2017-07-27 16:42:15 +0300 |
commit | b88c78e3cf2bef22aa2f1c4d0bf305e303bc15f0 (patch) | |
tree | ffa30a6e1511d72562d8772b8700cda52b2752a1 /ui/imports/api/clique-constraints | |
parent | b70483739d1f6f4f0d31987ed2e4d1e30d71d579 (diff) |
adding calipso ui
Change-Id: Ifa6f63daebb07f45580f747341960e898fdb00c4
Signed-off-by: Koren Lev <korenlev@gmail.com>
Diffstat (limited to 'ui/imports/api/clique-constraints')
-rw-r--r-- | ui/imports/api/clique-constraints/clique-constraints.js | 48 | ||||
-rw-r--r-- | ui/imports/api/clique-constraints/methods.js | 99 | ||||
-rw-r--r-- | ui/imports/api/clique-constraints/server/publications.js | 30 |
3 files changed, 177 insertions, 0 deletions
diff --git a/ui/imports/api/clique-constraints/clique-constraints.js b/ui/imports/api/clique-constraints/clique-constraints.js new file mode 100644 index 0000000..8641715 --- /dev/null +++ b/ui/imports/api/clique-constraints/clique-constraints.js @@ -0,0 +1,48 @@ +///////////////////////////////////////////////////////////////////////////////////////// +// 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 { Mongo } from 'meteor/mongo'; +import { SimpleSchema } from 'meteor/aldeed:simple-schema'; +import * as R from 'ramda'; +import { Constants } from '/imports/api/constants/constants'; + +export const CliqueConstraints = new Mongo.Collection( + 'clique_constraints', { idGeneration: 'MONGO' }); + +let schema = { + _id: { type: { _str: { type: String, regEx: SimpleSchema.RegEx.Id } } }, + + focal_point_type: { + type: String, + custom: function () { + let that = this; + let values = Constants.findOne({ name: 'object_types_for_links' }).data; + + if (R.isNil(R.find(R.propEq('value', that.value), values))) { + return 'notAllowed'; + } + } + }, + + constraints: { + type: [String], + minCount: 1, + custom: function () { + let that = this; + let objectTypes = Constants.findOne({ name: 'object_types_for_links' }).data; + + let findResult = R.intersection(that.value, R.pluck('value', objectTypes)); + if (findResult.length !== that.value.length) { return 'notAllowed'; } + + return; + }, + }, +}; + +CliqueConstraints.schema = new SimpleSchema(schema); +CliqueConstraints.attachSchema(CliqueConstraints.schema); diff --git a/ui/imports/api/clique-constraints/methods.js b/ui/imports/api/clique-constraints/methods.js new file mode 100644 index 0000000..c9ae997 --- /dev/null +++ b/ui/imports/api/clique-constraints/methods.js @@ -0,0 +1,99 @@ +///////////////////////////////////////////////////////////////////////////////////////// +// 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 { ValidatedMethod } from 'meteor/mdg:validated-method'; +import * as R from 'ramda'; +import { Roles } from 'meteor/alanning:roles'; + +import { CliqueConstraints } from './clique-constraints'; + +export const insert = new ValidatedMethod({ + name: 'clique_constraints.insert', + validate: CliqueConstraints.simpleSchema() + .pick([ +// 'environment', + 'focal_point_type', + 'constraints', + 'constraints.$', + ]).validator({ clean: true, filter: false }), + run({ + // environment, + focal_point_type, + constraints, + }) { + if (! Roles.userIsInRole(Meteor.userId(), 'manage-clique-constraints', Roles.GLOBAL_GROUP)) { + throw new Meteor.Error('unauthorized for inserting clique constraints'); + } + + let cliqueConstraint = CliqueConstraints.schema.clean({}); + + cliqueConstraint = R.merge(cliqueConstraint, { + // environment, + focal_point_type, + constraints, + }); + + CliqueConstraints.insert(cliqueConstraint); + } +}); + +export const remove = new ValidatedMethod({ + name: 'clique_constraints.remove', + validate: CliqueConstraints.simpleSchema() + .pick([ + '_id', + ]).validator({ clean: true, filter: false }), + run({ + _id + }) { + if (! Roles.userIsInRole(Meteor.userId(), 'manage-clique-constraints', Roles.DEFAULT_GROUP)) { + throw new Meteor.Error('unauthorized for removing clique constraints'); + } + + let cliqueConstraint = CliqueConstraints.findOne({ _id: _id }); + console.log('clique constraint for remove: ', cliqueConstraint); + + CliqueConstraints.remove({ _id: _id }); + } +}); + +export const update = new ValidatedMethod({ + name: 'clique_constraints.update', + validate: CliqueConstraints.simpleSchema() + .pick([ + '_id', + 'focal_point_type', + 'constraints', + 'constraints.$', + ]).validator({ clean: true, filter: false }), + run({ + _id, + focal_point_type, + constraints, + }) { + + if (! Roles.userIsInRole(Meteor.userId(), 'manage-clique-constraints', Roles.DEFAULT_GROUP)) { + throw new Meteor.Error('unauthorized for removing clique constraints'); + } + + let item = CliqueConstraints.findOne({ _id: _id }); + console.log('clique constraints for update: ', item); + console.log('current user', Meteor.userId()); + + item = R.merge( + R.pick([ + 'focal_point_type', + 'constraints', + ], item), { + focal_point_type, + constraints, + }); + + CliqueConstraints.update({ _id: _id }, { $set: item }); + } +}); diff --git a/ui/imports/api/clique-constraints/server/publications.js b/ui/imports/api/clique-constraints/server/publications.js new file mode 100644 index 0000000..6e4ae1a --- /dev/null +++ b/ui/imports/api/clique-constraints/server/publications.js @@ -0,0 +1,30 @@ +///////////////////////////////////////////////////////////////////////////////////////// +// 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 { Meteor } from 'meteor/meteor'; + +import { CliqueConstraints } from '../clique-constraints.js'; + +Meteor.publish('clique_constraints', function () { + console.log('server subscribtion: clique_constraints'); + + //let that = this; + + let query = {}; + return CliqueConstraints.find(query); +}); + +Meteor.publish('clique_constraints?_id', function (_id) { + console.log('server subscribtion: clique_constraints?_id'); + console.log(_id); + + //let that = this; + + let query = { _id: _id }; + return CliqueConstraints.find(query); +}); |