fabric8-planner
Version:
A planner front-end for Fabric8.
59 lines • 2.28 kB
JavaScript
import { Injectable } from '@angular/core';
import { UserService as UserServiceClass } from 'ngx-login-client';
import { map, switchMap } from 'rxjs/operators';
import { SpaceQuery } from './space';
import { UserQuery } from './user';
var PermissionQuery = /** @class */ (function () {
function PermissionQuery(userQuery, spaceQuery, userService) {
this.userQuery = userQuery;
this.spaceQuery = spaceQuery;
this.userService = userService;
}
PermissionQuery.prototype.isAllowedToAdd = function () {
var _this = this;
return this.spaceQuery.getCurrentSpace
.pipe(switchMap(function (space) {
return _this.userService.loggedInUser.pipe(map(function (user) {
return { spaceName: space.attributes.name, user: user };
}));
}), switchMap(function (spaceAndUser) {
return _this.userQuery.getCollaboratorIds.pipe(map(function (collaboratorIDs) {
if (spaceAndUser.user.id) {
if (collaboratorIDs.indexOf(spaceAndUser.user.id) >= 0) {
return false;
}
else {
return !(spaceAndUser.spaceName === 'Openshift_io');
}
}
}));
}));
};
PermissionQuery.prototype.isAllowedToDelete = function (workItem) {
var _this = this;
return this.spaceQuery.getCurrentSpace
.pipe(switchMap(function (space) {
return _this.userService.loggedInUser.pipe(map(function (user) {
var spaceOwnerId = space.relationships['owned-by'].data.id;
if (spaceOwnerId === user.id || workItem.creator === user.id) {
return true;
}
else {
return false;
}
}));
}));
};
PermissionQuery.decorators = [
{ type: Injectable },
];
/** @nocollapse */
PermissionQuery.ctorParameters = function () { return [
{ type: UserQuery, },
{ type: SpaceQuery, },
{ type: UserServiceClass, },
]; };
return PermissionQuery;
}());
export { PermissionQuery };
//# sourceMappingURL=permission.model.js.map