UNPKG

5.96 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6
7var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
8
9var _angular = require('angular');
10
11var _angular2 = _interopRequireDefault(_angular);
12
13var _lodash = require('lodash.union');
14
15var _lodash2 = _interopRequireDefault(_lodash);
16
17var _lodash3 = require('lodash.find');
18
19var _lodash4 = _interopRequireDefault(_lodash3);
20
21var _module = require('../module');
22
23var _module2 = _interopRequireDefault(_module);
24
25require('../api');
26
27function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
28
29function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
30
31var AvUserAuthorizationsFactory = function AvUserAuthorizationsFactory($q, $log, avUserPermissionsResource) {
32 var AvUserAuthorizations = function () {
33 function AvUserAuthorizations() {
34 _classCallCheck(this, AvUserAuthorizations);
35
36 /**
37 * Region is used to return permission/resources relative to region. If null service will
38 * return all permission relative to current. If value 'ALL' used it will return value relative
39 * to all regions the user has access to.
40 */
41 this.region = null;
42
43 /**
44 * PermissionIds contains the set of permissionIds to request from service. If user of service calls
45 * setPermissionIds() or call getPermissions() with complete set of permissionIds needed by application,
46 * then service should only make that one hit to retrieve permission information.
47 */
48 this.permissionIds = [];
49 }
50
51 _createClass(AvUserAuthorizations, [{
52 key: 'setRegion',
53 value: function setRegion(region) {
54 this.region = region;
55 return this;
56 }
57 }, {
58 key: 'setPermissionIds',
59 value: function setPermissionIds(permissionIds) {
60
61 if (!_angular2.default.isArray(permissionIds)) {
62 throw new Error('permissionsIds must be an array of strings in setPermissionIds()');
63 }
64
65 this.permissionIds = permissionIds;
66
67 return this;
68 }
69 }, {
70 key: 'isAuthorized',
71 value: function isAuthorized(permissionId) {
72 return this.getPermission(permissionId).then(function (permission) {
73 return permission.isAuthorized;
74 });
75 }
76 }, {
77 key: 'isAnyAuthorized',
78 value: function isAnyAuthorized(permissionIds) {
79 return this.getPermissions(permissionIds).then(function (permissions) {
80 return permissions.some(function (permission) {
81 return permission.isAuthorized;
82 });
83 });
84 }
85 }, {
86 key: 'getPermission',
87 value: function getPermission(permissionId) {
88
89 if (!_angular2.default.isString(permissionId)) {
90 throw new Error('permissionsId must be a string ID for getPermission()');
91 }
92
93 return this.getPermissions([permissionId]).then(function (permissions) {
94 return (0, _lodash4.default)(permissions, ['id', permissionId]);
95 });
96 }
97 }, {
98 key: 'getPermissions',
99 value: function getPermissions(permissionIds) {
100 var _this = this;
101
102 if (!_angular2.default.isArray(permissionIds)) {
103 throw new Error('permissionsIds must be an array of string IDs for getPermissions()');
104 }
105
106 // Combine pre-loaded permission ids with the ids from this function invocation
107 this.permissionIds = (0, _lodash2.default)(this.permissionIds, permissionIds);
108
109 return avUserPermissionsResource.getPermissions(this.permissionIds, this.region).then(function (permissions) {
110 return _this.map(permissionIds, permissions);
111 });
112 }
113 }, {
114 key: 'getOrganizations',
115 value: function getOrganizations(permissionId) {
116 return this.getPermission(permissionId).then(function (permission) {
117 return permission.organizations;
118 });
119 }
120 }, {
121 key: 'getPayers',
122 value: function getPayers(permissionId, organizationId) {
123
124 return this.getPermission(permissionId).then(function (permission) {
125 var organization = (0, _lodash4.default)(permission.organizations, ['id', organizationId]);
126
127 if (organization && organization.resources) {
128 return organization.resources;
129 }
130
131 return [];
132 });
133 }
134 }, {
135 key: 'map',
136 value: function map(permissionIds, permissions) {
137
138 var self = this;
139
140 var result = permissionIds.map(function (permissionId) {
141
142 var key = { id: permissionId };
143 var permission = (0, _lodash4.default)(permissions, ['id', permissionId]);
144 permission = permission ? self.convert(permission) : self.convert(key);
145 return permission;
146 });
147
148 return result;
149 }
150 }, {
151 key: 'convert',
152 value: function convert(permission) {
153
154 permission.isAuthorized = permission.organizations ? permission.organizations.length > 0 : false;
155 permission.geographies = permission.geographies || [];
156 permission.organizations = permission.organizations || [];
157
158 return permission;
159 }
160 }]);
161
162 return AvUserAuthorizations;
163 }();
164
165 return new AvUserAuthorizations();
166};
167
168_module2.default.factory('avUserAuthorizations', AvUserAuthorizationsFactory);
169
170exports.default = _module2.default;
\No newline at end of file