aboutsummaryrefslogtreecommitdiffhomepage
path: root/server
diff options
context:
space:
mode:
Diffstat (limited to 'server')
-rw-r--r--server/controllers/api/abuse.ts7
-rw-r--r--server/controllers/client.ts10
-rw-r--r--server/controllers/plugins.ts2
-rw-r--r--server/helpers/custom-validators/abuses.ts3
-rw-r--r--server/helpers/custom-validators/plugins.ts3
-rw-r--r--server/helpers/custom-validators/video-blacklist.ts3
-rw-r--r--server/lib/activitypub/process/process-flag.ts3
-rw-r--r--server/lib/client-html.ts2
-rw-r--r--server/middlewares/user-right.ts2
-rw-r--r--server/models/abuse/abuse.ts8
-rw-r--r--server/models/account/user.ts45
11 files changed, 48 insertions, 40 deletions
diff --git a/server/controllers/api/abuse.ts b/server/controllers/api/abuse.ts
index 03e6be8c8..b97b99f16 100644
--- a/server/controllers/api/abuse.ts
+++ b/server/controllers/api/abuse.ts
@@ -1,9 +1,12 @@
1import * as express from 'express' 1import * as express from 'express'
2import { logger } from '@server/helpers/logger'
2import { createAccountAbuse, createVideoAbuse, createVideoCommentAbuse } from '@server/lib/moderation' 3import { createAccountAbuse, createVideoAbuse, createVideoCommentAbuse } from '@server/lib/moderation'
4import { Notifier } from '@server/lib/notifier'
3import { AbuseModel } from '@server/models/abuse/abuse' 5import { AbuseModel } from '@server/models/abuse/abuse'
4import { AbuseMessageModel } from '@server/models/abuse/abuse-message' 6import { AbuseMessageModel } from '@server/models/abuse/abuse-message'
5import { getServerActor } from '@server/models/application/application' 7import { getServerActor } from '@server/models/application/application'
6import { AbuseCreate, abusePredefinedReasonsMap, AbuseState, UserRight } from '../../../shared' 8import { abusePredefinedReasonsMap } from '@shared/core-utils/abuse'
9import { AbuseCreate, AbuseState, UserRight } from '../../../shared'
7import { getFormattedObjects } from '../../helpers/utils' 10import { getFormattedObjects } from '../../helpers/utils'
8import { sequelizeTypescript } from '../../initializers/database' 11import { sequelizeTypescript } from '../../initializers/database'
9import { 12import {
@@ -25,8 +28,6 @@ import {
25 setDefaultSort 28 setDefaultSort
26} from '../../middlewares' 29} from '../../middlewares'
27import { AccountModel } from '../../models/account/account' 30import { AccountModel } from '../../models/account/account'
28import { Notifier } from '@server/lib/notifier'
29import { logger } from '@server/helpers/logger'
30 31
31const abuseRouter = express.Router() 32const abuseRouter = express.Router()
32 33
diff --git a/server/controllers/client.ts b/server/controllers/client.ts
index 8c7f881a9..7c80820f4 100644
--- a/server/controllers/client.ts
+++ b/server/controllers/client.ts
@@ -1,13 +1,13 @@
1import { constants, promises as fs } from 'fs'
2import * as express from 'express' 1import * as express from 'express'
2import { constants, promises as fs } from 'fs'
3import { join } from 'path' 3import { join } from 'path'
4import { CONFIG } from '@server/initializers/config'
5import { buildFileLocale, getCompleteLocale, is18nLocale, LOCALE_FILES } from '@shared/core-utils/i18n'
4import { root } from '../helpers/core-utils' 6import { root } from '../helpers/core-utils'
7import { logger } from '../helpers/logger'
5import { ACCEPT_HEADERS, STATIC_MAX_AGE } from '../initializers/constants' 8import { ACCEPT_HEADERS, STATIC_MAX_AGE } from '../initializers/constants'
6import { asyncMiddleware, embedCSP } from '../middlewares'
7import { buildFileLocale, getCompleteLocale, is18nLocale, LOCALE_FILES } from '../../shared/models/i18n/i18n'
8import { ClientHtml } from '../lib/client-html' 9import { ClientHtml } from '../lib/client-html'
9import { logger } from '../helpers/logger' 10import { asyncMiddleware, embedCSP } from '../middlewares'
10import { CONFIG } from '@server/initializers/config'
11 11
12const clientsRouter = express.Router() 12const clientsRouter = express.Router()
13 13
diff --git a/server/controllers/plugins.ts b/server/controllers/plugins.ts
index f88a1632d..7b947bb6e 100644
--- a/server/controllers/plugins.ts
+++ b/server/controllers/plugins.ts
@@ -6,7 +6,7 @@ import { getPluginValidator, pluginStaticDirectoryValidator, getExternalAuthVali
6import { serveThemeCSSValidator } from '../middlewares/validators/themes' 6import { serveThemeCSSValidator } from '../middlewares/validators/themes'
7import { PluginType } from '../../shared/models/plugins/plugin.type' 7import { PluginType } from '../../shared/models/plugins/plugin.type'
8import { isTestInstance } from '../helpers/core-utils' 8import { isTestInstance } from '../helpers/core-utils'
9import { getCompleteLocale, is18nLocale } from '../../shared/models/i18n' 9import { getCompleteLocale, is18nLocale } from '../../shared/core-utils/i18n'
10import { logger } from '@server/helpers/logger' 10import { logger } from '@server/helpers/logger'
11 11
12const sendFileOptions = { 12const sendFileOptions = {
diff --git a/server/helpers/custom-validators/abuses.ts b/server/helpers/custom-validators/abuses.ts
index 0ddde4b06..94719641a 100644
--- a/server/helpers/custom-validators/abuses.ts
+++ b/server/helpers/custom-validators/abuses.ts
@@ -1,5 +1,6 @@
1import validator from 'validator' 1import validator from 'validator'
2import { AbuseFilter, abusePredefinedReasonsMap, AbusePredefinedReasonsString, AbuseVideoIs, AbuseCreate } from '@shared/models' 2import { abusePredefinedReasonsMap } from '@shared/core-utils/abuse'
3import { AbuseCreate, AbuseFilter, AbusePredefinedReasonsString, AbuseVideoIs } from '@shared/models'
3import { ABUSE_STATES, CONSTRAINTS_FIELDS } from '../../initializers/constants' 4import { ABUSE_STATES, CONSTRAINTS_FIELDS } from '../../initializers/constants'
4import { exists, isArray } from './misc' 5import { exists, isArray } from './misc'
5 6
diff --git a/server/helpers/custom-validators/plugins.ts b/server/helpers/custom-validators/plugins.ts
index d2fc03936..f2d4efb32 100644
--- a/server/helpers/custom-validators/plugins.ts
+++ b/server/helpers/custom-validators/plugins.ts
@@ -8,7 +8,8 @@ import { isUrlValid } from './activitypub/misc'
8const PLUGINS_CONSTRAINTS_FIELDS = CONSTRAINTS_FIELDS.PLUGINS 8const PLUGINS_CONSTRAINTS_FIELDS = CONSTRAINTS_FIELDS.PLUGINS
9 9
10function isPluginTypeValid (value: any) { 10function isPluginTypeValid (value: any) {
11 return exists(value) && validator.isInt('' + value) && PluginType[value] !== undefined 11 return exists(value) &&
12 (value === PluginType.PLUGIN || value === PluginType.THEME)
12} 13}
13 14
14function isPluginNameValid (value: string) { 15function isPluginNameValid (value: string) {
diff --git a/server/helpers/custom-validators/video-blacklist.ts b/server/helpers/custom-validators/video-blacklist.ts
index 17cb3b00b..34fcec38e 100644
--- a/server/helpers/custom-validators/video-blacklist.ts
+++ b/server/helpers/custom-validators/video-blacklist.ts
@@ -10,7 +10,8 @@ function isVideoBlacklistReasonValid (value: string) {
10} 10}
11 11
12function isVideoBlacklistTypeValid (value: any) { 12function isVideoBlacklistTypeValid (value: any) {
13 return exists(value) && validator.isInt('' + value) && VideoBlacklistType[value] !== undefined 13 return exists(value) &&
14 (value === VideoBlacklistType.AUTO_BEFORE_PUBLISHED || value === VideoBlacklistType.MANUAL)
14} 15}
15 16
16// --------------------------------------------------------------------------- 17// ---------------------------------------------------------------------------
diff --git a/server/lib/activitypub/process/process-flag.ts b/server/lib/activitypub/process/process-flag.ts
index 6350cee12..40d07558c 100644
--- a/server/lib/activitypub/process/process-flag.ts
+++ b/server/lib/activitypub/process/process-flag.ts
@@ -2,7 +2,8 @@ import { createAccountAbuse, createVideoAbuse, createVideoCommentAbuse } from '@
2import { AccountModel } from '@server/models/account/account' 2import { AccountModel } from '@server/models/account/account'
3import { VideoModel } from '@server/models/video/video' 3import { VideoModel } from '@server/models/video/video'
4import { VideoCommentModel } from '@server/models/video/video-comment' 4import { VideoCommentModel } from '@server/models/video/video-comment'
5import { AbuseObject, abusePredefinedReasonsMap, AbuseState, ActivityCreate, ActivityFlag } from '../../../../shared' 5import { abusePredefinedReasonsMap } from '@shared/core-utils/abuse'
6import { AbuseObject, AbuseState, ActivityCreate, ActivityFlag } from '../../../../shared'
6import { getAPId } from '../../../helpers/activitypub' 7import { getAPId } from '../../../helpers/activitypub'
7import { retryTransactionWrapper } from '../../../helpers/database-utils' 8import { retryTransactionWrapper } from '../../../helpers/database-utils'
8import { logger } from '../../../helpers/logger' 9import { logger } from '../../../helpers/logger'
diff --git a/server/lib/client-html.ts b/server/lib/client-html.ts
index ffe53d0d5..d8ae73b5d 100644
--- a/server/lib/client-html.ts
+++ b/server/lib/client-html.ts
@@ -1,5 +1,5 @@
1import * as express from 'express' 1import * as express from 'express'
2import { buildFileLocale, getDefaultLocale, is18nLocale, POSSIBLE_LOCALES } from '../../shared/models/i18n/i18n' 2import { buildFileLocale, getDefaultLocale, is18nLocale, POSSIBLE_LOCALES } from '../../shared/core-utils/i18n/i18n'
3import { 3import {
4 AVATARS_SIZE, 4 AVATARS_SIZE,
5 CUSTOM_HTML_TAG_COMMENTS, 5 CUSTOM_HTML_TAG_COMMENTS,
diff --git a/server/middlewares/user-right.ts b/server/middlewares/user-right.ts
index 4d836485c..aaf0b323a 100644
--- a/server/middlewares/user-right.ts
+++ b/server/middlewares/user-right.ts
@@ -6,7 +6,7 @@ function ensureUserHasRight (userRight: UserRight) {
6 return function (req: express.Request, res: express.Response, next: express.NextFunction) { 6 return function (req: express.Request, res: express.Response, next: express.NextFunction) {
7 const user = res.locals.oauth.token.user 7 const user = res.locals.oauth.token.user
8 if (user.hasRight(userRight) === false) { 8 if (user.hasRight(userRight) === false) {
9 const message = `User ${user.username} does not have right ${UserRight[userRight]} to access to ${req.path}.` 9 const message = `User ${user.username} does not have right ${userRight} to access to ${req.path}.`
10 logger.info(message) 10 logger.info(message)
11 11
12 return res.status(403).json({ error: message }) 12 return res.status(403).json({ error: message })
diff --git a/server/models/abuse/abuse.ts b/server/models/abuse/abuse.ts
index 1b599db62..2a407c3d2 100644
--- a/server/models/abuse/abuse.ts
+++ b/server/models/abuse/abuse.ts
@@ -17,11 +17,11 @@ import {
17 UpdatedAt 17 UpdatedAt
18} from 'sequelize-typescript' 18} from 'sequelize-typescript'
19import { isAbuseModerationCommentValid, isAbuseReasonValid, isAbuseStateValid } from '@server/helpers/custom-validators/abuses' 19import { isAbuseModerationCommentValid, isAbuseReasonValid, isAbuseStateValid } from '@server/helpers/custom-validators/abuses'
20import { abusePredefinedReasonsMap } from '@shared/core-utils/abuse'
20import { 21import {
21 AbuseFilter, 22 AbuseFilter,
22 AbuseObject, 23 AbuseObject,
23 AbusePredefinedReasons, 24 AbusePredefinedReasons,
24 abusePredefinedReasonsMap,
25 AbusePredefinedReasonsString, 25 AbusePredefinedReasonsString,
26 AbuseState, 26 AbuseState,
27 AbuseVideoIs, 27 AbuseVideoIs,
@@ -646,8 +646,10 @@ export class AbuseModel extends Model<AbuseModel> {
646 } 646 }
647 647
648 private static getPredefinedReasonsStrings (predefinedReasons: AbusePredefinedReasons[]): AbusePredefinedReasonsString[] { 648 private static getPredefinedReasonsStrings (predefinedReasons: AbusePredefinedReasons[]): AbusePredefinedReasonsString[] {
649 const invertedPredefinedReasons = invert(abusePredefinedReasonsMap)
650
649 return (predefinedReasons || []) 651 return (predefinedReasons || [])
650 .filter(r => r in AbusePredefinedReasons) 652 .map(r => invertedPredefinedReasons[r] as AbusePredefinedReasonsString)
651 .map(r => invert(abusePredefinedReasonsMap)[r] as AbusePredefinedReasonsString) 653 .filter(v => !!v)
652 } 654 }
653} 655}
diff --git a/server/models/account/user.ts b/server/models/account/user.ts
index 5f45f8e7c..22e6715b4 100644
--- a/server/models/account/user.ts
+++ b/server/models/account/user.ts
@@ -1,3 +1,5 @@
1import * as Bluebird from 'bluebird'
2import { values } from 'lodash'
1import { col, FindOptions, fn, literal, Op, QueryTypes, where, WhereOptions } from 'sequelize' 3import { col, FindOptions, fn, literal, Op, QueryTypes, where, WhereOptions } from 'sequelize'
2import { 4import {
3 AfterDestroy, 5 AfterDestroy,
@@ -19,8 +21,21 @@ import {
19 Table, 21 Table,
20 UpdatedAt 22 UpdatedAt
21} from 'sequelize-typescript' 23} from 'sequelize-typescript'
22import { hasUserRight, MyUser, USER_ROLE_LABELS, UserRight, AbuseState, VideoPlaylistType, VideoPrivacy } from '../../../shared' 24import {
25 MMyUserFormattable,
26 MUserDefault,
27 MUserFormattable,
28 MUserId,
29 MUserNotifSettingChannelDefault,
30 MUserWithNotificationSetting,
31 MVideoFullLight
32} from '@server/types/models'
33import { hasUserRight, USER_ROLE_LABELS } from '../../../shared/core-utils/users'
34import { AbuseState, MyUser, UserRight, VideoPlaylistType, VideoPrivacy } from '../../../shared/models'
23import { User, UserRole } from '../../../shared/models/users' 35import { User, UserRole } from '../../../shared/models/users'
36import { UserAdminFlag } from '../../../shared/models/users/user-flag.model'
37import { NSFWPolicyType } from '../../../shared/models/videos/nsfw-policy.type'
38import { isThemeNameValid } from '../../helpers/custom-validators/plugins'
24import { 39import {
25 isNoInstanceConfigWarningModal, 40 isNoInstanceConfigWarningModal,
26 isNoWelcomeModal, 41 isNoWelcomeModal,
@@ -42,33 +57,19 @@ import {
42 isUserWebTorrentEnabledValid 57 isUserWebTorrentEnabledValid
43} from '../../helpers/custom-validators/users' 58} from '../../helpers/custom-validators/users'
44import { comparePassword, cryptPassword } from '../../helpers/peertube-crypto' 59import { comparePassword, cryptPassword } from '../../helpers/peertube-crypto'
60import { DEFAULT_USER_THEME_NAME, NSFW_POLICY_TYPES } from '../../initializers/constants'
61import { clearCacheByUserId } from '../../lib/oauth-model'
62import { getThemeOrDefault } from '../../lib/plugins/theme-utils'
63import { ActorModel } from '../activitypub/actor'
64import { ActorFollowModel } from '../activitypub/actor-follow'
45import { OAuthTokenModel } from '../oauth/oauth-token' 65import { OAuthTokenModel } from '../oauth/oauth-token'
46import { getSort, throwIfNotValid } from '../utils' 66import { getSort, throwIfNotValid } from '../utils'
67import { VideoModel } from '../video/video'
47import { VideoChannelModel } from '../video/video-channel' 68import { VideoChannelModel } from '../video/video-channel'
69import { VideoImportModel } from '../video/video-import'
48import { VideoPlaylistModel } from '../video/video-playlist' 70import { VideoPlaylistModel } from '../video/video-playlist'
49import { AccountModel } from './account' 71import { AccountModel } from './account'
50import { NSFWPolicyType } from '../../../shared/models/videos/nsfw-policy.type'
51import { values } from 'lodash'
52import { DEFAULT_USER_THEME_NAME, NSFW_POLICY_TYPES } from '../../initializers/constants'
53import { clearCacheByUserId } from '../../lib/oauth-model'
54import { UserNotificationSettingModel } from './user-notification-setting' 72import { UserNotificationSettingModel } from './user-notification-setting'
55import { VideoModel } from '../video/video'
56import { ActorModel } from '../activitypub/actor'
57import { ActorFollowModel } from '../activitypub/actor-follow'
58import { VideoImportModel } from '../video/video-import'
59import { UserAdminFlag } from '../../../shared/models/users/user-flag.model'
60import { isThemeNameValid } from '../../helpers/custom-validators/plugins'
61import { getThemeOrDefault } from '../../lib/plugins/theme-utils'
62import * as Bluebird from 'bluebird'
63import {
64 MMyUserFormattable,
65 MUserDefault,
66 MUserFormattable,
67 MUserId,
68 MUserNotifSettingChannelDefault,
69 MUserWithNotificationSetting,
70 MVideoFullLight
71} from '@server/types/models'
72 73
73enum ScopeNames { 74enum ScopeNames {
74 FOR_ME_API = 'FOR_ME_API', 75 FOR_ME_API = 'FOR_ME_API',