diff options
Diffstat (limited to 'server/models/account/user.ts')
-rw-r--r-- | server/models/account/user.ts | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/server/models/account/user.ts b/server/models/account/user.ts index 38585c016..b66458351 100644 --- a/server/models/account/user.ts +++ b/server/models/account/user.ts | |||
@@ -22,6 +22,7 @@ import { | |||
22 | import { hasUserRight, USER_ROLE_LABELS, UserRight } from '../../../shared' | 22 | import { hasUserRight, USER_ROLE_LABELS, UserRight } from '../../../shared' |
23 | import { User, UserRole } from '../../../shared/models/users' | 23 | import { User, UserRole } from '../../../shared/models/users' |
24 | import { | 24 | import { |
25 | isUserAdminFlagsValid, | ||
25 | isUserAutoPlayVideoValid, | 26 | isUserAutoPlayVideoValid, |
26 | isUserBlockedReasonValid, | 27 | isUserBlockedReasonValid, |
27 | isUserBlockedValid, | 28 | isUserBlockedValid, |
@@ -49,6 +50,7 @@ import { VideoModel } from '../video/video' | |||
49 | import { ActorModel } from '../activitypub/actor' | 50 | import { ActorModel } from '../activitypub/actor' |
50 | import { ActorFollowModel } from '../activitypub/actor-follow' | 51 | import { ActorFollowModel } from '../activitypub/actor-follow' |
51 | import { VideoImportModel } from '../video/video-import' | 52 | import { VideoImportModel } from '../video/video-import' |
53 | import { UserAdminFlag } from '../../../shared/models/users/user-flag.model' | ||
52 | 54 | ||
53 | enum ScopeNames { | 55 | enum ScopeNames { |
54 | WITH_VIDEO_CHANNEL = 'WITH_VIDEO_CHANNEL' | 56 | WITH_VIDEO_CHANNEL = 'WITH_VIDEO_CHANNEL' |
@@ -141,6 +143,12 @@ export class UserModel extends Model<UserModel> { | |||
141 | autoPlayVideo: boolean | 143 | autoPlayVideo: boolean |
142 | 144 | ||
143 | @AllowNull(false) | 145 | @AllowNull(false) |
146 | @Default(UserAdminFlag.NONE) | ||
147 | @Is('UserAdminFlags', value => throwIfNotValid(value, isUserAdminFlagsValid, 'user admin flags')) | ||
148 | @Column | ||
149 | adminFlags?: UserAdminFlag | ||
150 | |||
151 | @AllowNull(false) | ||
144 | @Default(false) | 152 | @Default(false) |
145 | @Is('UserBlocked', value => throwIfNotValid(value, isUserBlockedValid, 'blocked boolean')) | 153 | @Is('UserBlocked', value => throwIfNotValid(value, isUserBlockedValid, 'blocked boolean')) |
146 | @Column | 154 | @Column |
@@ -516,11 +524,15 @@ export class UserModel extends Model<UserModel> { | |||
516 | return hasUserRight(this.role, right) | 524 | return hasUserRight(this.role, right) |
517 | } | 525 | } |
518 | 526 | ||
527 | hasAdminFlag (flag: UserAdminFlag) { | ||
528 | return this.adminFlags & flag | ||
529 | } | ||
530 | |||
519 | isPasswordMatch (password: string) { | 531 | isPasswordMatch (password: string) { |
520 | return comparePassword(password, this.password) | 532 | return comparePassword(password, this.password) |
521 | } | 533 | } |
522 | 534 | ||
523 | toFormattedJSON (): User { | 535 | toFormattedJSON (parameters: { withAdminFlags?: boolean } = {}): User { |
524 | const videoQuotaUsed = this.get('videoQuotaUsed') | 536 | const videoQuotaUsed = this.get('videoQuotaUsed') |
525 | const videoQuotaUsedDaily = this.get('videoQuotaUsedDaily') | 537 | const videoQuotaUsedDaily = this.get('videoQuotaUsedDaily') |
526 | 538 | ||
@@ -551,6 +563,10 @@ export class UserModel extends Model<UserModel> { | |||
551 | : undefined | 563 | : undefined |
552 | } | 564 | } |
553 | 565 | ||
566 | if (parameters.withAdminFlags) { | ||
567 | Object.assign(json, { adminFlags: this.adminFlags }) | ||
568 | } | ||
569 | |||
554 | if (Array.isArray(this.Account.VideoChannels) === true) { | 570 | if (Array.isArray(this.Account.VideoChannels) === true) { |
555 | json.videoChannels = this.Account.VideoChannels | 571 | json.videoChannels = this.Account.VideoChannels |
556 | .map(c => c.toFormattedJSON()) | 572 | .map(c => c.toFormattedJSON()) |