feat: sign in setting refactor (#472)

* fix(auth): refactor setting names into domain core value objects

* fix(auth): refactor specs with setting name value objects

* feat(auth): move mute sign in emails to a subscription kind of setting

* feat(auth): add migration script to change sign in email settings to subscription settings

* chore: fix setting name usage

* fix(auth): upper casing setting names

---------

Co-authored-by: Karol Sójko <[email protected]>
This commit is contained in:
Karol Sójko
2023-03-08 10:22:27 +01:00
committed by GitHub
co-authored by Karol Sójko
parent ec0fb7e0b9
commit 27cf093f85
67 changed files with 1450 additions and 809 deletions
@@ -1,3 +0,0 @@
import { SettingName } from './SettingName'
export type SensitiveSettingName = SettingName.MfaSecret | SettingName.ExtensionKey
@@ -1,18 +1,63 @@
export enum SettingName {
MfaSecret = 'MFA_SECRET',
ExtensionKey = 'EXTENSION_KEY',
EmailBackupFrequency = 'EMAIL_BACKUP_FREQUENCY',
DropboxBackupFrequency = 'DROPBOX_BACKUP_FREQUENCY',
DropboxBackupToken = 'DROPBOX_BACKUP_TOKEN',
OneDriveBackupFrequency = 'ONE_DRIVE_BACKUP_FREQUENCY',
OneDriveBackupToken = 'ONE_DRIVE_BACKUP_TOKEN',
GoogleDriveBackupFrequency = 'GOOGLE_DRIVE_BACKUP_FREQUENCY',
GoogleDriveBackupToken = 'GOOGLE_DRIVE_BACKUP_TOKEN',
MuteFailedBackupsEmails = 'MUTE_FAILED_BACKUPS_EMAILS',
MuteFailedCloudBackupsEmails = 'MUTE_FAILED_CLOUD_BACKUPS_EMAILS',
MuteSignInEmails = 'MUTE_SIGN_IN_EMAILS',
MuteMarketingEmails = 'MUTE_MARKETING_EMAILS',
ListedAuthorSecrets = 'LISTED_AUTHOR_SECRETS',
LogSessionUserAgent = 'LOG_SESSION_USER_AGENT',
RecoveryCodes = 'RECOVERY_CODES',
import { Result, ValueObject } from '@standardnotes/domain-core'
import { SettingNameProps } from './SettingNameProps'
export class SettingName extends ValueObject<SettingNameProps> {
static readonly NAMES = {
MfaSecret: 'MFA_SECRET',
ExtensionKey: 'EXTENSION_KEY',
EmailBackupFrequency: 'EMAIL_BACKUP_FREQUENCY',
DropboxBackupFrequency: 'DROPBOX_BACKUP_FREQUENCY',
DropboxBackupToken: 'DROPBOX_BACKUP_TOKEN',
OneDriveBackupFrequency: 'ONE_DRIVE_BACKUP_FREQUENCY',
OneDriveBackupToken: 'ONE_DRIVE_BACKUP_TOKEN',
GoogleDriveBackupFrequency: 'GOOGLE_DRIVE_BACKUP_FREQUENCY',
GoogleDriveBackupToken: 'GOOGLE_DRIVE_BACKUP_TOKEN',
MuteFailedBackupsEmails: 'MUTE_FAILED_BACKUPS_EMAILS',
MuteFailedCloudBackupsEmails: 'MUTE_FAILED_CLOUD_BACKUPS_EMAILS',
MuteSignInEmails: 'MUTE_SIGN_IN_EMAILS',
MuteMarketingEmails: 'MUTE_MARKETING_EMAILS',
ListedAuthorSecrets: 'LISTED_AUTHOR_SECRETS',
LogSessionUserAgent: 'LOG_SESSION_USER_AGENT',
RecoveryCodes: 'RECOVERY_CODES',
FileUploadBytesLimit: 'FILE_UPLOAD_BYTES_LIMIT',
FileUploadBytesUsed: 'FILE_UPLOAD_BYTES_USED',
}
get value(): string {
return this.props.value
}
isSensitive(): boolean {
return [SettingName.NAMES.MfaSecret, SettingName.NAMES.ExtensionKey].includes(this.props.value)
}
isASubscriptionSetting(): boolean {
return [
SettingName.NAMES.FileUploadBytesLimit,
SettingName.NAMES.FileUploadBytesUsed,
SettingName.NAMES.MuteSignInEmails,
].includes(this.props.value)
}
isARegularOnlySubscriptionSetting(): boolean {
return [SettingName.NAMES.FileUploadBytesLimit, SettingName.NAMES.FileUploadBytesUsed].includes(this.props.value)
}
isASharedAndRegularOnlySubscriptionSetting(): boolean {
return [SettingName.NAMES.MuteSignInEmails].includes(this.props.value)
}
private constructor(props: SettingNameProps) {
super(props)
}
static create(name: string): Result<SettingName> {
const isValidName = Object.values(this.NAMES).includes(name)
if (!isValidName) {
return Result.fail<SettingName>(`Invalid setting name: ${name}`)
} else {
return Result.ok<SettingName>(new SettingName({ value: name }))
}
}
}
@@ -0,0 +1,3 @@
export interface SettingNameProps {
value: string
}
@@ -1,4 +0,0 @@
export enum SubscriptionSettingName {
FileUploadBytesLimit = 'FILE_UPLOAD_BYTES_LIMIT',
FileUploadBytesUsed = 'FILE_UPLOAD_BYTES_USED',
}
+1 -2
View File
@@ -9,6 +9,5 @@ export * from './MuteFailedCloudBackupsEmails/MuteFailedCloudBackupsEmailsOption
export * from './MuteMarketingEmails/MuteMarketingEmailsOption'
export * from './MuteSignInEmails/MuteSignInEmailsOption'
export * from './OneDriveBackupFrequency/OneDriveBackupFrequency'
export * from './Setting/SensitiveSettingName'
export * from './Setting/SettingName'
export * from './Setting/SubscriptionSettingName'
export * from './Setting/SettingNameProps'