X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=client%2Fsrc%2Fapp%2F%2Badmin%2Fusers%2Fuser-edit%2Fuser-create.component.ts;h=da333240cf050265326bf41a668576358f2a63dc;hb=3b6195f7993f1662e94994a2ea64390f5cecac62;hp=b91ffa1151ce8438b9a6844f00999e2dc33aed93;hpb=b1d40cff89f7cff565a98cdbcea9a624196a169a;p=github%2FChocobozzz%2FPeerTube.git diff --git a/client/src/app/+admin/users/user-edit/user-create.component.ts b/client/src/app/+admin/users/user-edit/user-create.component.ts index b91ffa115..da333240c 100644 --- a/client/src/app/+admin/users/user-edit/user-create.component.ts +++ b/client/src/app/+admin/users/user-edit/user-create.component.ts @@ -1,13 +1,20 @@ import { Component, OnInit } from '@angular/core' -import { FormBuilder, FormGroup } from '@angular/forms' -import { Router } from '@angular/router' -import { NotificationsService } from 'angular2-notifications' -import { UserService } from '../shared' -import { USER_EMAIL, USER_PASSWORD, USER_ROLE, USER_USERNAME, USER_VIDEO_QUOTA } from '../../../shared' -import { ServerService } from '../../../core' -import { UserCreate, UserRole } from '../../../../../../shared' +import { ActivatedRoute, Router } from '@angular/router' +import { ConfigService } from '@app/+admin/config/shared/config.service' +import { AuthService, Notifier, ScreenService, ServerService, UserService } from '@app/core' +import { + USER_CHANNEL_NAME_VALIDATOR, + USER_EMAIL_VALIDATOR, + USER_PASSWORD_OPTIONAL_VALIDATOR, + USER_PASSWORD_VALIDATOR, + USER_ROLE_VALIDATOR, + USER_USERNAME_VALIDATOR, + USER_VIDEO_QUOTA_DAILY_VALIDATOR, + USER_VIDEO_QUOTA_VALIDATOR +} from '@app/shared/form-validators/user-validators' +import { FormValidatorService } from '@app/shared/shared-forms' +import { UserCreate, UserRole } from '@shared/models' import { UserEdit } from './user-edit' -import { I18n } from '@ngx-translate/i18n-polyfill' @Component({ selector: 'my-user-create', @@ -17,47 +24,41 @@ import { I18n } from '@ngx-translate/i18n-polyfill' export class UserCreateComponent extends UserEdit implements OnInit { error: string - form: FormGroup - formErrors = { - 'username': '', - 'email': '', - 'password': '', - 'role': '', - 'videoQuota': '' - } - validationMessages = { - 'username': USER_USERNAME.MESSAGES, - 'email': USER_EMAIL.MESSAGES, - 'password': USER_PASSWORD.MESSAGES, - 'role': USER_ROLE.MESSAGES, - 'videoQuota': USER_VIDEO_QUOTA.MESSAGES - } - constructor ( protected serverService: ServerService, - private formBuilder: FormBuilder, + protected formValidatorService: FormValidatorService, + protected configService: ConfigService, + protected screenService: ScreenService, + protected auth: AuthService, + private route: ActivatedRoute, private router: Router, - private notificationsService: NotificationsService, - private userService: UserService, - private i18n: I18n - ) { + private notifier: Notifier, + private userService: UserService + ) { super() - } - - buildForm () { - this.form = this.formBuilder.group({ - username: [ '', USER_USERNAME.VALIDATORS ], - email: [ '', USER_EMAIL.VALIDATORS ], - password: [ '', USER_PASSWORD.VALIDATORS ], - role: [ UserRole.USER, USER_ROLE.VALIDATORS ], - videoQuota: [ '-1', USER_VIDEO_QUOTA.VALIDATORS ] - }) - this.form.valueChanges.subscribe(data => this.onValueChanged(data)) + this.buildQuotaOptions() } ngOnInit () { - this.buildForm() + super.ngOnInit() + + const defaultValues = { + role: UserRole.USER.toString(), + videoQuota: -1, + videoQuotaDaily: -1 + } + + this.buildForm({ + username: USER_USERNAME_VALIDATOR, + channelName: USER_CHANNEL_NAME_VALIDATOR, + email: USER_EMAIL_VALIDATOR, + password: this.isPasswordOptional() ? USER_PASSWORD_OPTIONAL_VALIDATOR : USER_PASSWORD_VALIDATOR, + role: USER_ROLE_VALIDATOR, + videoQuota: USER_VIDEO_QUOTA_VALIDATOR, + videoQuotaDaily: USER_VIDEO_QUOTA_DAILY_VALIDATOR, + byPassAutoBlock: null + }, defaultValues) } formValidated () { @@ -65,15 +66,15 @@ export class UserCreateComponent extends UserEdit implements OnInit { const userCreate: UserCreate = this.form.value + userCreate.adminFlags = this.buildAdminFlags(this.form.value) + // A select in HTML is always mapped as a string, we convert it to number userCreate.videoQuota = parseInt(this.form.value['videoQuota'], 10) + userCreate.videoQuotaDaily = parseInt(this.form.value['videoQuotaDaily'], 10) this.userService.addUser(userCreate).subscribe( () => { - this.notificationsService.success( - this.i18n('Success'), - this.i18n('User {{ username }} created.', { username: userCreate.username }) - ) + this.notifier.success($localize`User ${userCreate.username} created.`) this.router.navigate([ '/admin/users/list' ]) }, @@ -85,7 +86,12 @@ export class UserCreateComponent extends UserEdit implements OnInit { return true } + isPasswordOptional () { + const serverConfig = this.route.snapshot.data.serverConfig + return serverConfig.email.enabled + } + getFormButtonTitle () { - return this.i18n('Create user') + return $localize`Create user` } }