aboutsummaryrefslogtreecommitdiffhomepage
path: root/server/models
diff options
context:
space:
mode:
authorChocobozzz <me@florianbigard.com>2018-02-01 11:08:10 +0100
committerChocobozzz <me@florianbigard.com>2018-02-01 11:08:29 +0100
commitba75d268596bc7b289bacf1cc4cb53493d6ad444 (patch)
treef631ed9a871ce078cd94afb0b4fcfc1e356944ec /server/models
parent09c93c2031ce4d7dee15f247b194f21346c7e615 (diff)
downloadPeerTube-ba75d268596bc7b289bacf1cc4cb53493d6ad444.tar.gz
PeerTube-ba75d268596bc7b289bacf1cc4cb53493d6ad444.tar.zst
PeerTube-ba75d268596bc7b289bacf1cc4cb53493d6ad444.zip
Send an email on video abuse report
Diffstat (limited to 'server/models')
-rw-r--r--server/models/account/user.ts23
-rw-r--r--server/models/video/video-abuse.ts8
2 files changed, 29 insertions, 2 deletions
diff --git a/server/models/account/user.ts b/server/models/account/user.ts
index 026a8c9a0..653921907 100644
--- a/server/models/account/user.ts
+++ b/server/models/account/user.ts
@@ -4,7 +4,7 @@ import {
4 Scopes, Table, UpdatedAt 4 Scopes, Table, UpdatedAt
5} from 'sequelize-typescript' 5} from 'sequelize-typescript'
6import { hasUserRight, USER_ROLE_LABELS, UserRight } from '../../../shared' 6import { hasUserRight, USER_ROLE_LABELS, UserRight } from '../../../shared'
7import { User } from '../../../shared/models/users' 7import { User, UserRole } from '../../../shared/models/users'
8import { 8import {
9 isUserAutoPlayVideoValid, isUserDisplayNSFWValid, isUserPasswordValid, isUserRoleValid, isUserUsernameValid, 9 isUserAutoPlayVideoValid, isUserDisplayNSFWValid, isUserPasswordValid, isUserRoleValid, isUserUsernameValid,
10 isUserVideoQuotaValid 10 isUserVideoQuotaValid
@@ -137,6 +137,27 @@ export class UserModel extends Model<UserModel> {
137 }) 137 })
138 } 138 }
139 139
140 static listEmailsWithRight (right: UserRight) {
141 const roles = Object.keys(USER_ROLE_LABELS)
142 .map(k => parseInt(k, 10) as UserRole)
143 .filter(role => hasUserRight(role, right))
144
145 console.log(roles)
146
147 const query = {
148 attribute: [ 'email' ],
149 where: {
150 role: {
151 [Sequelize.Op.in]: roles
152 }
153 }
154 }
155
156 return UserModel.unscoped()
157 .findAll(query)
158 .then(u => u.map(u => u.email))
159 }
160
140 static loadById (id: number) { 161 static loadById (id: number) {
141 return UserModel.findById(id) 162 return UserModel.findById(id)
142 } 163 }
diff --git a/server/models/video/video-abuse.ts b/server/models/video/video-abuse.ts
index 182971c4e..cc7078ae7 100644
--- a/server/models/video/video-abuse.ts
+++ b/server/models/video/video-abuse.ts
@@ -1,7 +1,8 @@
1import { AllowNull, BelongsTo, Column, CreatedAt, ForeignKey, Is, Model, Table, UpdatedAt } from 'sequelize-typescript' 1import { AfterCreate, AllowNull, BelongsTo, Column, CreatedAt, ForeignKey, Is, Model, Table, UpdatedAt } from 'sequelize-typescript'
2import { VideoAbuseObject } from '../../../shared/models/activitypub/objects' 2import { VideoAbuseObject } from '../../../shared/models/activitypub/objects'
3import { isVideoAbuseReasonValid } from '../../helpers/custom-validators/videos' 3import { isVideoAbuseReasonValid } from '../../helpers/custom-validators/videos'
4import { CONFIG } from '../../initializers' 4import { CONFIG } from '../../initializers'
5import { Emailer } from '../../lib/emailer'
5import { AccountModel } from '../account/account' 6import { AccountModel } from '../account/account'
6import { getSort, throwIfNotValid } from '../utils' 7import { getSort, throwIfNotValid } from '../utils'
7import { VideoModel } from './video' 8import { VideoModel } from './video'
@@ -54,6 +55,11 @@ export class VideoAbuseModel extends Model<VideoAbuseModel> {
54 }) 55 })
55 Video: VideoModel 56 Video: VideoModel
56 57
58 @AfterCreate
59 static sendEmailNotification (instance: VideoAbuseModel) {
60 return Emailer.Instance.addVideoAbuseReport(instance.videoId)
61 }
62
57 static listForApi (start: number, count: number, sort: string) { 63 static listForApi (start: number, count: number, sort: string) {
58 const query = { 64 const query = {
59 offset: start, 65 offset: start,