From ddb7f0df0f4c651fec9faeb0e75c55b7fa45705e Mon Sep 17 00:00:00 2001 From: Manuel Romero Date: Tue, 10 Dec 2019 14:34:48 +0100 Subject: [PATCH] More stuff --- dist/qmi-cloud/main.js | 27 ++++++++++++-- dist/qmi-cloud/main.js.map | 2 +- server/mongo.js | 10 +++--- server/passport.js | 4 +-- server/routes/api-destroyprovisions.js | 4 --- server/routes/api-users.js | 31 ++++++++++++++++ src/app/admin/admin.component.html | 48 ++++++++++++------------- src/app/admin/admin.component.ts | 23 ++++++++++++ src/app/services/users.service.ts | 4 +++ src/app/ui/header/header.component.html | 2 +- 10 files changed, 114 insertions(+), 41 deletions(-) diff --git a/dist/qmi-cloud/main.js b/dist/qmi-cloud/main.js index 2627b80..e8189f0 100644 --- a/dist/qmi-cloud/main.js +++ b/dist/qmi-cloud/main.js @@ -30,7 +30,7 @@ webpackEmptyAsyncContext.id = "./src/$$_lazy_route_resource lazy recursive"; /*! no static exports found */ /***/ (function(module, exports) { -module.exports = "\n
\n

Users

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
NameEmailUser IDRole
{{user.displayName}}{{user.upn}}{{user._id}}{{user.role}}\n \n \n
\n
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Scenario ProvisionScenario Destroy
ProvisionIDProv. DateUserScenarioStatusDestroyIDDest. DateStatusDestroyed?
{{ provision._id }}{{provision.created | date: 'MMM dd, yyyy - H:mm'}}{{provision.user}}{{ provision.scenario }}\n {{provision.status}}\n \n \n \n {{provision.destroyId}}{{provision.dateDestroy | date: 'MMM dd, yyyy - H:mm'}}\n {{provision.statusDestroy}}\n \n \n \n \n \n \n
\n" +module.exports = "\n

Users

\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
NameEmailUser IDRole
{{user.displayName}}{{user.upn}}{{user._id}}{{user.role}}\n \n \n
\n

Provisions

\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Scenario ProvisionScenario Destroy
ProvisionIDProv. DateUserScenarioStatusDestroyIDDest. DateStatusDestroyed?
{{ provision._id }}{{provision.created | date: 'MMM dd, yyyy - H:mm'}}{{provision.user}}{{ provision.scenario }}\n {{provision.status}}\n \n \n \n {{provision.destroyId}}{{provision.dateDestroy | date: 'MMM dd, yyyy - H:mm'}}\n {{provision.statusDestroy}}\n \n \n \n \n \n \n
\n" /***/ }), @@ -93,6 +93,8 @@ var AdminComponent = /** @class */ (function () { } }); }; + AdminComponent.prototype._getUsers = function () { + }; AdminComponent.prototype.ngOnInit = function () { var _this = this; this._usersService.getUsers().subscribe(function (res) { @@ -151,6 +153,24 @@ var AdminComponent = /** @class */ (function () { console.log("onStartProvision"); this._refresh(); }; + AdminComponent.prototype.setAdmin = function (user) { + var _this = this; + this._usersService.updateUser(user._id, { "role": "admin" }).subscribe(function (res1) { + console.log("Updated", res1); + _this._usersService.getUsers().subscribe(function (res) { + _this.users = res; + }); + }); + }; + AdminComponent.prototype.removeAdmin = function (user) { + var _this = this; + this._usersService.updateUser(user._id, { "role": null }).subscribe(function (res1) { + console.log("Updated", res1); + _this._usersService.getUsers().subscribe(function (res) { + _this.users = res; + }); + }); + }; AdminComponent = __decorate([ Object(_angular_core__WEBPACK_IMPORTED_MODULE_0__["Component"])({ selector: 'app-admin', @@ -1003,6 +1023,9 @@ var UsersService = /** @class */ (function () { UsersService.prototype.getUsers = function () { return this.httpClient.get("/api/users"); }; + UsersService.prototype.updateUser = function (userId, patchData) { + return this.httpClient.put("/api/users/" + userId, patchData); + }; UsersService = __decorate([ Object(_angular_core__WEBPACK_IMPORTED_MODULE_0__["Injectable"])({ providedIn: 'root' @@ -1086,7 +1109,7 @@ var FooterComponent = /** @class */ (function () { /*! no static exports found */ /***/ (function(module, exports) { -module.exports = "" +module.exports = "" /***/ }), diff --git a/dist/qmi-cloud/main.js.map b/dist/qmi-cloud/main.js.map index 383c056..27291e6 100644 --- a/dist/qmi-cloud/main.js.map +++ b/dist/qmi-cloud/main.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///./src/$_lazy_route_resource lazy namespace object","webpack:///./src/app/admin/admin.component.html","webpack:///./src/app/admin/admin.component.scss","webpack:///./src/app/admin/admin.component.ts","webpack:///./src/app/app-routing.module.ts","webpack:///./src/app/app.component.html","webpack:///./src/app/app.component.scss","webpack:///./src/app/app.component.ts","webpack:///./src/app/app.module.ts","webpack:///./src/app/home/home.component.html","webpack:///./src/app/home/home.component.scss","webpack:///./src/app/home/home.component.ts","webpack:///./src/app/logs/logs.component.html","webpack:///./src/app/logs/logs.component.scss","webpack:///./src/app/logs/logs.component.ts","webpack:///./src/app/provisions/provisions.component.html","webpack:///./src/app/provisions/provisions.component.scss","webpack:///./src/app/provisions/provisions.component.ts","webpack:///./src/app/scenarios/scenarios.component.html","webpack:///./src/app/scenarios/scenarios.component.scss","webpack:///./src/app/scenarios/scenarios.component.ts","webpack:///./src/app/services/auth.guard.ts","webpack:///./src/app/services/provisions.service.ts","webpack:///./src/app/services/scenarios.service.ts","webpack:///./src/app/services/users.service.ts","webpack:///./src/app/ui/footer/footer.component.html","webpack:///./src/app/ui/footer/footer.component.scss","webpack:///./src/app/ui/footer/footer.component.ts","webpack:///./src/app/ui/header/header.component.html","webpack:///./src/app/ui/header/header.component.scss","webpack:///./src/app/ui/header/header.component.ts","webpack:///./src/app/ui/layout/layout.component.html","webpack:///./src/app/ui/layout/layout.component.scss","webpack:///./src/app/ui/layout/layout.component.ts","webpack:///./src/app/ui/ui.module.ts","webpack:///./src/environments/environment.ts","webpack:///./src/main.ts"],"names":[],"mappings":"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","file":"main.js","sourcesContent":["function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = \"./src/$$_lazy_route_resource lazy recursive\";","module.exports = \"\\n
\\n

Users

\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
NameEmailUser IDRole
{{user.displayName}}{{user.upn}}{{user._id}}{{user.role}}\\n \\n \\n
\\n
\\n\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
Scenario ProvisionScenario Destroy
ProvisionIDProv. DateUserScenarioStatusDestroyIDDest. DateStatusDestroyed?
{{ provision._id }}{{provision.created | date: 'MMM dd, yyyy - H:mm'}}{{provision.user}}{{ provision.scenario }}\\n {{provision.status}}\\n \\n \\n \\n {{provision.destroyId}}{{provision.dateDestroy | date: 'MMM dd, yyyy - H:mm'}}\\n {{provision.statusDestroy}}\\n \\n \\n \\n \\n \\n \\n
\\n\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2FkbWluL2FkbWluLmNvbXBvbmVudC5zY3NzIn0= */\"","import { Component, OnInit } from '@angular/core';\nimport { UsersService } from '../services/users.service';\nimport { ProvisionsService } from '../services/provisions.service'; \nimport { Subscription, timer } from 'rxjs';\nimport { switchMap } from 'rxjs/operators';\n\n\n@Component({\n selector: 'app-admin',\n templateUrl: './admin.component.html',\n styleUrls: ['./admin.component.scss']\n})\nexport class AdminComponent implements OnInit {\n\n users;\n provisions;\n destroys;\n subscription: Subscription;\n instantSubs: Subscription;\n logShow: boolean = false;\n logstype: String = 'provision';\n selectedprov: Object = null;\n\n constructor( private _usersService: UsersService, private _provisionsService: ProvisionsService ) { }\n \n private _fillUser(pair) {\n pair['0'].forEach(prov => {\n var foundDes = this.users.filter(u=>{\n return u._id.toString() === prov.userId.toString();\n });\n if (foundDes.length){\n prov.user = foundDes[0].displayName;\n }\n });\n }\n\n ngOnInit() {\n this._usersService.getUsers().subscribe( res => {\n this.users = res;\n this.subscription = timer(0, 5000).pipe( switchMap(() => this._provisionsService.getCombinedProvisionsAdmin() ) ).subscribe(pair => { \n this._provisionsService.composePair(pair);\n this._fillUser(pair);\n this.destroys = pair[1];\n this.provisions = pair[0];\n })\n })\n }\n\n private _refresh(): void {\n this.instantSubs = this._provisionsService.getCombinedProvisionsAdmin().subscribe( pair=>{\n this._provisionsService.composePair(pair);\n this._fillUser(pair);\n this.destroys = pair[1];\n this.provisions = pair[0];\n this.instantSubs.unsubscribe();\n })\n }\n\n ngOnDestroy() {\n this.subscription.unsubscribe();\n if ( this.instantSubs ) {\n this.instantSubs.unsubscribe();\n }\n }\n\n del(provision): void {\n this._provisionsService.delProvision(provision._id.toString(), provision.userId).subscribe( res => {\n console.log(\"Done!\", res);\n this._refresh();\n })\n }\n\n destroy(provision) : void{\n this._provisionsService.newDestroy({\"id\": provision._id.toString()}, provision.userId).subscribe( res => {\n console.log(\"Done!\", res);\n this._refresh();\n })\n }\n\n showLogs($event, provision, type): void {\n $event.preventDefault();\n $event.stopPropagation();\n this.logstype = type;\n this.logShow = false;\n this.selectedprov = provision;\n this.logShow = true;\n }\n\n onLogsClose($event): void {\n this.selectedprov = null;\n this.logShow = false;\n }\n\n onStartProvision($event): void {\n console.log(\"onStartProvision\");\n this._refresh();\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\nimport { ProvisionsComponent } from './provisions/provisions.component';\nimport { AdminComponent } from './admin/admin.component';\nimport { HomeComponent } from './home/home.component';\nimport { AuthGuard } from './services/auth.guard';\n\nconst routes: Routes = [\n { path: 'home', component: HomeComponent},\n { path: 'provisions', component: ProvisionsComponent, canActivate: [AuthGuard]},\n { path: 'admin', component: AdminComponent, canActivate: [AuthGuard]},\n { path: '',\n redirectTo: '/home',\n pathMatch: 'full'\n },\n { path: '**', redirectTo: '/home' }\n];\n\n@NgModule({\n imports: [RouterModule.forRoot(routes)],\n exports: [RouterModule]\n})\nexport class AppRoutingModule { }\n","module.exports = \"\\n\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2FwcC5jb21wb25lbnQuc2NzcyJ9 */\"","import { Component } from '@angular/core';\n\n@Component({\n selector: 'app-root',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.scss']\n})\n\nexport class AppComponent {\n title = 'qmi-cloud';\n constructor() {\n \n }\n}\n","import { BrowserModule } from '@angular/platform-browser';\nimport { NgModule } from '@angular/core';\n\nimport { AppRoutingModule } from './app-routing.module';\nimport { AppComponent } from './app.component';\nimport { UiModule } from './ui/ui.module';\nimport { HomeComponent } from './home/home.component';\nimport { ProvisionsComponent } from './provisions/provisions.component';\nimport { AuthGuard } from './services/auth.guard';\nimport { ProvisionsService } from './services/provisions.service';\nimport { ScenariosService } from './services/scenarios.service';\nimport { UsersService } from './services/users.service';\n\n\nimport { HttpClientModule } from '@angular/common/http';\nimport { LogsComponent } from './logs/logs.component';\nimport { ScenariosComponent } from './scenarios/scenarios.component';\nimport { AdminComponent } from './admin/admin.component';\n\n@NgModule({\n declarations: [\n AppComponent,\n HomeComponent,\n ProvisionsComponent,\n LogsComponent,\n ScenariosComponent,\n AdminComponent\n ],\n imports: [\n BrowserModule,\n AppRoutingModule,\n UiModule,\n HttpClientModule\n ],\n providers: [ProvisionsService, ScenariosService, UsersService, AuthGuard],\n bootstrap: [AppComponent]\n})\nexport class AppModule { }\n","module.exports = \"
\\n

QMI Cloud

\\n

\\n Launch QMI scenarios in the Cloud in no time.\\n

\\n

\\n Your Provisions \\n

\\n
\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2hvbWUvaG9tZS5jb21wb25lbnQuc2NzcyJ9 */\"","import { Component, OnInit } from '@angular/core';\n\n\n@Component({\n selector: 'app-home',\n templateUrl: './home.component.html',\n styleUrls: ['./home.component.scss'],\n providers: []\n})\nexport class HomeComponent implements OnInit {\n\n constructor() {}\n \n ngOnInit() {\n \n }\n\n ngOnDestroy() {\n \n }\n \n}\n","module.exports = \"
\\n \\n \\n
\\n
\\n

{{type}} Logs

\\n

{{selectedprov._id}} - {{selectedprov.scenario}}

\\n

{{selectedprov.destroyId}} - {{selectedprov.scenario}}

\\n
{{content}}
\\n
\\n
\\n \\n \\n
\\n\"","module.exports = \".provlogs {\\n position: fixed;\\n width: 70%;\\n height: 100%;\\n right: 0px;\\n top: 0px;\\n z-index: 10000;\\n background: #fff;\\n padding: 25px;\\n overflow: auto;\\n font-size: 0.8em;\\n border-left: 2px solid #ccc; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9hb3IvRGV2ZWwvZ2Vhci9xbWktY2xvdWQvc3JjL2FwcC9sb2dzL2xvZ3MuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDSSxnQkFBZTtFQUNmLFdBQVU7RUFDVixhQUFZO0VBQ1osV0FBVTtFQUNWLFNBQVE7RUFDUixlQUFjO0VBQ2QsaUJBQWdCO0VBQ2hCLGNBQWE7RUFDYixlQUFjO0VBQ2QsaUJBQWdCO0VBQ2hCLDRCQUEyQixFQUM5QiIsImZpbGUiOiJzcmMvYXBwL2xvZ3MvbG9ncy5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5wcm92bG9ncyB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHdpZHRoOiA3MCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHJpZ2h0OiAwcHg7XG4gICAgdG9wOiAwcHg7XG4gICAgei1pbmRleDogMTAwMDA7XG4gICAgYmFja2dyb3VuZDogI2ZmZjtcbiAgICBwYWRkaW5nOiAyNXB4O1xuICAgIG92ZXJmbG93OiBhdXRvO1xuICAgIGZvbnQtc2l6ZTogMC44ZW07XG4gICAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjY2NjO1xufSJdfQ== */\"","import { Component, OnInit, Input, Output, EventEmitter, ViewChild, HostListener } from '@angular/core';\nimport { ProvisionsService } from '../services/provisions.service'; \nimport { Subscription, timer} from 'rxjs';\nimport { switchMap } from 'rxjs/operators';\n\n@Component({\n selector: 'app-logs',\n templateUrl: './logs.component.html',\n styleUrls: ['./logs.component.scss']\n})\nexport class LogsComponent implements OnInit {\n\n @ViewChild(\"insideElement\") insideElement;\n @HostListener('document:click', ['$event.target'])\n\n public onClick(targetElement) {\n const clickedInside = this.insideElement.nativeElement.contains(targetElement);\n if (!clickedInside) {\n console.log('outside clicked');\n this.onClose.emit(false);\n }\n }\n\n content: String = null;\n sub: Subscription;\n\n constructor(private _provisionsService: ProvisionsService) { }\n \n @Input() selectedprov;\n @Input() type;\n @Output() onClose = new EventEmitter();\n\n refresh(): void {\n if (!this.content){\n if ( this.type === \"provision\" ) {\n this.sub = timer(0, 5000).pipe( switchMap(() => this._provisionsService.getProvisionLogs(this.selectedprov._id) ) ).subscribe(content => { \n this.content = content;\n });\n } else if ( this.type === \"destroy\" ) {\n this.sub = timer(0, 5000).pipe( switchMap(() => this._provisionsService.getDestroyLogs(this.selectedprov.destroyId) ) ).subscribe(content => { \n this.content = content;\n })\n }\n }\n }\n ngOnInit() {\n this.refresh();\n }\n\n ngOnDestroy() {\n this.sub.unsubscribe();\n }\n\n close(): void {\n this.sub.unsubscribe();\n this.onClose.emit(false);\n }\n\n}\n","module.exports = \"\\n
\\n

Scenarios

\\n \\n
\\n\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
Scenario ProvisionScenario Destroy
ProvisionIDProv. DateScenarioStatusDestroyIDDest. DateStatusDestroyed?
{{ provision._id }}{{provision.created | date: 'MMM dd, yyyy - H:mm'}}{{ provision.scenario }}\\n {{provision.status}}\\n \\n \\n \\n {{provision.destroyId}}{{provision.dateDestroy | date: 'MMM dd, yyyy - H:mm'}}\\n {{provision.statusDestroy}}\\n \\n \\n \\n \\n \\n \\n
\\n\"","module.exports = \"td.ell {\\n max-width: 150px;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9hb3IvRGV2ZWwvZ2Vhci9xbWktY2xvdWQvc3JjL2FwcC9wcm92aXNpb25zL3Byb3Zpc2lvbnMuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDSSxpQkFBZ0I7RUFDaEIsaUJBQWdCO0VBQ2hCLHdCQUF1QjtFQUN2QixvQkFBbUIsRUFDdEIiLCJmaWxlIjoic3JjL2FwcC9wcm92aXNpb25zL3Byb3Zpc2lvbnMuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJ0ZC5lbGwge1xuICAgIG1heC13aWR0aDogMTUwcHg7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufSJdfQ== */\"","import { Component, OnInit } from '@angular/core';\nimport { ProvisionsService } from '../services/provisions.service'; \nimport { Subscription, timer} from 'rxjs';\nimport { switchMap } from 'rxjs/operators';\nimport { AuthGuard } from '../services/auth.guard';\n\n\n@Component({\n selector: 'app-provisions',\n templateUrl: './provisions.component.html',\n styleUrls: ['./provisions.component.scss'],\n providers: [ProvisionsService]\n})\nexport class ProvisionsComponent implements OnInit {\n\n private _userId;\n provisions;\n destroys;\n subscription: Subscription;\n instantSubs: Subscription;\n logShow: boolean = false;\n logstype: String = 'provision';\n selectedprov: Object = null;\n\n constructor(private _provisionsService: ProvisionsService, private _auth: AuthGuard) {\n this._auth.getUserInfo().subscribe( value => {\n this._userId = value._id;\n });\n }\n\n private _refresh(): void {\n this.instantSubs = this._provisionsService.getCombinedProvisions(this._userId).subscribe( pair=>{\n this._provisionsService.composePair(pair);\n this.destroys = pair[1];\n this.provisions = pair[0];\n this.instantSubs.unsubscribe();\n })\n }\n\n ngOnInit() {\n this.subscription = timer(0, 5000).pipe( switchMap(() => this._provisionsService.getCombinedProvisions(this._userId) ) ).subscribe(pair => { \n this._provisionsService.composePair(pair);\n this.destroys = pair[1];\n this.provisions = pair[0];\n })\n }\n\n ngOnDestroy() {\n this.subscription.unsubscribe();\n if ( this.instantSubs ) {\n this.instantSubs.unsubscribe();\n }\n }\n\n del(provision): void {\n this._provisionsService.delProvision(provision._id.toString(), this._userId).subscribe( res => {\n console.log(\"Done!\", res);\n this._refresh();\n })\n }\n\n destroy(provision) : void{\n this._provisionsService.newDestroy({\"id\": provision._id.toString()}, this._userId).subscribe( res => {\n console.log(\"Done!\", res);\n this._refresh();\n })\n }\n\n showLogs($event, provision, type): void {\n $event.preventDefault();\n $event.stopPropagation();\n this.logstype = type;\n this.logShow = false;\n this.selectedprov = provision;\n this.logShow = true;\n }\n\n onLogsClose($event): void {\n this.selectedprov = null;\n this.logShow = false;\n }\n\n onStartProvision($event): void {\n console.log(\"onStartProvision\");\n this._refresh();\n }\n\n\n\n}\n","module.exports = \"
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
DescriptionNameVersion
{{s.description}}{{s.name}}{{s.version}}
\\n
\\n\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3NjZW5hcmlvcy9zY2VuYXJpb3MuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, Output, OnInit, EventEmitter } from '@angular/core';\nimport { ProvisionsService } from '../services/provisions.service';\nimport { ScenariosService } from '../services/scenarios.service';\nimport { AuthGuard } from '../services/auth.guard';\n\n@Component({\n selector: 'app-scenarios',\n templateUrl: './scenarios.component.html',\n styleUrls: ['./scenarios.component.scss']\n})\nexport class ScenariosComponent implements OnInit {\n\n constructor(private _provisionsService: ProvisionsService, private _scenariosService: ScenariosService, private _auth: AuthGuard) { \n this._auth.getUserInfo().subscribe( value => {\n this._userId = value._id;\n });\n }\n\n @Output() onStartProvision = new EventEmitter();\n\n _userId;\n scenarios;\n\n ngOnInit() {\n this._scenariosService.getScenarios().subscribe( res => {\n this.scenarios = res;\n })\n }\n\n provision(scenario) : void{\n this._provisionsService.newProvision({\"scenario\": scenario.name}, this._userId).subscribe( res => {\n console.log(\"Done!\", res);\n this.onStartProvision.emit();\n })\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, Router } from '@angular/router';\n\nimport { of, Observable, BehaviorSubject } from 'rxjs';\nimport { map, catchError } from 'rxjs/operators';\nimport { HttpClient } from '@angular/common/http';\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthGuard implements CanActivate {\n\n private userInfo: BehaviorSubject = new BehaviorSubject(null);\n\n // Inject Router so we can hand off the user to the Login Page \n constructor(private httpClient: HttpClient, private router: Router) {\n\n this.getMe().subscribe(value => {\n this.userInfo.next(value);\n localStorage.setItem(\"user\", JSON.stringify(value));\n });\n\n }\n\n canActivate(route: ActivatedRouteSnapshot): Observable {\n return this.getMe().pipe(\n map(res => {\n this.userInfo.next(res);\n return true;\n }),\n catchError((err) => {\n this.userInfo.next(null);\n return of(false);\n })\n );\n }\n\n getMe() {\n return this.httpClient.get('/api/users/me');\n }\n\n getUserInfo(): any {\n return this.userInfo;\n }\n}\n\n\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable, forkJoin } from 'rxjs';\nimport { AuthGuard } from './auth.guard';\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ProvisionsService {\n\n\n constructor( private httpClient: HttpClient ) { }\n\n getProvisionsAdmin() : Observable {\n return this.httpClient.get(`/api/provisions`);\n }\n\n getDestroyProvisionsAdmin() : Observable {\n return this.httpClient.get(`/api/destroyprovisions`);\n }\n\n getProvisions(userId) : Observable {\n return this.httpClient.get(`/api/users/${userId}/provisions`);\n }\n\n newProvision(body, userId) : Observable {\n return this.httpClient.post(`/api/users/${userId}/provisions`, body);\n }\n\n delProvision(id, userId): Observable {\n return this.httpClient.delete(`/api/users/${userId}/provisions/${id}`);\n }\n\n newDestroy(body, userId) : Observable {\n return this.httpClient.post(`/api/users/${userId}/destroyprovisions`, body);\n }\n\n getDestroyProvisions(userId) : Observable {\n return this.httpClient.get(`/api/users/${userId}/destroyprovisions`);\n }\n\n getCombinedProvisions(userId): Observable {\n return forkJoin(this.getProvisions(userId), this.getDestroyProvisions(userId))\n }\n\n getCombinedProvisionsAdmin(): Observable {\n return forkJoin(this.getProvisionsAdmin(), this.getDestroyProvisionsAdmin())\n }\n\n\n getProvisionLogs(id) : Observable {\n return this.httpClient.get(`/api/provisions/${id}/logs`, {responseType: 'text'});\n }\n\n getDestroyLogs(id) : Observable {\n return this.httpClient.get(`/api/destroyprovisions/${id}/logs`, {responseType: 'text'});\n }\n\n composePair(pair) : any {\n pair['0'].forEach(prov => {\n var foundDes = pair['1'].filter(d=>{\n return d.provId.toString() === prov._id.toString()\n });\n if (foundDes.length){\n prov.destroyId = foundDes[0]._id.toString();\n prov.statusDestroy = foundDes[0].status;\n prov.dateDestroy = foundDes[0].created;\n }\n });\n return pair;\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ScenariosService {\n\n constructor( private httpClient: HttpClient ) { }\n\n getScenarios() : Observable {\n return this.httpClient.get(`/api/scenarios`);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class UsersService {\n\n constructor( private httpClient: HttpClient ) { }\n\n getUsers() : Observable {\n return this.httpClient.get(`/api/users`);\n }\n}\n","module.exports = \"\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3VpL2Zvb3Rlci9mb290ZXIuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-footer',\n templateUrl: './footer.component.html',\n styleUrls: ['./footer.component.scss']\n})\nexport class FooterComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","module.exports = \"\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3VpL2hlYWRlci9oZWFkZXIuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, OnInit } from '@angular/core';\nimport { AuthGuard } from '../../services/auth.guard';\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'app-header',\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.scss']\n})\nexport class HeaderComponent implements OnInit {\n\n user;\n subs: Subscription;\n\n constructor( private _auth: AuthGuard){\n this.subs = this._auth.getUserInfo().subscribe( value => {\n this.user = value;\n console.log(\"USER\", this.user);\n });\n }\n\n ngOnInit() {\n \n }\n\n ngOnDestroy() {\n this.subs.unsubscribe();\n }\n\n}\n","module.exports = \"\\n\\n
\\n \\n \\n
\\n\\n\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3VpL2xheW91dC9sYXlvdXQuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-layout',\n templateUrl: './layout.component.html',\n styleUrls: ['./layout.component.scss']\n})\nexport class LayoutComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { LayoutComponent } from './layout/layout.component';\nimport { HeaderComponent } from './header/header.component';\nimport { FooterComponent } from './footer/footer.component';\nimport { AppRoutingModule } from '../app-routing.module';\n\n@NgModule({\n declarations: [LayoutComponent, HeaderComponent, FooterComponent],\n imports: [\n CommonModule,\n AppRoutingModule\n ],\n exports: [LayoutComponent],\n schemas: [\n CUSTOM_ELEMENTS_SCHEMA\n ]\n})\nexport class UiModule { }\n","export const environment = {\n production: false,\n config: {\n tenant: 'c21eeb5f-f5a6-44e8-a997-124f2f7a497c',\n clientId: '40742f13-bde8-4b1b-ac07-54c11b36b779',\n postLogoutRedirectUri: 'http://localhost:4200',\n endpoints: {\n 'http://localhost:4200/': 'the id'\n }\n }\n};","import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app/app.module';\nimport { environment } from './environments/environment';\n\nif (environment.production) {\n enableProdMode();\n}\n\nplatformBrowserDynamic().bootstrapModule(AppModule)\n .catch(err => console.error(err));\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///./src/$_lazy_route_resource lazy namespace object","webpack:///./src/app/admin/admin.component.html","webpack:///./src/app/admin/admin.component.scss","webpack:///./src/app/admin/admin.component.ts","webpack:///./src/app/app-routing.module.ts","webpack:///./src/app/app.component.html","webpack:///./src/app/app.component.scss","webpack:///./src/app/app.component.ts","webpack:///./src/app/app.module.ts","webpack:///./src/app/home/home.component.html","webpack:///./src/app/home/home.component.scss","webpack:///./src/app/home/home.component.ts","webpack:///./src/app/logs/logs.component.html","webpack:///./src/app/logs/logs.component.scss","webpack:///./src/app/logs/logs.component.ts","webpack:///./src/app/provisions/provisions.component.html","webpack:///./src/app/provisions/provisions.component.scss","webpack:///./src/app/provisions/provisions.component.ts","webpack:///./src/app/scenarios/scenarios.component.html","webpack:///./src/app/scenarios/scenarios.component.scss","webpack:///./src/app/scenarios/scenarios.component.ts","webpack:///./src/app/services/auth.guard.ts","webpack:///./src/app/services/provisions.service.ts","webpack:///./src/app/services/scenarios.service.ts","webpack:///./src/app/services/users.service.ts","webpack:///./src/app/ui/footer/footer.component.html","webpack:///./src/app/ui/footer/footer.component.scss","webpack:///./src/app/ui/footer/footer.component.ts","webpack:///./src/app/ui/header/header.component.html","webpack:///./src/app/ui/header/header.component.scss","webpack:///./src/app/ui/header/header.component.ts","webpack:///./src/app/ui/layout/layout.component.html","webpack:///./src/app/ui/layout/layout.component.scss","webpack:///./src/app/ui/layout/layout.component.ts","webpack:///./src/app/ui/ui.module.ts","webpack:///./src/environments/environment.ts","webpack:///./src/main.ts"],"names":[],"mappings":"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","file":"main.js","sourcesContent":["function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = \"./src/$$_lazy_route_resource lazy recursive\";","module.exports = \"\\n

Users

\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
NameEmailUser IDRole
{{user.displayName}}{{user.upn}}{{user._id}}{{user.role}}\\n \\n \\n
\\n

Provisions

\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
Scenario ProvisionScenario Destroy
ProvisionIDProv. DateUserScenarioStatusDestroyIDDest. DateStatusDestroyed?
{{ provision._id }}{{provision.created | date: 'MMM dd, yyyy - H:mm'}}{{provision.user}}{{ provision.scenario }}\\n {{provision.status}}\\n \\n \\n \\n {{provision.destroyId}}{{provision.dateDestroy | date: 'MMM dd, yyyy - H:mm'}}\\n {{provision.statusDestroy}}\\n \\n \\n \\n \\n \\n \\n
\\n\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2FkbWluL2FkbWluLmNvbXBvbmVudC5zY3NzIn0= */\"","import { Component, OnInit } from '@angular/core';\nimport { UsersService } from '../services/users.service';\nimport { ProvisionsService } from '../services/provisions.service'; \nimport { Subscription, timer } from 'rxjs';\nimport { switchMap } from 'rxjs/operators';\n\n\n@Component({\n selector: 'app-admin',\n templateUrl: './admin.component.html',\n styleUrls: ['./admin.component.scss']\n})\nexport class AdminComponent implements OnInit {\n\n users;\n provisions;\n destroys;\n subscription: Subscription;\n instantSubs: Subscription;\n logShow: boolean = false;\n logstype: String = 'provision';\n selectedprov: Object = null;\n\n constructor( private _usersService: UsersService, private _provisionsService: ProvisionsService ) { }\n \n private _fillUser(pair) {\n pair['0'].forEach(prov => {\n var foundDes = this.users.filter(u=>{\n return u._id.toString() === prov.userId.toString();\n });\n if (foundDes.length){\n prov.user = foundDes[0].displayName;\n }\n });\n }\n\n private _getUsers() {\n\n }\n\n ngOnInit() {\n this._usersService.getUsers().subscribe( res => {\n \n this.users = res;\n \n this.subscription = timer(0, 5000).pipe( switchMap(() => this._provisionsService.getCombinedProvisionsAdmin() ) ).subscribe(pair => { \n this._provisionsService.composePair(pair);\n this._fillUser(pair);\n this.destroys = pair[1];\n this.provisions = pair[0];\n })\n })\n }\n\n private _refresh(): void {\n this.instantSubs = this._provisionsService.getCombinedProvisionsAdmin().subscribe( pair=>{\n this._provisionsService.composePair(pair);\n this._fillUser(pair);\n this.destroys = pair[1];\n this.provisions = pair[0];\n this.instantSubs.unsubscribe();\n })\n }\n\n ngOnDestroy() {\n this.subscription.unsubscribe();\n if ( this.instantSubs ) {\n this.instantSubs.unsubscribe();\n }\n }\n\n del(provision): void {\n this._provisionsService.delProvision(provision._id.toString(), provision.userId).subscribe( res => {\n console.log(\"Done!\", res);\n this._refresh();\n })\n }\n\n destroy(provision) : void{\n this._provisionsService.newDestroy({\"id\": provision._id.toString()}, provision.userId).subscribe( res => {\n console.log(\"Done!\", res);\n this._refresh();\n })\n }\n\n showLogs($event, provision, type): void {\n $event.preventDefault();\n $event.stopPropagation();\n this.logstype = type;\n this.logShow = false;\n this.selectedprov = provision;\n this.logShow = true;\n }\n\n onLogsClose($event): void {\n this.selectedprov = null;\n this.logShow = false;\n }\n\n onStartProvision($event): void {\n console.log(\"onStartProvision\");\n this._refresh();\n }\n\n setAdmin(user) : void {\n this._usersService.updateUser(user._id, {\"role\": \"admin\"}).subscribe( res1 => {\n console.log(\"Updated\", res1);\n this._usersService.getUsers().subscribe( res => {\n this.users = res;\n });\n })\n }\n\n removeAdmin(user) : void {\n this._usersService.updateUser(user._id, {\"role\": null}).subscribe( res1 => {\n console.log(\"Updated\", res1);\n this._usersService.getUsers().subscribe( res => {\n this.users = res;\n });\n })\n }\n}\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\nimport { ProvisionsComponent } from './provisions/provisions.component';\nimport { AdminComponent } from './admin/admin.component';\nimport { HomeComponent } from './home/home.component';\nimport { AuthGuard } from './services/auth.guard';\n\nconst routes: Routes = [\n { path: 'home', component: HomeComponent},\n { path: 'provisions', component: ProvisionsComponent, canActivate: [AuthGuard]},\n { path: 'admin', component: AdminComponent, canActivate: [AuthGuard]},\n { path: '',\n redirectTo: '/home',\n pathMatch: 'full'\n },\n { path: '**', redirectTo: '/home' }\n];\n\n@NgModule({\n imports: [RouterModule.forRoot(routes)],\n exports: [RouterModule]\n})\nexport class AppRoutingModule { }\n","module.exports = \"\\n\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2FwcC5jb21wb25lbnQuc2NzcyJ9 */\"","import { Component } from '@angular/core';\n\n@Component({\n selector: 'app-root',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.scss']\n})\n\nexport class AppComponent {\n title = 'qmi-cloud';\n constructor() {\n \n }\n}\n","import { BrowserModule } from '@angular/platform-browser';\nimport { NgModule } from '@angular/core';\n\nimport { AppRoutingModule } from './app-routing.module';\nimport { AppComponent } from './app.component';\nimport { UiModule } from './ui/ui.module';\nimport { HomeComponent } from './home/home.component';\nimport { ProvisionsComponent } from './provisions/provisions.component';\nimport { AuthGuard } from './services/auth.guard';\nimport { ProvisionsService } from './services/provisions.service';\nimport { ScenariosService } from './services/scenarios.service';\nimport { UsersService } from './services/users.service';\n\n\nimport { HttpClientModule } from '@angular/common/http';\nimport { LogsComponent } from './logs/logs.component';\nimport { ScenariosComponent } from './scenarios/scenarios.component';\nimport { AdminComponent } from './admin/admin.component';\n\n@NgModule({\n declarations: [\n AppComponent,\n HomeComponent,\n ProvisionsComponent,\n LogsComponent,\n ScenariosComponent,\n AdminComponent\n ],\n imports: [\n BrowserModule,\n AppRoutingModule,\n UiModule,\n HttpClientModule\n ],\n providers: [ProvisionsService, ScenariosService, UsersService, AuthGuard],\n bootstrap: [AppComponent]\n})\nexport class AppModule { }\n","module.exports = \"
\\n

QMI Cloud

\\n

\\n Launch QMI scenarios in the Cloud in no time.\\n

\\n

\\n Your Provisions \\n

\\n
\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2hvbWUvaG9tZS5jb21wb25lbnQuc2NzcyJ9 */\"","import { Component, OnInit } from '@angular/core';\n\n\n@Component({\n selector: 'app-home',\n templateUrl: './home.component.html',\n styleUrls: ['./home.component.scss'],\n providers: []\n})\nexport class HomeComponent implements OnInit {\n\n constructor() {}\n \n ngOnInit() {\n \n }\n\n ngOnDestroy() {\n \n }\n \n}\n","module.exports = \"
\\n \\n \\n
\\n
\\n

{{type}} Logs

\\n

{{selectedprov._id}} - {{selectedprov.scenario}}

\\n

{{selectedprov.destroyId}} - {{selectedprov.scenario}}

\\n
{{content}}
\\n
\\n
\\n \\n \\n
\\n\"","module.exports = \".provlogs {\\n position: fixed;\\n width: 70%;\\n height: 100%;\\n right: 0px;\\n top: 0px;\\n z-index: 10000;\\n background: #fff;\\n padding: 25px;\\n overflow: auto;\\n font-size: 0.8em;\\n border-left: 2px solid #ccc; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9hb3IvRGV2ZWwvZ2Vhci9xbWktY2xvdWQvc3JjL2FwcC9sb2dzL2xvZ3MuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDSSxnQkFBZTtFQUNmLFdBQVU7RUFDVixhQUFZO0VBQ1osV0FBVTtFQUNWLFNBQVE7RUFDUixlQUFjO0VBQ2QsaUJBQWdCO0VBQ2hCLGNBQWE7RUFDYixlQUFjO0VBQ2QsaUJBQWdCO0VBQ2hCLDRCQUEyQixFQUM5QiIsImZpbGUiOiJzcmMvYXBwL2xvZ3MvbG9ncy5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5wcm92bG9ncyB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHdpZHRoOiA3MCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHJpZ2h0OiAwcHg7XG4gICAgdG9wOiAwcHg7XG4gICAgei1pbmRleDogMTAwMDA7XG4gICAgYmFja2dyb3VuZDogI2ZmZjtcbiAgICBwYWRkaW5nOiAyNXB4O1xuICAgIG92ZXJmbG93OiBhdXRvO1xuICAgIGZvbnQtc2l6ZTogMC44ZW07XG4gICAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjY2NjO1xufSJdfQ== */\"","import { Component, OnInit, Input, Output, EventEmitter, ViewChild, HostListener } from '@angular/core';\nimport { ProvisionsService } from '../services/provisions.service'; \nimport { Subscription, timer} from 'rxjs';\nimport { switchMap } from 'rxjs/operators';\n\n@Component({\n selector: 'app-logs',\n templateUrl: './logs.component.html',\n styleUrls: ['./logs.component.scss']\n})\nexport class LogsComponent implements OnInit {\n\n @ViewChild(\"insideElement\") insideElement;\n @HostListener('document:click', ['$event.target'])\n\n public onClick(targetElement) {\n const clickedInside = this.insideElement.nativeElement.contains(targetElement);\n if (!clickedInside) {\n console.log('outside clicked');\n this.onClose.emit(false);\n }\n }\n\n content: String = null;\n sub: Subscription;\n\n constructor(private _provisionsService: ProvisionsService) { }\n \n @Input() selectedprov;\n @Input() type;\n @Output() onClose = new EventEmitter();\n\n refresh(): void {\n if (!this.content){\n if ( this.type === \"provision\" ) {\n this.sub = timer(0, 5000).pipe( switchMap(() => this._provisionsService.getProvisionLogs(this.selectedprov._id) ) ).subscribe(content => { \n this.content = content;\n });\n } else if ( this.type === \"destroy\" ) {\n this.sub = timer(0, 5000).pipe( switchMap(() => this._provisionsService.getDestroyLogs(this.selectedprov.destroyId) ) ).subscribe(content => { \n this.content = content;\n })\n }\n }\n }\n ngOnInit() {\n this.refresh();\n }\n\n ngOnDestroy() {\n this.sub.unsubscribe();\n }\n\n close(): void {\n this.sub.unsubscribe();\n this.onClose.emit(false);\n }\n\n}\n","module.exports = \"\\n
\\n

Scenarios

\\n \\n
\\n\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
Scenario ProvisionScenario Destroy
ProvisionIDProv. DateScenarioStatusDestroyIDDest. DateStatusDestroyed?
{{ provision._id }}{{provision.created | date: 'MMM dd, yyyy - H:mm'}}{{ provision.scenario }}\\n {{provision.status}}\\n \\n \\n \\n {{provision.destroyId}}{{provision.dateDestroy | date: 'MMM dd, yyyy - H:mm'}}\\n {{provision.statusDestroy}}\\n \\n \\n \\n \\n \\n \\n
\\n\"","module.exports = \"td.ell {\\n max-width: 150px;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9hb3IvRGV2ZWwvZ2Vhci9xbWktY2xvdWQvc3JjL2FwcC9wcm92aXNpb25zL3Byb3Zpc2lvbnMuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDSSxpQkFBZ0I7RUFDaEIsaUJBQWdCO0VBQ2hCLHdCQUF1QjtFQUN2QixvQkFBbUIsRUFDdEIiLCJmaWxlIjoic3JjL2FwcC9wcm92aXNpb25zL3Byb3Zpc2lvbnMuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJ0ZC5lbGwge1xuICAgIG1heC13aWR0aDogMTUwcHg7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufSJdfQ== */\"","import { Component, OnInit } from '@angular/core';\nimport { ProvisionsService } from '../services/provisions.service'; \nimport { Subscription, timer} from 'rxjs';\nimport { switchMap } from 'rxjs/operators';\nimport { AuthGuard } from '../services/auth.guard';\n\n\n@Component({\n selector: 'app-provisions',\n templateUrl: './provisions.component.html',\n styleUrls: ['./provisions.component.scss'],\n providers: [ProvisionsService]\n})\nexport class ProvisionsComponent implements OnInit {\n\n private _userId;\n provisions;\n destroys;\n subscription: Subscription;\n instantSubs: Subscription;\n logShow: boolean = false;\n logstype: String = 'provision';\n selectedprov: Object = null;\n\n constructor(private _provisionsService: ProvisionsService, private _auth: AuthGuard) {\n this._auth.getUserInfo().subscribe( value => {\n this._userId = value._id;\n });\n }\n\n private _refresh(): void {\n this.instantSubs = this._provisionsService.getCombinedProvisions(this._userId).subscribe( pair=>{\n this._provisionsService.composePair(pair);\n this.destroys = pair[1];\n this.provisions = pair[0];\n this.instantSubs.unsubscribe();\n })\n }\n\n ngOnInit() {\n this.subscription = timer(0, 5000).pipe( switchMap(() => this._provisionsService.getCombinedProvisions(this._userId) ) ).subscribe(pair => { \n this._provisionsService.composePair(pair);\n this.destroys = pair[1];\n this.provisions = pair[0];\n })\n }\n\n ngOnDestroy() {\n this.subscription.unsubscribe();\n if ( this.instantSubs ) {\n this.instantSubs.unsubscribe();\n }\n }\n\n del(provision): void {\n this._provisionsService.delProvision(provision._id.toString(), this._userId).subscribe( res => {\n console.log(\"Done!\", res);\n this._refresh();\n })\n }\n\n destroy(provision) : void{\n this._provisionsService.newDestroy({\"id\": provision._id.toString()}, this._userId).subscribe( res => {\n console.log(\"Done!\", res);\n this._refresh();\n })\n }\n\n showLogs($event, provision, type): void {\n $event.preventDefault();\n $event.stopPropagation();\n this.logstype = type;\n this.logShow = false;\n this.selectedprov = provision;\n this.logShow = true;\n }\n\n onLogsClose($event): void {\n this.selectedprov = null;\n this.logShow = false;\n }\n\n onStartProvision($event): void {\n console.log(\"onStartProvision\");\n this._refresh();\n }\n\n\n\n}\n","module.exports = \"
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
DescriptionNameVersion
{{s.description}}{{s.name}}{{s.version}}
\\n
\\n\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3NjZW5hcmlvcy9zY2VuYXJpb3MuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, Output, OnInit, EventEmitter } from '@angular/core';\nimport { ProvisionsService } from '../services/provisions.service';\nimport { ScenariosService } from '../services/scenarios.service';\nimport { AuthGuard } from '../services/auth.guard';\n\n@Component({\n selector: 'app-scenarios',\n templateUrl: './scenarios.component.html',\n styleUrls: ['./scenarios.component.scss']\n})\nexport class ScenariosComponent implements OnInit {\n\n constructor(private _provisionsService: ProvisionsService, private _scenariosService: ScenariosService, private _auth: AuthGuard) { \n this._auth.getUserInfo().subscribe( value => {\n this._userId = value._id;\n });\n }\n\n @Output() onStartProvision = new EventEmitter();\n\n _userId;\n scenarios;\n\n ngOnInit() {\n this._scenariosService.getScenarios().subscribe( res => {\n this.scenarios = res;\n })\n }\n\n provision(scenario) : void{\n this._provisionsService.newProvision({\"scenario\": scenario.name}, this._userId).subscribe( res => {\n console.log(\"Done!\", res);\n this.onStartProvision.emit();\n })\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, Router } from '@angular/router';\n\nimport { of, Observable, BehaviorSubject } from 'rxjs';\nimport { map, catchError } from 'rxjs/operators';\nimport { HttpClient } from '@angular/common/http';\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthGuard implements CanActivate {\n\n private userInfo: BehaviorSubject = new BehaviorSubject(null);\n\n // Inject Router so we can hand off the user to the Login Page \n constructor(private httpClient: HttpClient, private router: Router) {\n\n this.getMe().subscribe(value => {\n this.userInfo.next(value);\n localStorage.setItem(\"user\", JSON.stringify(value));\n });\n\n }\n\n canActivate(route: ActivatedRouteSnapshot): Observable {\n return this.getMe().pipe(\n map(res => {\n this.userInfo.next(res);\n return true;\n }),\n catchError((err) => {\n this.userInfo.next(null);\n return of(false);\n })\n );\n }\n\n getMe() {\n return this.httpClient.get('/api/users/me');\n }\n\n getUserInfo(): any {\n return this.userInfo;\n }\n}\n\n\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable, forkJoin } from 'rxjs';\nimport { AuthGuard } from './auth.guard';\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ProvisionsService {\n\n\n constructor( private httpClient: HttpClient ) { }\n\n getProvisionsAdmin() : Observable {\n return this.httpClient.get(`/api/provisions`);\n }\n\n getDestroyProvisionsAdmin() : Observable {\n return this.httpClient.get(`/api/destroyprovisions`);\n }\n\n getProvisions(userId) : Observable {\n return this.httpClient.get(`/api/users/${userId}/provisions`);\n }\n\n newProvision(body, userId) : Observable {\n return this.httpClient.post(`/api/users/${userId}/provisions`, body);\n }\n\n delProvision(id, userId): Observable {\n return this.httpClient.delete(`/api/users/${userId}/provisions/${id}`);\n }\n\n newDestroy(body, userId) : Observable {\n return this.httpClient.post(`/api/users/${userId}/destroyprovisions`, body);\n }\n\n getDestroyProvisions(userId) : Observable {\n return this.httpClient.get(`/api/users/${userId}/destroyprovisions`);\n }\n\n getCombinedProvisions(userId): Observable {\n return forkJoin(this.getProvisions(userId), this.getDestroyProvisions(userId))\n }\n\n getCombinedProvisionsAdmin(): Observable {\n return forkJoin(this.getProvisionsAdmin(), this.getDestroyProvisionsAdmin())\n }\n\n\n getProvisionLogs(id) : Observable {\n return this.httpClient.get(`/api/provisions/${id}/logs`, {responseType: 'text'});\n }\n\n getDestroyLogs(id) : Observable {\n return this.httpClient.get(`/api/destroyprovisions/${id}/logs`, {responseType: 'text'});\n }\n\n composePair(pair) : any {\n pair['0'].forEach(prov => {\n var foundDes = pair['1'].filter(d=>{\n return d.provId.toString() === prov._id.toString()\n });\n if (foundDes.length){\n prov.destroyId = foundDes[0]._id.toString();\n prov.statusDestroy = foundDes[0].status;\n prov.dateDestroy = foundDes[0].created;\n }\n });\n return pair;\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ScenariosService {\n\n constructor( private httpClient: HttpClient ) { }\n\n getScenarios() : Observable {\n return this.httpClient.get(`/api/scenarios`);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class UsersService {\n\n constructor( private httpClient: HttpClient ) { }\n\n getUsers() : Observable {\n return this.httpClient.get(`/api/users`);\n }\n\n updateUser(userId, patchData): Observable {\n return this.httpClient.put(`/api/users/${userId}`, patchData);\n }\n}\n","module.exports = \"\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3VpL2Zvb3Rlci9mb290ZXIuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-footer',\n templateUrl: './footer.component.html',\n styleUrls: ['./footer.component.scss']\n})\nexport class FooterComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","module.exports = \"\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3VpL2hlYWRlci9oZWFkZXIuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, OnInit } from '@angular/core';\nimport { AuthGuard } from '../../services/auth.guard';\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'app-header',\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.scss']\n})\nexport class HeaderComponent implements OnInit {\n\n user;\n subs: Subscription;\n\n constructor( private _auth: AuthGuard){\n this.subs = this._auth.getUserInfo().subscribe( value => {\n this.user = value;\n console.log(\"USER\", this.user);\n });\n }\n\n ngOnInit() {\n \n }\n\n ngOnDestroy() {\n this.subs.unsubscribe();\n }\n\n}\n","module.exports = \"\\n\\n
\\n \\n \\n
\\n\\n\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3VpL2xheW91dC9sYXlvdXQuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-layout',\n templateUrl: './layout.component.html',\n styleUrls: ['./layout.component.scss']\n})\nexport class LayoutComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { LayoutComponent } from './layout/layout.component';\nimport { HeaderComponent } from './header/header.component';\nimport { FooterComponent } from './footer/footer.component';\nimport { AppRoutingModule } from '../app-routing.module';\n\n@NgModule({\n declarations: [LayoutComponent, HeaderComponent, FooterComponent],\n imports: [\n CommonModule,\n AppRoutingModule\n ],\n exports: [LayoutComponent],\n schemas: [\n CUSTOM_ELEMENTS_SCHEMA\n ]\n})\nexport class UiModule { }\n","export const environment = {\n production: false,\n config: {\n tenant: 'c21eeb5f-f5a6-44e8-a997-124f2f7a497c',\n clientId: '40742f13-bde8-4b1b-ac07-54c11b36b779',\n postLogoutRedirectUri: 'http://localhost:4200',\n endpoints: {\n 'http://localhost:4200/': 'the id'\n }\n }\n};","import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app/app.module';\nimport { environment } from './environments/environment';\n\nif (environment.production) {\n enableProdMode();\n}\n\nplatformBrowserDynamic().bootstrapModule(AppModule)\n .catch(err => console.error(err));\n"],"sourceRoot":""} \ No newline at end of file diff --git a/server/mongo.js b/server/mongo.js index 5b5d2f8..6f8b228 100644 --- a/server/mongo.js +++ b/server/mongo.js @@ -69,11 +69,9 @@ const add = async (model, data, reply) => { } }; -const update = async (model, req, reply) => { +const update = async (model, id, body, reply) => { try { - const id = req.id - const entity = req.body - const { ...updateData } = entity; + const { ...updateData } = body; updateData.updated = new Date(); const update = await model.findByIdAndUpdate(id, updateData, { new: true }); return update; @@ -102,8 +100,8 @@ function _m(model) { add: async (data, reply) => { return add(model, data, reply); }, - update: async (data, reply) => { - return update(model, data, reply); + update: async (id, data, reply) => { + return update(model, id, data, reply); }, del: async (id, reply) => { return del(model, id, reply); diff --git a/server/passport.js b/server/passport.js index a2ca868..0fdfd7d 100644 --- a/server/passport.js +++ b/server/passport.js @@ -205,7 +205,7 @@ module.exports.ensureAuthenticated = function(req, res, next) { }; module.exports.ensureAuthenticatedAndAdmin = function(req, res, next) { - if ( req.isAuthenticated() && req.user.role === 'admin' ) { + if ( req.isAuthenticated() && (req.user.role === 'admin' || req.user.role === 'superadmin') ) { return next(); } res.status(401).send({"error": "Unauthorized"}); @@ -213,7 +213,7 @@ module.exports.ensureAuthenticatedAndAdmin = function(req, res, next) { module.exports.ensureAuthenticatedAndIsMe = function (req, res, next) { if ( req.isAuthenticated() ) { - if ( req.user._id == req.params.userId || req.user.role === 'admin' ) { + if ( req.user._id == req.params.userId || req.user.role === 'admin' || req.user.role === 'superadmin' ) { return next(); } else { return res.status(401).send("Error: Unauthorized"); diff --git a/server/routes/api-destroyprovisions.js b/server/routes/api-destroyprovisions.js index 0cfe6a0..e519cc3 100644 --- a/server/routes/api-destroyprovisions.js +++ b/server/routes/api-destroyprovisions.js @@ -19,10 +19,6 @@ const passport = require('../passport'); */ router.get('/', passport.ensureAuthenticatedAndAdmin, async (req, res, next) => { - if ( req.user.role !== 'admin' ) { - return res.status(403).json({"msg": "forbidden"}); - } - try { const result = await db.destroy.get(); return res.json(result); diff --git a/server/routes/api-users.js b/server/routes/api-users.js index c9c3289..61825ec 100644 --- a/server/routes/api-users.js +++ b/server/routes/api-users.js @@ -73,6 +73,37 @@ router.get('/:userId', passport.ensureAuthenticatedAndIsMe, async (req, res, nex } }); +/** + * @swagger + * /users/{userId}: + * put: + * description: Update profile for an user + * summary: Update profile for an user + * parameters: + * - name: userId + * in: path + * type: string + * required: true + * - in: body + * name: body + * description: User object + * required: true + * produces: + * - application/json + * responses: + * 200: + * description: User + */ +router.put('/:userId', passport.ensureAuthenticatedAndAdmin, async (req, res, next) => { + + try { + const result = await db.user.update(req.params.userId, req.body); + return res.json(result); + } catch (error) { + next(error); + } +}); + /** * @swagger diff --git a/src/app/admin/admin.component.html b/src/app/admin/admin.component.html index 857f69d..54de430 100644 --- a/src/app/admin/admin.component.html +++ b/src/app/admin/admin.component.html @@ -1,29 +1,27 @@ -
-

Users

- - - - - - - - - - - - - - - - - -
NameEmailUser IDRole
{{user.displayName}}{{user.upn}}{{user._id}}{{user.role}} - - -
-
- +

Users

+ + + + + + + + + + + + + + + + + +
NameEmailUser IDRole
{{user.displayName}}{{user.upn}}{{user._id}}{{user.role}} + + +
+

Provisions

diff --git a/src/app/admin/admin.component.ts b/src/app/admin/admin.component.ts index 364e49d..fe10bfd 100644 --- a/src/app/admin/admin.component.ts +++ b/src/app/admin/admin.component.ts @@ -34,9 +34,15 @@ export class AdminComponent implements OnInit { }); } + private _getUsers() { + + } + ngOnInit() { this._usersService.getUsers().subscribe( res => { + this.users = res; + this.subscription = timer(0, 5000).pipe( switchMap(() => this._provisionsService.getCombinedProvisionsAdmin() ) ).subscribe(pair => { this._provisionsService.composePair(pair); this._fillUser(pair); @@ -96,4 +102,21 @@ export class AdminComponent implements OnInit { this._refresh(); } + setAdmin(user) : void { + this._usersService.updateUser(user._id, {"role": "admin"}).subscribe( res1 => { + console.log("Updated", res1); + this._usersService.getUsers().subscribe( res => { + this.users = res; + }); + }) + } + + removeAdmin(user) : void { + this._usersService.updateUser(user._id, {"role": null}).subscribe( res1 => { + console.log("Updated", res1); + this._usersService.getUsers().subscribe( res => { + this.users = res; + }); + }) + } } diff --git a/src/app/services/users.service.ts b/src/app/services/users.service.ts index defc09b..853e933 100644 --- a/src/app/services/users.service.ts +++ b/src/app/services/users.service.ts @@ -12,4 +12,8 @@ export class UsersService { getUsers() : Observable { return this.httpClient.get(`/api/users`); } + + updateUser(userId, patchData): Observable { + return this.httpClient.put(`/api/users/${userId}`, patchData); + } } diff --git a/src/app/ui/header/header.component.html b/src/app/ui/header/header.component.html index 3f56525..978b086 100644 --- a/src/app/ui/header/header.component.html +++ b/src/app/ui/header/header.component.html @@ -17,7 +17,7 @@ --> - Admin + Admin Hello {{user.displayName}} Login Logout