Browse Source

Improve user account deletion flow

pull/7269/head
Thomas Kaul 1 week ago
parent
commit
069fb206ad
  1. 3
      apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
  2. 42
      apps/client/src/app/components/user-account-settings/user-account-settings.html

3
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts

@ -71,6 +71,7 @@ import { catchError } from 'rxjs/operators';
export class GfUserAccountSettingsComponent implements OnInit { export class GfUserAccountSettingsComponent implements OnInit {
public appearancePlaceholder = $localize`Auto`; public appearancePlaceholder = $localize`Auto`;
public baseCurrency: string; public baseCurrency: string;
public closeUserAccountMail: string;
public currencies: string[] = []; public currencies: string[] = [];
public deleteOwnUserForm = this.formBuilder.group({ public deleteOwnUserForm = this.formBuilder.group({
accessToken: ['', Validators.required] accessToken: ['', Validators.required]
@ -124,6 +125,8 @@ export class GfUserAccountSettingsComponent implements OnInit {
if (state?.user) { if (state?.user) {
this.user = state.user; this.user = state.user;
this.closeUserAccountMail = `mailto:hi@ghostfol.io?subject=Delete Account&body=Hello%0D%0DPlease delete my Ghostfolio account.%0D%0DUser ID: ${this.user.id}%0D%0DKind regards`;
this.hasPermissionToDeleteOwnUser = hasPermission( this.hasPermissionToDeleteOwnUser = hasPermission(
this.user.permissions, this.user.permissions,
permissions.deleteOwnUser permissions.deleteOwnUser

42
apps/client/src/app/components/user-account-settings/user-account-settings.html

@ -280,21 +280,21 @@
<div class="align-items-center d-flex py-1"> <div class="align-items-center d-flex py-1">
<div class="pr-1 w-50"></div> <div class="pr-1 w-50"></div>
<div class="pl-1 text-monospace w-50"> <div class="pl-1 text-monospace w-50">
<button color="primary" mat-flat-button (click)="onExport()"> <button color="primary" i18n mat-flat-button (click)="onExport()">
<span i18n>Export Data</span> Export Data
</button> </button>
</div> </div>
</div> </div>
@if (hasPermissionToDeleteOwnUser) { <hr class="mt-5" />
<hr class="mt-5" /> <div class="d-flex py-1">
<form <div class="pr-1 text-danger w-50" i18n>Danger Zone</div>
class="w-100" <div class="pl-1 w-50">
[formGroup]="deleteOwnUserForm" @if (hasPermissionToDeleteOwnUser) {
(ngSubmit)="onCloseAccount()" <form
> class="w-100"
<div class="d-flex py-1"> [formGroup]="deleteOwnUserForm"
<div class="pr-1 text-danger w-50" i18n>Danger Zone</div> (ngSubmit)="onCloseAccount()"
<div class="pl-1 w-50"> >
<mat-form-field <mat-form-field
appearance="outline" appearance="outline"
class="without-hint w-100" class="without-hint w-100"
@ -324,18 +324,28 @@
<button <button
class="mt-2" class="mt-2"
color="warn" color="warn"
i18n
mat-flat-button mat-flat-button
type="submit" type="submit"
[disabled]=" [disabled]="
!(deleteOwnUserForm.dirty && deleteOwnUserForm.valid) !(deleteOwnUserForm.dirty && deleteOwnUserForm.valid)
" "
> >
<span i18n>Close Account</span> Close Account
</button> </button>
</form>
} @else if (user?.accounts?.length > 0 || user?.activitiesCount > 0) {
<div class="hint-text text-muted" i18n>
For security reasons, please delete all activities and accounts
first before your Ghostfolio account can be closed.
</div> </div>
</div> } @else {
</form> <a color="warn" i18n mat-flat-button [href]="closeUserAccountMail"
} >Close Account</a
>
}
</div>
</div>
</div> </div>
</div> </div>
</div> </div>

Loading…
Cancel
Save