import { Account } from '@app/shared/shared-main/account/account.model'
+import { hasUserRight } from '@shared/core-utils/users'
import {
- Avatar,
- hasUserRight,
+ ActorImage,
+ HTMLServerConfig,
NSFWPolicyType,
User as UserServerModel,
UserAdminFlag,
} from '@shared/models'
export class User implements UserServerModel {
- static KEYS = {
- ID: 'id',
- ROLE: 'role',
- EMAIL: 'email',
- VIDEOS_HISTORY_ENABLED: 'videos-history-enabled',
- USERNAME: 'username',
- NSFW_POLICY: 'nsfw_policy',
- WEBTORRENT_ENABLED: 'peertube-videojs-' + 'webtorrent_enabled',
- AUTO_PLAY_VIDEO: 'auto_play_video',
- SESSION_STORAGE_AUTO_PLAY_NEXT_VIDEO: 'auto_play_next_video',
- AUTO_PLAY_VIDEO_PLAYLIST: 'auto_play_video_playlist',
- THEME: 'last_active_theme',
- VIDEO_LANGUAGES: 'video_languages'
- }
-
id: number
username: string
email: string
autoPlayVideo: boolean
autoPlayNextVideo: boolean
autoPlayNextVideoPlaylist: boolean
- webTorrentEnabled: boolean
+
+ p2pEnabled: boolean
+ // FIXME: deprecated in 4.1
+ webTorrentEnabled: never
+
videosHistoryEnabled: boolean
videoLanguages: string[]
noInstanceConfigWarningModal: boolean
noWelcomeModal: boolean
+ noAccountSetupWarningModal: boolean
pluginAuth: string | null
lastLoginDate: Date | null
+ twoFactorEnabled: boolean
+
createdAt: Date
constructor (hash: Partial<UserServerModel>) {
this.videoCommentsCount = hash.videoCommentsCount
this.nsfwPolicy = hash.nsfwPolicy
- this.webTorrentEnabled = hash.webTorrentEnabled
+ this.p2pEnabled = hash.p2pEnabled
this.autoPlayVideo = hash.autoPlayVideo
this.autoPlayNextVideo = hash.autoPlayNextVideo
this.autoPlayNextVideoPlaylist = hash.autoPlayNextVideoPlaylist
this.noInstanceConfigWarningModal = hash.noInstanceConfigWarningModal
this.noWelcomeModal = hash.noWelcomeModal
+ this.noAccountSetupWarningModal = hash.noAccountSetupWarningModal
this.notificationSettings = hash.notificationSettings
+ this.twoFactorEnabled = hash.twoFactorEnabled
+
this.createdAt = hash.createdAt
this.pluginAuth = hash.pluginAuth
}
}
- get accountAvatarUrl () {
- if (!this.account) return ''
-
- return this.account.avatarUrl
- }
-
hasRight (right: UserRight) {
return hasUserRight(this.role, right)
}
}
}
- updateAccountAvatar (newAccountAvatar: Avatar) {
- this.account.updateAvatar(newAccountAvatar)
+ updateAccountAvatar (newAccountAvatars?: ActorImage[]) {
+ if (newAccountAvatars) this.account.updateAvatar(newAccountAvatars)
+ else this.account.resetAvatar()
+ }
+
+ isUploadDisabled () {
+ return this.videoQuota === 0 || this.videoQuotaDaily === 0
+ }
+
+ isAutoBlocked (serverConfig: HTMLServerConfig) {
+ if (serverConfig.autoBlacklist.videos.ofUsers.enabled !== true) return false
+
+ return this.role === UserRole.USER && this.adminFlags !== UserAdminFlag.BYPASS_VIDEO_AUTO_BLACKLIST
}
}