kipon-xrmservice
Version:
Dynamics 365 CE web api wrapper for angular, making life easier when building angular based web resources
103 lines • 13.4 kB
JavaScript
import { Injectable } from '@angular/core';
import { mergeMap } from 'rxjs/operators';
import { Entity, EntityReference, OptionSetValue, Entities } from './xrmcontext.service';
import * as i0 from "@angular/core";
import * as i1 from "./xrmcontext.service";
export class Role extends Entity {
constructor() {
super('roles', 'roleid', true);
this.businessunitid = new EntityReference().meta("businessunits", "businessunitid");
this.name = null;
this.parentroleid = new EntityReference().meta("roles", "parentroleid");
this.parentrootroleid = new EntityReference().meta("roles", "parentrootroleid");
}
meta() {
return this;
}
}
export class Team extends Entity {
constructor() {
super('teams', 'teamid', true);
this.description = null;
this.emailaddress = null;
this.name = null;
this.teamtype = new OptionSetValue();
}
meta() {
return this;
}
}
export class SystemUser extends Entity {
constructor() {
super('systemusers', 'systemuserid', true);
this.address1_name = null;
this.address2_name = null;
this.domainname = null;
this.firstname = null;
this.fullname = null;
this.lastname = null;
this.middlename = null;
this.nickname = null;
}
hasRole(name) {
if (this.systemuserroles_association != null && this.systemuserroles_association.length > 0) {
for (var i = 0; i < this.systemuserroles_association.length; i++) {
if (this.systemuserroles_association[i].name == name) {
return true;
}
}
}
return false;
}
memberOf(name) {
if (this.teammembership_association != null && this.teammembership_association.length > 0) {
for (var i = 0; i < this.teammembership_association.length; i++) {
if (name == this.teammembership_association[i].name) {
return true;
}
}
}
return false;
}
onFetch() {
this.roles = [];
if (this.systemuserroles_association != null) {
this.systemuserroles_association.forEach(r => {
this.roles.push(r);
});
}
this.teams = [];
if (this.teammembership_association != null) {
this.teammembership_association.forEach(t => {
this.teams.push(t);
});
}
}
meta() {
this.systemuserroles_association = new Entities('systemusers', 'roles', 'systemuserroles_association', true, new Role().meta());
this.teammembership_association = new Entities('systemusers', 'teams', 'teammembership_association', false, new Team().meta());
return this;
}
}
export class XrmSecurityService {
constructor(xrmService) {
this.xrmService = xrmService;
this.rolePrototype = new Role().meta();
this.teamPrototype = new Team().meta();
this.userPrototype = new SystemUser().meta();
}
getUser(id) {
return this.xrmService.get(this.userPrototype, id);
}
getCurrentUser() {
return this.xrmService.getCurrentUserId().pipe(mergeMap(u => {
return this.getUser(u);
}));
}
}
XrmSecurityService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: XrmSecurityService, deps: [{ token: i1.XrmContextService }], target: i0.ɵɵFactoryTarget.Injectable });
XrmSecurityService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: XrmSecurityService });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: XrmSecurityService, decorators: [{
type: Injectable
}], ctorParameters: function () { return [{ type: i1.XrmContextService }]; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieHJtc2VjdXJpdHkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2tpcG9uLXhybXNlcnZpY2Uvc3JjL2xpYi94cm1zZWN1cml0eS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHM0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQXFCLE1BQU0sc0JBQXNCLENBQUM7OztBQUU1RyxNQUFNLE9BQU8sSUFBSyxTQUFRLE1BQU07SUFDOUI7UUFDRSxLQUFLLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUVqQyxtQkFBYyxHQUFvQixJQUFJLGVBQWUsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUNoRyxTQUFJLEdBQVcsSUFBSSxDQUFDO1FBQ3BCLGlCQUFZLEdBQW9CLElBQUksZUFBZSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxjQUFjLENBQUMsQ0FBQztRQUNwRixxQkFBZ0IsR0FBb0IsSUFBSSxlQUFlLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLGtCQUFrQixDQUFDLENBQUM7SUFKNUYsQ0FBQztJQU1ELElBQUk7UUFDRixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxJQUFLLFNBQVEsTUFBTTtJQUM5QjtRQUNFLEtBQUssQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRWpDLGdCQUFXLEdBQVcsSUFBSSxDQUFDO1FBQzNCLGlCQUFZLEdBQVcsSUFBSSxDQUFDO1FBQzVCLFNBQUksR0FBVyxJQUFJLENBQUM7UUFDcEIsYUFBUSxHQUFt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QU8sa0JBQWtCO0lBSTdCLFlBQW9CLFVBQTZCO1FBQTdCLGVBQVUsR0FBVixVQUFVLENBQW1CO1FBSHpDLGtCQUFhLEdBQVMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN4QyxrQkFBYSxHQUFTLElBQUksSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDeEMsa0JBQWEsR0FBZSxJQUFJLFVBQVUsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ1AsQ0FBQztJQUV0RCxPQUFPLENBQUMsRUFBVTtRQUNoQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFhLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVELGNBQWM7UUFDWixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQzFELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6QixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQzs7K0dBZFUsa0JBQWtCO21IQUFsQixrQkFBa0I7MkZBQWxCLGtCQUFrQjtrQkFEOUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHsgbWVyZ2VNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5pbXBvcnQgeyBFbnRpdHksIEVudGl0eVJlZmVyZW5jZSwgT3B0aW9uU2V0VmFsdWUsIEVudGl0aWVzLCBYcm1Db250ZXh0U2VydmljZSB9IGZyb20gJy4veHJtY29udGV4dC5zZXJ2aWNlJztcclxuXHJcbmV4cG9ydCBjbGFzcyBSb2xlIGV4dGVuZHMgRW50aXR5IHtcclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHN1cGVyKCdyb2xlcycsICdyb2xlaWQnLCB0cnVlKTtcclxuICB9XHJcbiAgYnVzaW5lc3N1bml0aWQ6IEVudGl0eVJlZmVyZW5jZSA9IG5ldyBFbnRpdHlSZWZlcmVuY2UoKS5tZXRhKFwiYnVzaW5lc3N1bml0c1wiLCBcImJ1c2luZXNzdW5pdGlkXCIpO1xyXG4gIG5hbWU6IHN0cmluZyA9IG51bGw7XHJcbiAgcGFyZW50cm9sZWlkOiBFbnRpdHlSZWZlcmVuY2UgPSBuZXcgRW50aXR5UmVmZXJlbmNlKCkubWV0YShcInJvbGVzXCIsIFwicGFyZW50cm9sZWlkXCIpO1xyXG4gIHBhcmVudHJvb3Ryb2xlaWQ6IEVudGl0eVJlZmVyZW5jZSA9IG5ldyBFbnRpdHlSZWZlcmVuY2UoKS5tZXRhKFwicm9sZXNcIiwgXCJwYXJlbnRyb290cm9sZWlkXCIpO1xyXG5cclxuICBtZXRhKCk6IFJvbGUge1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgVGVhbSBleHRlbmRzIEVudGl0eSB7XHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBzdXBlcigndGVhbXMnLCAndGVhbWlkJywgdHJ1ZSk7XHJcbiAgfVxyXG4gIGRlc2NyaXB0aW9uOiBzdHJpbmcgPSBudWxsO1xyXG4gIGVtYWlsYWRkcmVzczogc3RyaW5nID0gbnVsbDtcclxuICBuYW1lOiBzdHJpbmcgPSBudWxsO1xyXG4gIHRlYW10eXBlOiBPcHRpb25TZXRWYWx1ZSA9IG5ldyBPcHRpb25TZXRWYWx1ZSgpO1xyXG5cclxuICBtZXRhKCk6IFRlYW0ge1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgU3lzdGVtVXNlciBleHRlbmRzIEVudGl0eSB7XHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBzdXBlcignc3lzdGVtdXNlcnMnLCAnc3lzdGVtdXNlcmlkJywgdHJ1ZSk7XHJcbiAgfVxyXG4gIGFkZHJlc3MxX25hbWU6IHN0cmluZyA9IG51bGw7XHJcbiAgYWRkcmVzczJfbmFtZTogc3RyaW5nID0gbnVsbDtcclxuICBkb21haW5uYW1lOiBzdHJpbmcgPSBudWxsO1xyXG4gIGZpcnN0bmFtZTogc3RyaW5nID0gbnVsbDtcclxuICBmdWxsbmFtZTogc3RyaW5nID0gbnVsbDtcclxuICBsYXN0bmFtZTogc3RyaW5nID0gbnVsbDtcclxuICBtaWRkbGVuYW1lOiBzdHJpbmcgPSBudWxsO1xyXG4gIG5pY2tuYW1lOiBzdHJpbmcgPSBudWxsO1xyXG4gIHN5c3RlbXVzZXJyb2xlc19hc3NvY2lhdGlvbjogRW50aXRpZXM8Um9sZT47XHJcbiAgdGVhbW1lbWJlcnNoaXBfYXNzb2NpYXRpb246IEVudGl0aWVzPFRlYW0+O1xyXG5cclxuICBoYXNSb2xlKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuc3lzdGVtdXNlcnJvbGVzX2Fzc29jaWF0aW9uICE9IG51bGwgJiYgdGhpcy5zeXN0ZW11c2Vycm9sZXNfYXNzb2NpYXRpb24ubGVuZ3RoID4gMCkge1xyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuc3lzdGVtdXNlcnJvbGVzX2Fzc29jaWF0aW9uLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc3lzdGVtdXNlcnJvbGVzX2Fzc29jaWF0aW9uW2ldLm5hbWUgPT0gbmFtZSkge1xyXG4gICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBtZW1iZXJPZihuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLnRlYW1tZW1iZXJzaGlwX2Fzc29jaWF0aW9uICE9IG51bGwgJiYgdGhpcy50ZWFtbWVtYmVyc2hpcF9hc3NvY2lhdGlvbi5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy50ZWFtbWVtYmVyc2hpcF9hc3NvY2lhdGlvbi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmIChuYW1lID09IHRoaXMudGVhbW1lbWJlcnNoaXBfYXNzb2NpYXRpb25baV0ubmFtZSkge1xyXG4gICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICByb2xlczogUm9sZVtdO1xyXG4gIHRlYW1zOiBUZWFtW107XHJcblxyXG4gIG9uRmV0Y2goKSB7XHJcbiAgICB0aGlzLnJvbGVzID0gW107XHJcbiAgICBpZiAodGhpcy5zeXN0ZW11c2Vycm9sZXNfYXNzb2NpYXRpb24gIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLnN5c3RlbXVzZXJyb2xlc19hc3NvY2lhdGlvbi5mb3JFYWNoKHIgPT4ge1xyXG4gICAgICAgIHRoaXMucm9sZXMucHVzaChyKTtcclxuICAgICAgfSlcclxuICAgIH1cclxuICAgIHRoaXMudGVhbXMgPSBbXTtcclxuICAgIGlmICh0aGlzLnRlYW1tZW1iZXJzaGlwX2Fzc29jaWF0aW9uICE9IG51bGwpIHtcclxuICAgICAgdGhpcy50ZWFtbWVtYmVyc2hpcF9hc3NvY2lhdGlvbi5mb3JFYWNoKHQgPT4ge1xyXG4gICAgICAgIHRoaXMudGVhbXMucHVzaCh0KTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBtZXRhKCk6IFN5c3RlbVVzZXIge1xyXG4gICAgdGhpcy5zeXN0ZW11c2Vycm9sZXNfYXNzb2NpYXRpb24gPSBuZXcgRW50aXRpZXM8Um9sZT4oJ3N5c3RlbXVzZXJzJywgJ3JvbGVzJywgJ3N5c3RlbXVzZXJyb2xlc19hc3NvY2lhdGlvbicsIHRydWUsIG5ldyBSb2xlKCkubWV0YSgpKTtcclxuICAgIHRoaXMudGVhbW1lbWJlcnNoaXBfYXNzb2NpYXRpb24gPSBuZXcgRW50aXRpZXM8VGVhbT4oJ3N5c3RlbXVzZXJzJywgJ3RlYW1zJywgJ3RlYW1tZW1iZXJzaGlwX2Fzc29jaWF0aW9uJywgZmFsc2UsIG5ldyBUZWFtKCkubWV0YSgpKTtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxufVxyXG5cclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFhybVNlY3VyaXR5U2VydmljZSB7XHJcbiAgcHJpdmF0ZSByb2xlUHJvdG90eXBlOiBSb2xlID0gbmV3IFJvbGUoKS5tZXRhKCk7XHJcbiAgcHJpdmF0ZSB0ZWFtUHJvdG90eXBlOiBUZWFtID0gbmV3IFRlYW0oKS5tZXRhKCk7XHJcbiAgcHJpdmF0ZSB1c2VyUHJvdG90eXBlOiBTeXN0ZW1Vc2VyID0gbmV3IFN5c3RlbVVzZXIoKS5tZXRhKCk7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSB4cm1TZXJ2aWNlOiBYcm1Db250ZXh0U2VydmljZSkgeyB9XHJcblxyXG4gIGdldFVzZXIoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8U3lzdGVtVXNlcj4ge1xyXG4gICAgcmV0dXJuIHRoaXMueHJtU2VydmljZS5nZXQ8U3lzdGVtVXNlcj4odGhpcy51c2VyUHJvdG90eXBlLCBpZCk7XHJcbiAgfVxyXG5cclxuICBnZXRDdXJyZW50VXNlcigpOiBPYnNlcnZhYmxlPFN5c3RlbVVzZXI+IHtcclxuICAgIHJldHVybiB0aGlzLnhybVNlcnZpY2UuZ2V0Q3VycmVudFVzZXJJZCgpLnBpcGUobWVyZ2VNYXAodSA9PiB7XHJcbiAgICAgIHJldHVybiB0aGlzLmdldFVzZXIodSk7XHJcbiAgICB9KSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==