Always be able to set email as verified

Useful for instance that do not require email verification but still
want to enable the "email in podcast feed" feature
This commit is contained in:
Chocobozzz 2024-03-08 14:02:14 +01:00
parent 3a53d44246
commit b080ccc3ee
No known key found for this signature in database
GPG Key ID: 583A612D890159BE
2 changed files with 20 additions and 27 deletions

View File

@ -1,33 +1,33 @@
import { SortMeta, SharedModule } from 'primeng/api' import { DatePipe, NgClass, NgIf } from '@angular/common'
import { Component, OnInit, ViewChild } from '@angular/core' import { Component, OnInit, ViewChild } from '@angular/core'
import { FormsModule } from '@angular/forms'
import { ActivatedRoute, Router, RouterLink } from '@angular/router' import { ActivatedRoute, Router, RouterLink } from '@angular/router'
import { AuthService, ConfirmService, LocalStorageService, Notifier, RestPagination, RestTable, ServerService } from '@app/core' import { AuthService, ConfirmService, LocalStorageService, Notifier, RestPagination, RestTable } from '@app/core'
import { formatICU, getAPIHost } from '@app/helpers' import { formatICU, getAPIHost } from '@app/helpers'
import { Actor } from '@app/shared/shared-main/account/actor.model'
import { BlocklistService } from '@app/shared/shared-moderation/blocklist.service'
import { UserBanModalComponent } from '@app/shared/shared-moderation/user-ban-modal.component'
import { UserAdminService } from '@app/shared/shared-users/user-admin.service'
import { NgbDropdown, NgbDropdownItem, NgbDropdownMenu, NgbDropdownToggle, NgbTooltip } from '@ng-bootstrap/ng-bootstrap'
import { User, UserRole, UserRoleType } from '@peertube/peertube-models' import { User, UserRole, UserRoleType } from '@peertube/peertube-models'
import { logger } from '@root-helpers/logger' import { logger } from '@root-helpers/logger'
import { BytesPipe } from '../../../../shared/shared-main/angular/bytes.pipe' import { SharedModule, SortMeta } from 'primeng/api'
import { AutoColspanDirective } from '../../../../shared/shared-main/angular/auto-colspan.directive' import { TableModule } from 'primeng/table'
import { UserEmailInfoComponent } from '../../../shared/user-email-info.component'
import { ActorAvatarComponent } from '../../../../shared/shared-actor-image/actor-avatar.component' import { ActorAvatarComponent } from '../../../../shared/shared-actor-image/actor-avatar.component'
import { AdvancedInputFilter, AdvancedInputFilterComponent } from '../../../../shared/shared-forms/advanced-input-filter.component'
import { PeertubeCheckboxComponent } from '../../../../shared/shared-forms/peertube-checkbox.component'
import { SelectCheckboxComponent } from '../../../../shared/shared-forms/select/select-checkbox.component'
import { GlobalIconComponent } from '../../../../shared/shared-icons/global-icon.component'
import { AutoColspanDirective } from '../../../../shared/shared-main/angular/auto-colspan.directive'
import { BytesPipe } from '../../../../shared/shared-main/angular/bytes.pipe'
import { ActionDropdownComponent, DropdownAction } from '../../../../shared/shared-main/buttons/action-dropdown.component'
import { import {
AccountMutedStatus, AccountMutedStatus,
UserModerationDisplayType, UserModerationDisplayType,
UserModerationDropdownComponent UserModerationDropdownComponent
} from '../../../../shared/shared-moderation/user-moderation-dropdown.component' } from '../../../../shared/shared-moderation/user-moderation-dropdown.component'
import { TableExpanderIconComponent } from '../../../../shared/shared-tables/table-expander-icon.component' import { TableExpanderIconComponent } from '../../../../shared/shared-tables/table-expander-icon.component'
import { PeertubeCheckboxComponent } from '../../../../shared/shared-forms/peertube-checkbox.component' import { UserEmailInfoComponent } from '../../../shared/user-email-info.component'
import { FormsModule } from '@angular/forms'
import { SelectCheckboxComponent } from '../../../../shared/shared-forms/select/select-checkbox.component'
import { NgbDropdown, NgbDropdownToggle, NgbDropdownMenu, NgbDropdownItem, NgbTooltip } from '@ng-bootstrap/ng-bootstrap'
import { AdvancedInputFilter, AdvancedInputFilterComponent } from '../../../../shared/shared-forms/advanced-input-filter.component'
import { ActionDropdownComponent, DropdownAction } from '../../../../shared/shared-main/buttons/action-dropdown.component'
import { NgIf, NgClass, DatePipe } from '@angular/common'
import { TableModule } from 'primeng/table'
import { GlobalIconComponent } from '../../../../shared/shared-icons/global-icon.component'
import { Actor } from '@app/shared/shared-main/account/actor.model'
import { BlocklistService } from '@app/shared/shared-moderation/blocklist.service'
import { UserBanModalComponent } from '@app/shared/shared-moderation/user-ban-modal.component'
import { UserAdminService } from '@app/shared/shared-users/user-admin.service'
type UserForList = User & { type UserForList = User & {
rawVideoQuota: number rawVideoQuota: number
@ -102,8 +102,6 @@ export class UserListComponent extends RestTable <User> implements OnInit {
myAccount: false myAccount: false
} }
requiresEmailVerification = false
private _selectedColumns: string[] = [] private _selectedColumns: string[] = []
constructor ( constructor (
@ -111,7 +109,6 @@ export class UserListComponent extends RestTable <User> implements OnInit {
protected router: Router, protected router: Router,
private notifier: Notifier, private notifier: Notifier,
private confirmService: ConfirmService, private confirmService: ConfirmService,
private serverService: ServerService,
private auth: AuthService, private auth: AuthService,
private blocklist: BlocklistService, private blocklist: BlocklistService,
private userAdminService: UserAdminService, private userAdminService: UserAdminService,
@ -135,9 +132,6 @@ export class UserListComponent extends RestTable <User> implements OnInit {
} }
ngOnInit () { ngOnInit () {
this.serverService.getConfig()
.subscribe(config => this.requiresEmailVerification = config.signup.requiresEmailVerification)
this.initialize() this.initialize()
this.bulkActions = [ this.bulkActions = [
@ -165,8 +159,7 @@ export class UserListComponent extends RestTable <User> implements OnInit {
label: $localize`Set Email as Verified`, label: $localize`Set Email as Verified`,
handler: users => this.setEmailsAsVerified(users), handler: users => this.setEmailsAsVerified(users),
isDisplayed: users => { isDisplayed: users => {
return this.requiresEmailVerification && return users.every(u => this.authUser.canManage(u) && !u.blocked && u.emailVerified !== true)
users.every(u => this.authUser.canManage(u) && !u.blocked && u.emailVerified === false)
} }
} }
] ]

View File

@ -366,7 +366,7 @@ export class UserModerationDropdownComponent implements OnInit, OnChanges {
{ {
label: $localize`Set Email as Verified`, label: $localize`Set Email as Verified`,
handler: ({ user }) => this.setEmailAsVerified(user), handler: ({ user }) => this.setEmailAsVerified(user),
isDisplayed: ({ user }) => this.requiresEmailVerification && !user.blocked && user.emailVerified === false isDisplayed: ({ user }) => !user.blocked && user.emailVerified !== true
} }
]) ])
} }