aboutsummaryrefslogtreecommitdiffstats
path: root/ui/imports/api/environments/server/publications.js
blob: 667ee8e0c6acb02882eba0cdb4915f5dbd996b8b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
/////////////////////////////////////////////////////////////////////////////////////////
// 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 * as R from 'ramda';
import { Roles } from 'meteor/alanning:roles';

import { Environments } from '../environments.js';

Meteor.publish('environments_config', function () {
  console.log('server subscribtion to: environments_config');
  let userId = this.userId;

  let query = {
    type: 'environment',
  };

  if (! Roles.userIsInRole(userId, 'view-env', null)) {
    query = R.merge(query, {
      'auth.view-env': {
        $in: [ userId ]
      }
    });
  }

  console.log('-query: ', R.toString(query));
  return Environments.find(query);
});

const subsEnvViewEnvUserId = 'environments.view-env&userId';
Meteor.publish(subsEnvViewEnvUserId, function (userId) {
  console.log(`subscription - ${subsEnvViewEnvUserId} `);
  console.log(`-userId: ${R.toString(userId)}`);

  let query = {};

  let currentUser = this.userId;
  if (! Roles.userIsInRole(currentUser, 'manage-users', Roles.GLOBAL_GROUP)) {
    console.log(`* error: unauth`);
    console.log(`- currentUser: ${R.toString(currentUser)}`);
    this.error('unauthorized for this subscription');
    return;
  }

  query = R.merge(query, {
    'auth.view-env': {
      $in: [ userId ]
    }
  });

  console.log(`* query: ${R.toString(query)}`);
  return Environments.find(query);
});

const subsEnvEditEnvUserId = 'environments.edit-env&userId';
Meteor.publish(subsEnvEditEnvUserId, function (userId) {
  console.log(`subscription - ${subsEnvEditEnvUserId} `);
  console.log(`-userId: ${R.toString(userId)}`);
  let query = {};

  let currentUser = this.userId;
  if (! Roles.userIsInRole(currentUser, 'manage-users', Roles.GLOBAL_GROUP)) {
    console.log(`* error: unauth`);
    console.log(`- currentUser: ${R.toString(currentUser)}`);
    this.error('unauthorized for this subscription');
    return;
  }

  query = R.merge(query, {
    'auth.edit-env': {
      $in: [ userId ]
    }
  });

  console.log(`* query: ${R.toString(query)}`);
  return Environments.find(query);
});

Meteor.publish('environments?name', function (name) {
  console.log('server subscribtion to: environments?name=' + name.toString());
  let query = {
    name: name,
    user: this.userId
  };
  return Environments.find(query);
});

Meteor.publish('environments?_id', function (_id) {
  console.log('server subscribtion to: environments?_id');
  console.log('-_id: ', R.toString(_id));

  let query = {
    _id: _id,
    user: this.userId
  };
  return Environments.find(query);
});