diff options
| author | GrapeApple0 <84321396+GrapeApple0@users.noreply.github.com> | 2023-12-23 12:06:22 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-12-23 12:06:22 +0900 |
| commit | 5b5a537f567a7a2cbce008ac19aaaea372dd4695 (patch) | |
| tree | f48848f934c586a65c7b222eaeb258b978beca89 /packages/backend/src/core | |
| parent | fix: email verify enable logic (#12743) (diff) | |
| download | sharkey-5b5a537f567a7a2cbce008ac19aaaea372dd4695.tar.gz sharkey-5b5a537f567a7a2cbce008ac19aaaea372dd4695.tar.bz2 sharkey-5b5a537f567a7a2cbce008ac19aaaea372dd4695.zip | |
feat: 登録を拒否するメールアドレスのドメインを手動で設定できるように (#12740)
* feat: 使い捨てアドレスのドメインを手動で設定できるように
* Update CHANGELOG.md
* disposableEmailDomains -> bannedEmailDomains
* isBlockedHostを使うように
Diffstat (limited to 'packages/backend/src/core')
| -rw-r--r-- | packages/backend/src/core/EmailService.ts | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/packages/backend/src/core/EmailService.ts b/packages/backend/src/core/EmailService.ts index d4508d5313..6107b9601c 100644 --- a/packages/backend/src/core/EmailService.ts +++ b/packages/backend/src/core/EmailService.ts @@ -9,6 +9,7 @@ import { Inject, Injectable } from '@nestjs/common'; import { validate as validateEmail } from 'deep-email-validator'; import { SubOutputFormat } from 'deep-email-validator/dist/output/output.js'; import { MetaService } from '@/core/MetaService.js'; +import { UtilityService } from '@/core/UtilityService.js'; import { DI } from '@/di-symbols.js'; import type { Config } from '@/config.js'; import type Logger from '@/logger.js'; @@ -30,6 +31,7 @@ export class EmailService { private metaService: MetaService, private loggerService: LoggerService, + private utilityService: UtilityService, private httpRequestService: HttpRequestService, ) { this.logger = this.loggerService.getLogger('email'); @@ -155,7 +157,7 @@ export class EmailService { @bindThis public async validateEmailForAccount(emailAddress: string): Promise<{ available: boolean; - reason: null | 'used' | 'format' | 'disposable' | 'mx' | 'smtp'; + reason: null | 'used' | 'format' | 'disposable' | 'mx' | 'smtp' | 'banned'; }> { const meta = await this.metaService.fetch(); @@ -184,12 +186,16 @@ export class EmailService { validated = { valid: true, reason: null }; } - const available = exist === 0 && validated.valid; + const emailDomain: string = emailAddress.split('@')[1]; + const isBanned = this.utilityService.isBlockedHost(meta.bannedEmailDomains, emailDomain); + + const available = exist === 0 && validated.valid && !isBanned; return { available, reason: available ? null : exist !== 0 ? 'used' : + isBanned ? 'banned' : validated.reason === 'regex' ? 'format' : validated.reason === 'disposable' ? 'disposable' : validated.reason === 'mx' ? 'mx' : |