From 5abb9fbbd12e7097e348d6a38622d364b1fa47ed Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Thu, 10 Jan 2019 15:39:51 +0100 Subject: Add ability to unfederate a local video (on blacklist) --- .../video-blacklist-list/video-blacklist-list.component.html | 6 ++++-- .../video-blacklist-list/video-blacklist-list.component.ts | 6 ++++++ client/src/app/+admin/users/user-list/user-list.component.html | 3 +++ 3 files changed, 13 insertions(+), 2 deletions(-) (limited to 'client/src/app/+admin') diff --git a/client/src/app/+admin/moderation/video-blacklist-list/video-blacklist-list.component.html b/client/src/app/+admin/moderation/video-blacklist-list/video-blacklist-list.component.html index 7cef787d2..6398af218 100644 --- a/client/src/app/+admin/moderation/video-blacklist-list/video-blacklist-list.component.html +++ b/client/src/app/+admin/moderation/video-blacklist-list/video-blacklist-list.component.html @@ -7,6 +7,7 @@ Video name Sensitive + Unfederated Date @@ -26,7 +27,8 @@ - {{ videoBlacklist.video.nsfw }} + {{ booleanToText(videoBlacklist.video.nsfw) }} + {{ booleanToText(videoBlacklist.unfederated) }} {{ videoBlacklist.createdAt }} @@ -37,7 +39,7 @@ - + Blacklist reason: {{ videoBlacklist.reason }} diff --git a/client/src/app/+admin/moderation/video-blacklist-list/video-blacklist-list.component.ts b/client/src/app/+admin/moderation/video-blacklist-list/video-blacklist-list.component.ts index a02e84f67..6c6f17f0c 100644 --- a/client/src/app/+admin/moderation/video-blacklist-list/video-blacklist-list.component.ts +++ b/client/src/app/+admin/moderation/video-blacklist-list/video-blacklist-list.component.ts @@ -46,6 +46,12 @@ export class VideoBlacklistListComponent extends RestTable implements OnInit { return Video.buildClientUrl(videoBlacklist.video.uuid) } + booleanToText (value: boolean) { + if (value === true) return this.i18n('yes') + + return this.i18n('no') + } + async removeVideoFromBlacklist (entry: VideoBlacklist) { const confirmMessage = this.i18n( 'Do you really want to remove this video from the blacklist? It will be available again in the videos list.' diff --git a/client/src/app/+admin/users/user-list/user-list.component.html b/client/src/app/+admin/users/user-list/user-list.component.html index 556ab3c5d..8c03a924b 100644 --- a/client/src/app/+admin/users/user-list/user-list.component.html +++ b/client/src/app/+admin/users/user-list/user-list.component.html @@ -65,7 +65,9 @@ (banned) + {{ user.email }} + ? {{ user.email }} @@ -76,6 +78,7 @@ + {{ user.videoQuotaUsed }} / {{ user.videoQuota }} {{ user.roleLabel }} {{ user.createdAt }} -- cgit v1.2.3 From 1506307f2f903ce0f80155072a33345c702b7c76 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Mon, 14 Jan 2019 16:48:38 +0100 Subject: Increase abuse length to 3000 And correctly handle new lines --- client/src/app/+admin/moderation/moderation.component.scss | 1 + .../moderation/video-abuse-list/video-abuse-list.component.html | 4 ++-- .../moderation/video-abuse-list/video-abuse-list.component.ts | 8 +++++++- .../video-blacklist-list/video-blacklist-list.component.html | 2 +- .../video-blacklist-list/video-blacklist-list.component.ts | 6 ++++++ 5 files changed, 17 insertions(+), 4 deletions(-) (limited to 'client/src/app/+admin') diff --git a/client/src/app/+admin/moderation/moderation.component.scss b/client/src/app/+admin/moderation/moderation.component.scss index 02ccfc8ca..13b019c5b 100644 --- a/client/src/app/+admin/moderation/moderation.component.scss +++ b/client/src/app/+admin/moderation/moderation.component.scss @@ -10,6 +10,7 @@ font-weight: $font-semibold; min-width: 200px; display: inline-block; + vertical-align: top; } .moderation-expanded-text { diff --git a/client/src/app/+admin/moderation/video-abuse-list/video-abuse-list.component.html b/client/src/app/+admin/moderation/video-abuse-list/video-abuse-list.component.html index e862d5162..05b549de6 100644 --- a/client/src/app/+admin/moderation/video-abuse-list/video-abuse-list.component.html +++ b/client/src/app/+admin/moderation/video-abuse-list/video-abuse-list.component.html @@ -51,11 +51,11 @@
Reason: - {{ videoAbuse.reason }} +
Moderation comment: - {{ videoAbuse.moderationComment }} +
diff --git a/client/src/app/+admin/moderation/video-abuse-list/video-abuse-list.component.ts b/client/src/app/+admin/moderation/video-abuse-list/video-abuse-list.component.ts index f64234b74..00c871659 100644 --- a/client/src/app/+admin/moderation/video-abuse-list/video-abuse-list.component.ts +++ b/client/src/app/+admin/moderation/video-abuse-list/video-abuse-list.component.ts @@ -9,6 +9,7 @@ import { DropdownAction } from '../../../shared/buttons/action-dropdown.componen import { ConfirmService } from '../../../core/index' import { ModerationCommentModalComponent } from './moderation-comment-modal.component' import { Video } from '../../../shared/video/video.model' +import { MarkdownService } from '@app/shared/renderer' @Component({ selector: 'my-video-abuse-list', @@ -30,7 +31,8 @@ export class VideoAbuseListComponent extends RestTable implements OnInit { private notifier: Notifier, private videoAbuseService: VideoAbuseService, private confirmService: ConfirmService, - private i18n: I18n + private i18n: I18n, + private markdownRenderer: MarkdownService ) { super() @@ -108,6 +110,10 @@ export class VideoAbuseListComponent extends RestTable implements OnInit { } + toHtml (text: string) { + return this.markdownRenderer.textMarkdownToHTML(text) + } + protected loadData () { return this.videoAbuseService.getVideoAbuses(this.pagination, this.sort) .subscribe( diff --git a/client/src/app/+admin/moderation/video-blacklist-list/video-blacklist-list.component.html b/client/src/app/+admin/moderation/video-blacklist-list/video-blacklist-list.component.html index 6398af218..247f441c1 100644 --- a/client/src/app/+admin/moderation/video-blacklist-list/video-blacklist-list.component.html +++ b/client/src/app/+admin/moderation/video-blacklist-list/video-blacklist-list.component.html @@ -41,7 +41,7 @@ Blacklist reason: - {{ videoBlacklist.reason }} + diff --git a/client/src/app/+admin/moderation/video-blacklist-list/video-blacklist-list.component.ts b/client/src/app/+admin/moderation/video-blacklist-list/video-blacklist-list.component.ts index 6c6f17f0c..b27bbbfef 100644 --- a/client/src/app/+admin/moderation/video-blacklist-list/video-blacklist-list.component.ts +++ b/client/src/app/+admin/moderation/video-blacklist-list/video-blacklist-list.component.ts @@ -7,6 +7,7 @@ import { VideoBlacklist } from '../../../../../../shared' import { I18n } from '@ngx-translate/i18n-polyfill' import { DropdownAction } from '../../../shared/buttons/action-dropdown.component' import { Video } from '../../../shared/video/video.model' +import { MarkdownService } from '@app/shared/renderer' @Component({ selector: 'my-video-blacklist-list', @@ -26,6 +27,7 @@ export class VideoBlacklistListComponent extends RestTable implements OnInit { private notifier: Notifier, private confirmService: ConfirmService, private videoBlacklistService: VideoBlacklistService, + private markdownRenderer: MarkdownService, private i18n: I18n ) { super() @@ -52,6 +54,10 @@ export class VideoBlacklistListComponent extends RestTable implements OnInit { return this.i18n('no') } + toHtml (text: string) { + return this.markdownRenderer.textMarkdownToHTML(text) + } + async removeVideoFromBlacklist (entry: VideoBlacklist) { const confirmMessage = this.i18n( 'Do you really want to remove this video from the blacklist? It will be available again in the videos list.' -- cgit v1.2.3 From 3195cd1c118f5e020ab7e635d5a3dcdad2108b1a Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Tue, 15 Jan 2019 09:25:26 +0100 Subject: Fix notification z-index on modals --- .../video-abuse-list/moderation-comment-modal.component.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'client/src/app/+admin') diff --git a/client/src/app/+admin/moderation/video-abuse-list/moderation-comment-modal.component.html b/client/src/app/+admin/moderation/video-abuse-list/moderation-comment-modal.component.html index 3a8424f68..952235c55 100644 --- a/client/src/app/+admin/moderation/video-abuse-list/moderation-comment-modal.component.html +++ b/client/src/app/+admin/moderation/video-abuse-list/moderation-comment-modal.component.html @@ -14,7 +14,7 @@ -
+
This comment can only be seen by you or the other moderators.
@@ -29,4 +29,4 @@
- \ No newline at end of file + -- cgit v1.2.3 From 457bb213b273a9b206cc5654eb085cede4e916ad Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Wed, 16 Jan 2019 16:05:40 +0100 Subject: Refactor how we use icons Inject them in an angular component so we can easily change their color --- .../video-abuse-list/moderation-comment-modal.component.html | 5 +++-- .../video-abuse-list/moderation-comment-modal.component.ts | 4 ++-- client/src/app/+admin/users/user-list/user-list.component.html | 2 +- client/src/app/+admin/users/user-list/user-list.component.scss | 4 ++-- 4 files changed, 8 insertions(+), 7 deletions(-) (limited to 'client/src/app/+admin') diff --git a/client/src/app/+admin/moderation/video-abuse-list/moderation-comment-modal.component.html b/client/src/app/+admin/moderation/video-abuse-list/moderation-comment-modal.component.html index 952235c55..303a788d2 100644 --- a/client/src/app/+admin/moderation/video-abuse-list/moderation-comment-modal.component.html +++ b/client/src/app/+admin/moderation/video-abuse-list/moderation-comment-modal.component.html @@ -1,7 +1,8 @@
- Cancel + Cancel this.notifier.error(err.message) diff --git a/client/src/app/+admin/users/user-list/user-list.component.html b/client/src/app/+admin/users/user-list/user-list.component.html index 8c03a924b..69a4616a3 100644 --- a/client/src/app/+admin/users/user-list/user-list.component.html +++ b/client/src/app/+admin/users/user-list/user-list.component.html @@ -2,7 +2,7 @@
Users list
- + Create user
diff --git a/client/src/app/+admin/users/user-list/user-list.component.scss b/client/src/app/+admin/users/user-list/user-list.component.scss index f235769f0..5274be01c 100644 --- a/client/src/app/+admin/users/user-list/user-list.component.scss +++ b/client/src/app/+admin/users/user-list/user-list.component.scss @@ -2,7 +2,7 @@ @import '_mixins'; .add-button { - @include create-button('../../../../assets/images/global/add.svg'); + @include create-button; } tr.banned { @@ -23,4 +23,4 @@ tr.banned { input { @include peertube-input-text(250px); } -} \ No newline at end of file +} -- cgit v1.2.3 From 092092969633bbcf6d4891a083ea497a7d5c3154 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Tue, 29 Jan 2019 08:37:25 +0100 Subject: Add hls support on server --- client/src/app/+admin/users/user-edit/user-edit.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'client/src/app/+admin') diff --git a/client/src/app/+admin/users/user-edit/user-edit.ts b/client/src/app/+admin/users/user-edit/user-edit.ts index 0b3511e8e..021b1feb4 100644 --- a/client/src/app/+admin/users/user-edit/user-edit.ts +++ b/client/src/app/+admin/users/user-edit/user-edit.ts @@ -22,7 +22,9 @@ export abstract class UserEdit extends FormReactive { } computeQuotaWithTranscoding () { - const resolutions = this.serverService.getConfig().transcoding.enabledResolutions + const transcodingConfig = this.serverService.getConfig().transcoding + + const resolutions = transcodingConfig.enabledResolutions const higherResolution = VideoResolution.H_1080P let multiplier = 0 @@ -30,6 +32,8 @@ export abstract class UserEdit extends FormReactive { multiplier += resolution / higherResolution } + if (transcodingConfig.hls.enabled) multiplier *= 2 + return multiplier * parseInt(this.form.value['videoQuota'], 10) } -- cgit v1.2.3 From 328c78bc4a570a9aceaaa1a2124bacd4a0e8d295 Mon Sep 17 00:00:00 2001 From: Rigel Kent Date: Sat, 6 Oct 2018 13:54:00 +0200 Subject: allow administration to change/reset a user's password --- client/src/app/+admin/admin.module.ts | 3 +- client/src/app/+admin/users/user-edit/index.ts | 1 + .../users/user-edit/user-edit.component.html | 10 +++ .../users/user-edit/user-edit.component.scss | 9 +- .../users/user-edit/user-password.component.html | 25 ++++++ .../users/user-edit/user-password.component.scss | 21 +++++ .../users/user-edit/user-password.component.ts | 100 +++++++++++++++++++++ .../users/user-edit/user-update.component.ts | 24 ++++- client/src/app/+admin/users/users.routes.ts | 3 +- 9 files changed, 192 insertions(+), 4 deletions(-) create mode 100644 client/src/app/+admin/users/user-edit/user-password.component.html create mode 100644 client/src/app/+admin/users/user-edit/user-password.component.scss create mode 100644 client/src/app/+admin/users/user-edit/user-password.component.ts (limited to 'client/src/app/+admin') diff --git a/client/src/app/+admin/admin.module.ts b/client/src/app/+admin/admin.module.ts index c06ae1d60..f7f347105 100644 --- a/client/src/app/+admin/admin.module.ts +++ b/client/src/app/+admin/admin.module.ts @@ -10,7 +10,7 @@ import { FollowingListComponent } from './follows/following-list/following-list. import { JobsComponent } from './jobs/job.component' import { JobsListComponent } from './jobs/jobs-list/jobs-list.component' import { JobService } from './jobs/shared/job.service' -import { UserCreateComponent, UserListComponent, UsersComponent, UserUpdateComponent } from './users' +import { UserCreateComponent, UserListComponent, UsersComponent, UserUpdateComponent, UserPasswordComponent } from './users' import { ModerationCommentModalComponent, VideoAbuseListComponent, VideoBlacklistListComponent } from './moderation' import { ModerationComponent } from '@app/+admin/moderation/moderation.component' import { RedundancyCheckboxComponent } from '@app/+admin/follows/shared/redundancy-checkbox.component' @@ -36,6 +36,7 @@ import { InstanceAccountBlocklistComponent, InstanceServerBlocklistComponent } f UsersComponent, UserCreateComponent, UserUpdateComponent, + UserPasswordComponent, UserListComponent, ModerationComponent, diff --git a/client/src/app/+admin/users/user-edit/index.ts b/client/src/app/+admin/users/user-edit/index.ts index fd80a02e0..ec734ef92 100644 --- a/client/src/app/+admin/users/user-edit/index.ts +++ b/client/src/app/+admin/users/user-edit/index.ts @@ -1,2 +1,3 @@ export * from './user-create.component' export * from './user-update.component' +export * from './user-password.component' diff --git a/client/src/app/+admin/users/user-edit/user-edit.component.html b/client/src/app/+admin/users/user-edit/user-edit.component.html index 56cf7d17d..cbc06c157 100644 --- a/client/src/app/+admin/users/user-edit/user-edit.component.html +++ b/client/src/app/+admin/users/user-edit/user-edit.component.html @@ -81,3 +81,13 @@ + +
+ + +

Send a link to reset the password by mail to the user.

+ + +

Manually set the user password

+ +
\ No newline at end of file diff --git a/client/src/app/+admin/users/user-edit/user-edit.component.scss b/client/src/app/+admin/users/user-edit/user-edit.component.scss index 6675f65cc..2b4aae83c 100644 --- a/client/src/app/+admin/users/user-edit/user-edit.component.scss +++ b/client/src/app/+admin/users/user-edit/user-edit.component.scss @@ -14,7 +14,7 @@ input:not([type=submit]) { @include peertube-select-container(340px); } -input[type=submit] { +input[type=submit], button { @include peertube-button; @include orange-button; @@ -25,3 +25,10 @@ input[type=submit] { margin-top: 5px; font-size: 11px; } + +.account-title { + @include in-content-small-title; + + margin-top: 55px; + margin-bottom: 30px; +} diff --git a/client/src/app/+admin/users/user-edit/user-password.component.html b/client/src/app/+admin/users/user-edit/user-password.component.html new file mode 100644 index 000000000..ee7d8dff5 --- /dev/null +++ b/client/src/app/+admin/users/user-edit/user-password.component.html @@ -0,0 +1,25 @@ +
+
+ +
+
+
+ +
+
+ +
+ +
+
+
+ {{ formErrors.password }} +
+
+ + +
\ No newline at end of file diff --git a/client/src/app/+admin/users/user-edit/user-password.component.scss b/client/src/app/+admin/users/user-edit/user-password.component.scss new file mode 100644 index 000000000..9185e787c --- /dev/null +++ b/client/src/app/+admin/users/user-edit/user-password.component.scss @@ -0,0 +1,21 @@ +@import '_variables'; +@import '_mixins'; + +input:not([type=submit]):not([type=checkbox]) { + @include peertube-input-text(340px); + display: block; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-right: none; +} + +input[type=submit] { + @include peertube-button; + @include orange-button; + + margin-top: 10px; +} + +.input-group-append { + height: 30px; +} diff --git a/client/src/app/+admin/users/user-edit/user-password.component.ts b/client/src/app/+admin/users/user-edit/user-password.component.ts new file mode 100644 index 000000000..1f9ccb4e8 --- /dev/null +++ b/client/src/app/+admin/users/user-edit/user-password.component.ts @@ -0,0 +1,100 @@ +import { Component, OnDestroy, OnInit, Input } from '@angular/core' +import { ActivatedRoute, Router } from '@angular/router' +import { Subscription } from 'rxjs' +import * as generator from 'generate-password-browser' +import { NotificationsService } from 'angular2-notifications' +import { UserService } from '@app/shared/users/user.service' +import { ServerService } from '../../../core' +import { User, UserUpdate } from '../../../../../../shared' +import { I18n } from '@ngx-translate/i18n-polyfill' +import { FormValidatorService } from '@app/shared/forms/form-validators/form-validator.service' +import { UserValidatorsService } from '@app/shared/forms/form-validators/user-validators.service' +import { ConfigService } from '@app/+admin/config/shared/config.service' +import { FormReactive } from '../../../shared' + +@Component({ + selector: 'my-user-password', + templateUrl: './user-password.component.html', + styleUrls: [ './user-password.component.scss' ] +}) +export class UserPasswordComponent extends FormReactive implements OnInit, OnDestroy { + error: string + userId: number + username: string + showPassword = false + + private paramsSub: Subscription + + constructor ( + protected formValidatorService: FormValidatorService, + protected serverService: ServerService, + protected configService: ConfigService, + private userValidatorsService: UserValidatorsService, + private route: ActivatedRoute, + private router: Router, + private notificationsService: NotificationsService, + private userService: UserService, + private i18n: I18n + ) { + super() + } + + ngOnInit () { + this.buildForm({ + password: this.userValidatorsService.USER_PASSWORD + }) + + this.paramsSub = this.route.params.subscribe(routeParams => { + const userId = routeParams['id'] + this.userService.getUser(userId).subscribe( + user => this.onUserFetched(user), + + err => this.error = err.message + ) + }) + } + + ngOnDestroy () { + this.paramsSub.unsubscribe() + } + + formValidated () { + this.error = undefined + + const userUpdate: UserUpdate = this.form.value + + this.userService.updateUser(this.userId, userUpdate).subscribe( + () => { + this.notificationsService.success( + this.i18n('Success'), + this.i18n('Password changed for user {{username}}.', { username: this.username }) + ) + }, + + err => this.error = err.message + ) + } + + generatePassword () { + this.form.patchValue({ + password: generator.generate({ + length: 16, + excludeSimilarCharacters: true, + strict: true + }) + }) + } + + togglePasswordVisibility () { + this.showPassword = !this.showPassword + } + + getFormButtonTitle () { + return this.i18n('Update user password') + } + + private onUserFetched (userJson: User) { + this.userId = userJson.id + this.username = userJson.username + } +} diff --git a/client/src/app/+admin/users/user-edit/user-update.component.ts b/client/src/app/+admin/users/user-edit/user-update.component.ts index 61e641823..cb74897d0 100644 --- a/client/src/app/+admin/users/user-edit/user-update.component.ts +++ b/client/src/app/+admin/users/user-edit/user-update.component.ts @@ -1,4 +1,4 @@ -import { Component, OnDestroy, OnInit } from '@angular/core' +import { Component, OnDestroy, OnInit, Input } from '@angular/core' import { ActivatedRoute, Router } from '@angular/router' import { Subscription } from 'rxjs' import { Notifier } from '@app/core' @@ -19,9 +19,12 @@ import { UserService } from '@app/shared' export class UserUpdateComponent extends UserEdit implements OnInit, OnDestroy { error: string userId: number + userEmail: string username: string + isAdministration = false private paramsSub: Subscription + private isAdministrationSub: Subscription constructor ( protected formValidatorService: FormValidatorService, @@ -56,10 +59,15 @@ export class UserUpdateComponent extends UserEdit implements OnInit, OnDestroy { err => this.error = err.message ) }) + + this.isAdministrationSub = this.route.data.subscribe(data => { + if (data.isAdministration) this.isAdministration = data.isAdministration + }) } ngOnDestroy () { this.paramsSub.unsubscribe() + this.isAdministrationSub.unsubscribe() } formValidated () { @@ -89,9 +97,23 @@ export class UserUpdateComponent extends UserEdit implements OnInit, OnDestroy { return this.i18n('Update user') } + resetPassword () { + this.userService.askResetPassword(this.userEmail).subscribe( + () => { + this.notificationsService.success( + this.i18n('Success'), + this.i18n('An email asking for password reset has been sent to {{username}}.', { username: this.username }) + ) + }, + + err => this.error = err.message + ) + } + private onUserFetched (userJson: User) { this.userId = userJson.id this.username = userJson.username + this.userEmail = userJson.email this.form.patchValue({ email: userJson.email, diff --git a/client/src/app/+admin/users/users.routes.ts b/client/src/app/+admin/users/users.routes.ts index 8b3791bd3..460ebd89e 100644 --- a/client/src/app/+admin/users/users.routes.ts +++ b/client/src/app/+admin/users/users.routes.ts @@ -44,7 +44,8 @@ export const UsersRoutes: Routes = [ data: { meta: { title: 'Update a user' - } + }, + isAdministration: true } } ] -- cgit v1.2.3 From a3342ce250936c30dc6df7563f4e984c172f61c1 Mon Sep 17 00:00:00 2001 From: Rigel Kent Date: Mon, 8 Oct 2018 15:56:56 +0200 Subject: remove isAdministration --- client/src/app/+admin/users/user-edit/user-edit.component.html | 10 ++++------ .../app/+admin/users/user-edit/user-password.component.html | 4 ++-- client/src/app/+admin/users/user-edit/user-update.component.ts | 7 ------- client/src/app/+admin/users/users.routes.ts | 3 +-- 4 files changed, 7 insertions(+), 17 deletions(-) (limited to 'client/src/app/+admin') diff --git a/client/src/app/+admin/users/user-edit/user-edit.component.html b/client/src/app/+admin/users/user-edit/user-edit.component.html index cbc06c157..b06c91ff3 100644 --- a/client/src/app/+admin/users/user-edit/user-edit.component.html +++ b/client/src/app/+admin/users/user-edit/user-edit.component.html @@ -82,12 +82,10 @@ -
-

Send a link to reset the password by mail to the user.

- +

Send a link to reset the password by mail to the user.

+ -

Manually set the user password

- -
\ No newline at end of file +

Manually set the user password

+ diff --git a/client/src/app/+admin/users/user-edit/user-password.component.html b/client/src/app/+admin/users/user-edit/user-password.component.html index ee7d8dff5..267422bdd 100644 --- a/client/src/app/+admin/users/user-edit/user-password.component.html +++ b/client/src/app/+admin/users/user-edit/user-password.component.html @@ -8,7 +8,7 @@
@@ -22,4 +22,4 @@
- \ No newline at end of file + diff --git a/client/src/app/+admin/users/user-edit/user-update.component.ts b/client/src/app/+admin/users/user-edit/user-update.component.ts index cb74897d0..4e4002a73 100644 --- a/client/src/app/+admin/users/user-edit/user-update.component.ts +++ b/client/src/app/+admin/users/user-edit/user-update.component.ts @@ -21,10 +21,8 @@ export class UserUpdateComponent extends UserEdit implements OnInit, OnDestroy { userId: number userEmail: string username: string - isAdministration = false private paramsSub: Subscription - private isAdministrationSub: Subscription constructor ( protected formValidatorService: FormValidatorService, @@ -59,15 +57,10 @@ export class UserUpdateComponent extends UserEdit implements OnInit, OnDestroy { err => this.error = err.message ) }) - - this.isAdministrationSub = this.route.data.subscribe(data => { - if (data.isAdministration) this.isAdministration = data.isAdministration - }) } ngOnDestroy () { this.paramsSub.unsubscribe() - this.isAdministrationSub.unsubscribe() } formValidated () { diff --git a/client/src/app/+admin/users/users.routes.ts b/client/src/app/+admin/users/users.routes.ts index 460ebd89e..8b3791bd3 100644 --- a/client/src/app/+admin/users/users.routes.ts +++ b/client/src/app/+admin/users/users.routes.ts @@ -44,8 +44,7 @@ export const UsersRoutes: Routes = [ data: { meta: { title: 'Update a user' - }, - isAdministration: true + } } } ] -- cgit v1.2.3 From 2c2baef6f30625794cf1f4f72c184527a4d82562 Mon Sep 17 00:00:00 2001 From: Rigel Kent Date: Mon, 8 Oct 2018 21:05:57 +0200 Subject: move user-password to Input decorator --- .../src/app/+admin/users/user-edit/user-edit.component.html | 2 +- .../app/+admin/users/user-edit/user-password.component.ts | 12 ++---------- 2 files changed, 3 insertions(+), 11 deletions(-) (limited to 'client/src/app/+admin') diff --git a/client/src/app/+admin/users/user-edit/user-edit.component.html b/client/src/app/+admin/users/user-edit/user-edit.component.html index b06c91ff3..6944ec435 100644 --- a/client/src/app/+admin/users/user-edit/user-edit.component.html +++ b/client/src/app/+admin/users/user-edit/user-edit.component.html @@ -88,4 +88,4 @@

Manually set the user password

- + diff --git a/client/src/app/+admin/users/user-edit/user-password.component.ts b/client/src/app/+admin/users/user-edit/user-password.component.ts index 1f9ccb4e8..99c4c8a59 100644 --- a/client/src/app/+admin/users/user-edit/user-password.component.ts +++ b/client/src/app/+admin/users/user-edit/user-password.component.ts @@ -19,10 +19,11 @@ import { FormReactive } from '../../../shared' }) export class UserPasswordComponent extends FormReactive implements OnInit, OnDestroy { error: string - userId: number username: string showPassword = false + @Input() userId: number + private paramsSub: Subscription constructor ( @@ -43,15 +44,6 @@ export class UserPasswordComponent extends FormReactive implements OnInit, OnDes this.buildForm({ password: this.userValidatorsService.USER_PASSWORD }) - - this.paramsSub = this.route.params.subscribe(routeParams => { - const userId = routeParams['id'] - this.userService.getUser(userId).subscribe( - user => this.onUserFetched(user), - - err => this.error = err.message - ) - }) } ngOnDestroy () { -- cgit v1.2.3 From 67b1d3fed765278bdc876cce393ef56d56942df0 Mon Sep 17 00:00:00 2001 From: Rigel Kent Date: Sat, 8 Dec 2018 15:37:36 +0100 Subject: cleanup and remove paramSubs --- client/src/app/+admin/users/user-edit/user-edit.component.html | 10 ++++++---- .../app/+admin/users/user-edit/user-password.component.html | 4 ++-- .../src/app/+admin/users/user-edit/user-password.component.ts | 5 +---- 3 files changed, 9 insertions(+), 10 deletions(-) (limited to 'client/src/app/+admin') diff --git a/client/src/app/+admin/users/user-edit/user-edit.component.html b/client/src/app/+admin/users/user-edit/user-edit.component.html index 6944ec435..3ce246771 100644 --- a/client/src/app/+admin/users/user-edit/user-edit.component.html +++ b/client/src/app/+admin/users/user-edit/user-edit.component.html @@ -82,10 +82,12 @@ +
-

Send a link to reset the password by mail to the user.

- +

Send a link to reset the password by mail to the user.

+ -

Manually set the user password

- +

Manually set the user password

+ +
\ No newline at end of file diff --git a/client/src/app/+admin/users/user-edit/user-password.component.html b/client/src/app/+admin/users/user-edit/user-password.component.html index 267422bdd..822e4688e 100644 --- a/client/src/app/+admin/users/user-edit/user-password.component.html +++ b/client/src/app/+admin/users/user-edit/user-password.component.html @@ -1,4 +1,4 @@ -
+
@@ -12,7 +12,7 @@ formControlName="password" [ngClass]="{ 'input-error': formErrors['password'] }" >
-
diff --git a/client/src/app/+admin/users/user-edit/user-password.component.ts b/client/src/app/+admin/users/user-edit/user-password.component.ts index 99c4c8a59..30cd21ccd 100644 --- a/client/src/app/+admin/users/user-edit/user-password.component.ts +++ b/client/src/app/+admin/users/user-edit/user-password.component.ts @@ -1,6 +1,5 @@ import { Component, OnDestroy, OnInit, Input } from '@angular/core' import { ActivatedRoute, Router } from '@angular/router' -import { Subscription } from 'rxjs' import * as generator from 'generate-password-browser' import { NotificationsService } from 'angular2-notifications' import { UserService } from '@app/shared/users/user.service' @@ -24,8 +23,6 @@ export class UserPasswordComponent extends FormReactive implements OnInit, OnDes @Input() userId: number - private paramsSub: Subscription - constructor ( protected formValidatorService: FormValidatorService, protected serverService: ServerService, @@ -47,7 +44,7 @@ export class UserPasswordComponent extends FormReactive implements OnInit, OnDes } ngOnDestroy () { - this.paramsSub.unsubscribe() + // } formValidated () { -- cgit v1.2.3 From b426edd4854adc6e65844d8c54b8998e792b5778 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Mon, 11 Feb 2019 09:30:29 +0100 Subject: Cleanup reset user password by admin And add some tests --- .../users/user-edit/user-edit.component.html | 16 ++++++---- .../users/user-edit/user-edit.component.scss | 13 ++++++++ client/src/app/+admin/users/user-edit/user-edit.ts | 5 ++++ .../users/user-edit/user-password.component.html | 16 ++++------ .../users/user-edit/user-password.component.scss | 1 + .../users/user-edit/user-password.component.ts | 35 ++++------------------ .../users/user-edit/user-update.component.ts | 5 ++-- 7 files changed, 42 insertions(+), 49 deletions(-) (limited to 'client/src/app/+admin') diff --git a/client/src/app/+admin/users/user-edit/user-edit.component.html b/client/src/app/+admin/users/user-edit/user-edit.component.html index 3ce246771..c6566da24 100644 --- a/client/src/app/+admin/users/user-edit/user-edit.component.html +++ b/client/src/app/+admin/users/user-edit/user-edit.component.html @@ -82,12 +82,16 @@ -
+
-

Send a link to reset the password by mail to the user.

- +
+ + +
-

Manually set the user password

- -
\ No newline at end of file +
+ + +
+
diff --git a/client/src/app/+admin/users/user-edit/user-edit.component.scss b/client/src/app/+admin/users/user-edit/user-edit.component.scss index 2b4aae83c..c1cc4ca45 100644 --- a/client/src/app/+admin/users/user-edit/user-edit.component.scss +++ b/client/src/app/+admin/users/user-edit/user-edit.component.scss @@ -32,3 +32,16 @@ input[type=submit], button { margin-top: 55px; margin-bottom: 30px; } + +.danger-zone { + .reset-password-email { + margin-bottom: 30px; + padding-bottom: 30px; + border-bottom: 1px solid rgba(0, 0, 0, 0.1); + + button { + display: block; + margin-top: 0; + } + } +} diff --git a/client/src/app/+admin/users/user-edit/user-edit.ts b/client/src/app/+admin/users/user-edit/user-edit.ts index 021b1feb4..649b35b0c 100644 --- a/client/src/app/+admin/users/user-edit/user-edit.ts +++ b/client/src/app/+admin/users/user-edit/user-edit.ts @@ -8,6 +8,7 @@ export abstract class UserEdit extends FormReactive { videoQuotaDailyOptions: { value: string, label: string }[] = [] roles = Object.keys(USER_ROLE_LABELS).map(key => ({ value: key.toString(), label: USER_ROLE_LABELS[key] })) username: string + userId: number protected abstract serverService: ServerService protected abstract configService: ConfigService @@ -37,6 +38,10 @@ export abstract class UserEdit extends FormReactive { return multiplier * parseInt(this.form.value['videoQuota'], 10) } + resetPassword () { + return + } + protected buildQuotaOptions () { // These are used by a HTML select, so convert key into strings this.videoQuotaOptions = this.configService diff --git a/client/src/app/+admin/users/user-edit/user-password.component.html b/client/src/app/+admin/users/user-edit/user-password.component.html index 822e4688e..a1e1f6216 100644 --- a/client/src/app/+admin/users/user-edit/user-password.component.html +++ b/client/src/app/+admin/users/user-edit/user-password.component.html @@ -1,19 +1,15 @@
-
-
-
- -
-
- +
- +
diff --git a/client/src/app/+admin/users/user-edit/user-password.component.scss b/client/src/app/+admin/users/user-edit/user-password.component.scss index 9185e787c..217d585af 100644 --- a/client/src/app/+admin/users/user-edit/user-password.component.scss +++ b/client/src/app/+admin/users/user-edit/user-password.component.scss @@ -3,6 +3,7 @@ input:not([type=submit]):not([type=checkbox]) { @include peertube-input-text(340px); + display: block; border-top-right-radius: 0; border-bottom-right-radius: 0; diff --git a/client/src/app/+admin/users/user-edit/user-password.component.ts b/client/src/app/+admin/users/user-edit/user-password.component.ts index 30cd21ccd..5b3040440 100644 --- a/client/src/app/+admin/users/user-edit/user-password.component.ts +++ b/client/src/app/+admin/users/user-edit/user-password.component.ts @@ -1,14 +1,11 @@ -import { Component, OnDestroy, OnInit, Input } from '@angular/core' +import { Component, Input, OnInit } from '@angular/core' import { ActivatedRoute, Router } from '@angular/router' -import * as generator from 'generate-password-browser' -import { NotificationsService } from 'angular2-notifications' import { UserService } from '@app/shared/users/user.service' -import { ServerService } from '../../../core' +import { Notifier } from '../../../core' import { User, UserUpdate } from '../../../../../../shared' import { I18n } from '@ngx-translate/i18n-polyfill' import { FormValidatorService } from '@app/shared/forms/form-validators/form-validator.service' import { UserValidatorsService } from '@app/shared/forms/form-validators/user-validators.service' -import { ConfigService } from '@app/+admin/config/shared/config.service' import { FormReactive } from '../../../shared' @Component({ @@ -16,7 +13,7 @@ import { FormReactive } from '../../../shared' templateUrl: './user-password.component.html', styleUrls: [ './user-password.component.scss' ] }) -export class UserPasswordComponent extends FormReactive implements OnInit, OnDestroy { +export class UserPasswordComponent extends FormReactive implements OnInit { error: string username: string showPassword = false @@ -25,12 +22,10 @@ export class UserPasswordComponent extends FormReactive implements OnInit, OnDes constructor ( protected formValidatorService: FormValidatorService, - protected serverService: ServerService, - protected configService: ConfigService, private userValidatorsService: UserValidatorsService, private route: ActivatedRoute, private router: Router, - private notificationsService: NotificationsService, + private notifier: Notifier, private userService: UserService, private i18n: I18n ) { @@ -43,10 +38,6 @@ export class UserPasswordComponent extends FormReactive implements OnInit, OnDes }) } - ngOnDestroy () { - // - } - formValidated () { this.error = undefined @@ -54,8 +45,7 @@ export class UserPasswordComponent extends FormReactive implements OnInit, OnDes this.userService.updateUser(this.userId, userUpdate).subscribe( () => { - this.notificationsService.success( - this.i18n('Success'), + this.notifier.success( this.i18n('Password changed for user {{username}}.', { username: this.username }) ) }, @@ -64,16 +54,6 @@ export class UserPasswordComponent extends FormReactive implements OnInit, OnDes ) } - generatePassword () { - this.form.patchValue({ - password: generator.generate({ - length: 16, - excludeSimilarCharacters: true, - strict: true - }) - }) - } - togglePasswordVisibility () { this.showPassword = !this.showPassword } @@ -81,9 +61,4 @@ export class UserPasswordComponent extends FormReactive implements OnInit, OnDes getFormButtonTitle () { return this.i18n('Update user password') } - - private onUserFetched (userJson: User) { - this.userId = userJson.id - this.username = userJson.username - } } diff --git a/client/src/app/+admin/users/user-edit/user-update.component.ts b/client/src/app/+admin/users/user-edit/user-update.component.ts index 4e4002a73..94ef87b08 100644 --- a/client/src/app/+admin/users/user-edit/user-update.component.ts +++ b/client/src/app/+admin/users/user-edit/user-update.component.ts @@ -1,4 +1,4 @@ -import { Component, OnDestroy, OnInit, Input } from '@angular/core' +import { Component, OnDestroy, OnInit } from '@angular/core' import { ActivatedRoute, Router } from '@angular/router' import { Subscription } from 'rxjs' import { Notifier } from '@app/core' @@ -93,8 +93,7 @@ export class UserUpdateComponent extends UserEdit implements OnInit, OnDestroy { resetPassword () { this.userService.askResetPassword(this.userEmail).subscribe( () => { - this.notificationsService.success( - this.i18n('Success'), + this.notifier.success( this.i18n('An email asking for password reset has been sent to {{username}}.', { username: this.username }) ) }, -- cgit v1.2.3