aboutsummaryrefslogtreecommitdiffhomepage
path: root/client/src
diff options
context:
space:
mode:
Diffstat (limited to 'client/src')
-rw-r--r--client/src/app/+my-account/my-account-settings/my-account-danger-zone/index.ts1
-rw-r--r--client/src/app/+my-account/my-account-settings/my-account-danger-zone/my-account-danger-zone.component.html5
-rw-r--r--client/src/app/+my-account/my-account-settings/my-account-danger-zone/my-account-danger-zone.component.scss11
-rw-r--r--client/src/app/+my-account/my-account-settings/my-account-danger-zone/my-account-danger-zone.component.ts46
-rw-r--r--client/src/app/+my-account/my-account-settings/my-account-settings.component.html3
-rw-r--r--client/src/app/+my-account/my-account.module.ts4
-rw-r--r--client/src/app/shared/users/user.service.ts10
7 files changed, 79 insertions, 1 deletions
diff --git a/client/src/app/+my-account/my-account-settings/my-account-danger-zone/index.ts b/client/src/app/+my-account/my-account-settings/my-account-danger-zone/index.ts
new file mode 100644
index 000000000..88a39bb97
--- /dev/null
+++ b/client/src/app/+my-account/my-account-settings/my-account-danger-zone/index.ts
@@ -0,0 +1 @@
export * from './my-account-danger-zone.component'
diff --git a/client/src/app/+my-account/my-account-settings/my-account-danger-zone/my-account-danger-zone.component.html b/client/src/app/+my-account/my-account-settings/my-account-danger-zone/my-account-danger-zone.component.html
new file mode 100644
index 000000000..8caff972f
--- /dev/null
+++ b/client/src/app/+my-account/my-account-settings/my-account-danger-zone/my-account-danger-zone.component.html
@@ -0,0 +1,5 @@
1<div class="delete-me">
2 <p>Once you delete your account, there is no going back. Please be certain.</p>
3
4 <button (click)="deleteMe()">Delete your account</button>
5</div> \ No newline at end of file
diff --git a/client/src/app/+my-account/my-account-settings/my-account-danger-zone/my-account-danger-zone.component.scss b/client/src/app/+my-account/my-account-settings/my-account-danger-zone/my-account-danger-zone.component.scss
new file mode 100644
index 000000000..0ca310468
--- /dev/null
+++ b/client/src/app/+my-account/my-account-settings/my-account-danger-zone/my-account-danger-zone.component.scss
@@ -0,0 +1,11 @@
1@import '_variables';
2@import '_mixins';
3
4.delete-me {
5 font-size: 15px;
6
7 button {
8 @include peertube-button;
9 @include grey-button;
10 }
11} \ No newline at end of file
diff --git a/client/src/app/+my-account/my-account-settings/my-account-danger-zone/my-account-danger-zone.component.ts b/client/src/app/+my-account/my-account-settings/my-account-danger-zone/my-account-danger-zone.component.ts
new file mode 100644
index 000000000..63a121f64
--- /dev/null
+++ b/client/src/app/+my-account/my-account-settings/my-account-danger-zone/my-account-danger-zone.component.ts
@@ -0,0 +1,46 @@
1import { Component, Input } from '@angular/core'
2import { NotificationsService } from 'angular2-notifications'
3import { AuthService, ConfirmService, RedirectService } from '../../../core'
4import { UserService } from '../../../shared'
5import { I18n } from '@ngx-translate/i18n-polyfill'
6import { User } from '@app/shared'
7
8@Component({
9 selector: 'my-account-danger-zone',
10 templateUrl: './my-account-danger-zone.component.html',
11 styleUrls: [ './my-account-danger-zone.component.scss' ]
12})
13export class MyAccountDangerZoneComponent {
14 @Input() user: User = null
15
16 constructor (
17 private authService: AuthService,
18 private notificationsService: NotificationsService,
19 private userService: UserService,
20 private confirmService: ConfirmService,
21 private redirectService: RedirectService,
22 private i18n: I18n
23 ) { }
24
25 async deleteMe () {
26 const res = await this.confirmService.confirmWithInput(
27 this.i18n('Are you sure you want to delete your account? This will delete all you data, including channels, videos etc.'),
28 this.i18n('Type your username to confirm'),
29 this.user.username,
30 this.i18n('Delete your account'),
31 this.i18n('Delete my account')
32 )
33 if (res === false) return
34
35 this.userService.deleteMe().subscribe(
36 () => {
37 this.notificationsService.success(this.i18n('Success'), this.i18n('Your account is deleted.'))
38
39 this.authService.logout()
40 this.redirectService.redirectToHomepage()
41 },
42
43 err => this.notificationsService.error(this.i18n('Error'), err.message)
44 )
45 }
46}
diff --git a/client/src/app/+my-account/my-account-settings/my-account-settings.component.html b/client/src/app/+my-account/my-account-settings/my-account-settings.component.html
index ff08cb777..c7e23cd1f 100644
--- a/client/src/app/+my-account/my-account-settings/my-account-settings.component.html
+++ b/client/src/app/+my-account/my-account-settings/my-account-settings.component.html
@@ -14,3 +14,6 @@
14 14
15<div i18n class="account-title">Video settings</div> 15<div i18n class="account-title">Video settings</div>
16<my-account-video-settings [user]="user" [userInformationLoaded]="userInformationLoaded"></my-account-video-settings> 16<my-account-video-settings [user]="user" [userInformationLoaded]="userInformationLoaded"></my-account-video-settings>
17
18<div i18n class="account-title">Danger zone</div>
19<my-account-danger-zone [user]="user"></my-account-danger-zone> \ No newline at end of file
diff --git a/client/src/app/+my-account/my-account.module.ts b/client/src/app/+my-account/my-account.module.ts
index 5403ab649..29b49e8d9 100644
--- a/client/src/app/+my-account/my-account.module.ts
+++ b/client/src/app/+my-account/my-account.module.ts
@@ -13,6 +13,7 @@ import { MyAccountVideoChannelCreateComponent } from '@app/+my-account/my-accoun
13import { MyAccountVideoChannelUpdateComponent } from '@app/+my-account/my-account-video-channels/my-account-video-channel-update.component' 13import { MyAccountVideoChannelUpdateComponent } from '@app/+my-account/my-account-video-channels/my-account-video-channel-update.component'
14import { ActorAvatarInfoComponent } from '@app/+my-account/shared/actor-avatar-info.component' 14import { ActorAvatarInfoComponent } from '@app/+my-account/shared/actor-avatar-info.component'
15import { MyAccountVideoImportsComponent } from '@app/+my-account/my-account-video-imports/my-account-video-imports.component' 15import { MyAccountVideoImportsComponent } from '@app/+my-account/my-account-video-imports/my-account-video-imports.component'
16import { MyAccountDangerZoneComponent } from '@app/+my-account/my-account-settings/my-account-danger-zone'
16 17
17@NgModule({ 18@NgModule({
18 imports: [ 19 imports: [
@@ -32,7 +33,8 @@ import { MyAccountVideoImportsComponent } from '@app/+my-account/my-account-vide
32 MyAccountVideoChannelCreateComponent, 33 MyAccountVideoChannelCreateComponent,
33 MyAccountVideoChannelUpdateComponent, 34 MyAccountVideoChannelUpdateComponent,
34 ActorAvatarInfoComponent, 35 ActorAvatarInfoComponent,
35 MyAccountVideoImportsComponent 36 MyAccountVideoImportsComponent,
37 MyAccountDangerZoneComponent
36 ], 38 ],
37 39
38 exports: [ 40 exports: [
diff --git a/client/src/app/shared/users/user.service.ts b/client/src/app/shared/users/user.service.ts
index 365a21df7..e6dc3dbf8 100644
--- a/client/src/app/shared/users/user.service.ts
+++ b/client/src/app/shared/users/user.service.ts
@@ -39,6 +39,16 @@ export class UserService {
39 ) 39 )
40 } 40 }
41 41
42 deleteMe () {
43 const url = UserService.BASE_USERS_URL + 'me'
44
45 return this.authHttp.delete(url)
46 .pipe(
47 map(this.restExtractor.extractDataBool),
48 catchError(err => this.restExtractor.handleError(err))
49 )
50 }
51
42 changeAvatar (avatarForm: FormData) { 52 changeAvatar (avatarForm: FormData) {
43 const url = UserService.BASE_USERS_URL + 'me/avatar/pick' 53 const url = UserService.BASE_USERS_URL + 'me/avatar/pick'
44 54