From 907e274721d48e1145538c622f01868e01185491 Mon Sep 17 00:00:00 2001 From: Dragos Date: Thu, 13 May 2021 11:48:33 +0300 Subject: [PATCH] users can remove ssh keys now --- app/.vs/app/v16/.suo | Bin 67584 -> 94720 bytes app/.vs/slnx.sqlite | Bin 135168 -> 135168 bytes app/src/app/account/account.component.html | 13 +++-- app/src/app/account/account.component.ts | 37 ++++++++++++++ .../file-manager/file-manager.component.html | 1 - .../file-manager/file-manager.component.scss | 0 .../file-manager.component.spec.ts | 25 ---------- .../file-manager/file-manager.component.ts | 15 ------ .../app/file-manager/file-manager.module.ts | 46 ------------------ app/src/assets/i18n/account/en.json | 3 +- 10 files changed, 48 insertions(+), 92 deletions(-) delete mode 100644 app/src/app/file-manager/file-manager.component.html delete mode 100644 app/src/app/file-manager/file-manager.component.scss delete mode 100644 app/src/app/file-manager/file-manager.component.spec.ts delete mode 100644 app/src/app/file-manager/file-manager.component.ts delete mode 100644 app/src/app/file-manager/file-manager.module.ts diff --git a/app/.vs/app/v16/.suo b/app/.vs/app/v16/.suo index 5fb7e8960a488cab9344e08a00a3fc792501e2d9..e4322b139a9e29412e9743c43bf63001457e411a 100644 GIT binary patch delta 10645 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%0D_bd_@rb;zS+a?d0dm1q} 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 diff --git a/app/src/app/account/account.component.html b/app/src/app/account/account.component.html index 83ab178..9545658 100644 --- a/app/src/app/account/account.component.html +++ b/app/src/app/account/account.component.html @@ -29,7 +29,7 @@
  • Container Name Service: + [ngClass]="userInfo.triton_cns_enabled ? 'border-success text-success' : 'danger-success text-danger'"> {{ userInfo.triton_cns_enabled ? 'enabled' : 'disabled' }}
  • @@ -48,13 +48,18 @@
      -
    1. - {{ userKey.name }}: {{ userKey.fingerprint }} +
    2. + {{ userKey.name }}: {{ userKey.fingerprint }} + +
    + - \ No newline at end of file diff --git a/app/src/app/account/account.component.ts b/app/src/app/account/account.component.ts index a2e5133..0cc16dc 100644 --- a/app/src/app/account/account.component.ts +++ b/app/src/app/account/account.component.ts @@ -11,6 +11,7 @@ import { ToastrService } from 'ngx-toastr'; import { SshKeyEditorComponent } from './ssh-key-editor/ssh-key-editor.component'; import { Title } from "@angular/platform-browser"; import { TranslateService } from '@ngx-translate/core'; +import { ConfirmationDialogComponent } from '../components/confirmation-dialog/confirmation-dialog.component'; @Component({ selector: 'app-account', @@ -72,6 +73,42 @@ export class AccountComponent implements OnInit, OnDestroy const modalRef = this.modalService.show(SshKeyEditorComponent, modalConfig); } + // ---------------------------------------------------------------------------------------------------------------- + deleteSshKey(keyName: string) + { + const modalConfig = { + ignoreBackdropClick: true, + keyboard: false, + animated: true, + initialState: { + prompt: `Are you sure you wish to permanently delete the "${keyName}" key?`, + confirmButtonText: 'Yes, delete it', + declineButtonText: 'No, keep it', + confirmByDefault: false + } + }; + + const modalRef = this.modalService.show(ConfirmationDialogComponent, modalConfig); + + modalRef.content.confirm.pipe(first()).subscribe(() => + { + this.accountService.deleteKey(keyName) + .subscribe(() => + { + const index = this.userKeys.findIndex(x => x.name === keyName); + if (index >= 0) + { + this.userKeys.splice(index, 1); + this.toastr.info(`The "${keyName}" key has been deleted`); + } + }, err => + { + const errorDetails = err.error?.message ? `(${err.error.message})` : ''; + this.toastr.error(`Failed to remove the "${keyName}" key ${errorDetails}`); + }); + }); + } + // ---------------------------------------------------------------------------------------------------------------- ngOnInit() { diff --git a/app/src/app/file-manager/file-manager.component.html b/app/src/app/file-manager/file-manager.component.html deleted file mode 100644 index 7731c9a..0000000 --- a/app/src/app/file-manager/file-manager.component.html +++ /dev/null @@ -1 +0,0 @@ -

    file-manager works!

    diff --git a/app/src/app/file-manager/file-manager.component.scss b/app/src/app/file-manager/file-manager.component.scss deleted file mode 100644 index e69de29..0000000 diff --git a/app/src/app/file-manager/file-manager.component.spec.ts b/app/src/app/file-manager/file-manager.component.spec.ts deleted file mode 100644 index 9e94da7..0000000 --- a/app/src/app/file-manager/file-manager.component.spec.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; - -import { FileManagerComponent } from './file-manager.component'; - -describe('FileManagerComponent', () => { - let component: FileManagerComponent; - let fixture: ComponentFixture; - - beforeEach(async(() => { - TestBed.configureTestingModule({ - declarations: [ FileManagerComponent ] - }) - .compileComponents(); - })); - - beforeEach(() => { - fixture = TestBed.createComponent(FileManagerComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/app/src/app/file-manager/file-manager.component.ts b/app/src/app/file-manager/file-manager.component.ts deleted file mode 100644 index a28fb79..0000000 --- a/app/src/app/file-manager/file-manager.component.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { Component, OnInit } from '@angular/core'; - -@Component({ - selector: 'app-file-manager', - templateUrl: './file-manager.component.html', - styleUrls: ['./file-manager.component.scss'] -}) -export class FileManagerComponent implements OnInit { - - constructor() { } - - ngOnInit(): void { - } - -} diff --git a/app/src/app/file-manager/file-manager.module.ts b/app/src/app/file-manager/file-manager.module.ts deleted file mode 100644 index d6eb458..0000000 --- a/app/src/app/file-manager/file-manager.module.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { NgModule } from '@angular/core'; - -import { SharedModule } from '../shared.module'; -import { RouterModule } from '@angular/router'; - -import { TranslateModule, TranslateService, LangChangeEvent } from '@ngx-translate/core'; -import { TranslateLoader } from '@ngx-translate/core'; -import { WebpackTranslateLoader } from '../helpers/webpack-translate-loader.service'; -import { TranslateCompiler } from '@ngx-translate/core'; -import { TranslateMessageFormatCompiler } from 'ngx-translate-messageformat-compiler'; - -import { FileManagerComponent } from './file-manager.component'; - -@NgModule({ - declarations: [FileManagerComponent], - imports: [ - SharedModule, - RouterModule.forChild([ - { - path: '', - component: FileManagerComponent - } - ]), - TranslateModule.forChild({ - loader: { - provide: TranslateLoader, - //useClass: WebpackTranslateLoader - useFactory: () => new WebpackTranslateLoader('file-manager') - }, - compiler: { - provide: TranslateCompiler, - useFactory: () => new TranslateMessageFormatCompiler() - }, - isolate: true - }) - ] -}) -export class FileManagerModule -{ - constructor(private readonly translate: TranslateService) - { - translate.use(translate.store.currentLang); - - translate.store.onLangChange.subscribe((event: LangChangeEvent) => translate.use(event.lang)); - } -} diff --git a/app/src/assets/i18n/account/en.json b/app/src/assets/i18n/account/en.json index a4fd338..04f5fa2 100644 --- a/app/src/assets/i18n/account/en.json +++ b/app/src/assets/i18n/account/en.json @@ -5,6 +5,7 @@ "myProfile": "My profile", "updateProfile": "Update profile", "myKeys": "My keys", - "addKey": "Add key" + "addKey": "Add key", + "removeKey": "Delete this key" } }