aboutsummaryrefslogtreecommitdiffhomepage
path: root/server/helpers
diff options
context:
space:
mode:
Diffstat (limited to 'server/helpers')
-rw-r--r--server/helpers/custom-jsonld-signature.ts68
-rw-r--r--server/helpers/custom-validators/users.ts8
2 files changed, 73 insertions, 3 deletions
diff --git a/server/helpers/custom-jsonld-signature.ts b/server/helpers/custom-jsonld-signature.ts
index 27a187db1..a3bceb047 100644
--- a/server/helpers/custom-jsonld-signature.ts
+++ b/server/helpers/custom-jsonld-signature.ts
@@ -1,13 +1,77 @@
1import * as AsyncLRU from 'async-lru' 1import * as AsyncLRU from 'async-lru'
2import * as jsonld from 'jsonld' 2import * as jsonld from 'jsonld'
3import * as jsig from 'jsonld-signatures' 3import * as jsig from 'jsonld-signatures'
4import { logger } from './logger'
5
6const CACHE = {
7 'https://w3id.org/security/v1': {
8 '@context': {
9 'id': '@id',
10 'type': '@type',
11
12 'dc': 'http://purl.org/dc/terms/',
13 'sec': 'https://w3id.org/security#',
14 'xsd': 'http://www.w3.org/2001/XMLSchema#',
15
16 'EcdsaKoblitzSignature2016': 'sec:EcdsaKoblitzSignature2016',
17 'Ed25519Signature2018': 'sec:Ed25519Signature2018',
18 'EncryptedMessage': 'sec:EncryptedMessage',
19 'GraphSignature2012': 'sec:GraphSignature2012',
20 'LinkedDataSignature2015': 'sec:LinkedDataSignature2015',
21 'LinkedDataSignature2016': 'sec:LinkedDataSignature2016',
22 'CryptographicKey': 'sec:Key',
23
24 'authenticationTag': 'sec:authenticationTag',
25 'canonicalizationAlgorithm': 'sec:canonicalizationAlgorithm',
26 'cipherAlgorithm': 'sec:cipherAlgorithm',
27 'cipherData': 'sec:cipherData',
28 'cipherKey': 'sec:cipherKey',
29 'created': { '@id': 'dc:created', '@type': 'xsd:dateTime' },
30 'creator': { '@id': 'dc:creator', '@type': '@id' },
31 'digestAlgorithm': 'sec:digestAlgorithm',
32 'digestValue': 'sec:digestValue',
33 'domain': 'sec:domain',
34 'encryptionKey': 'sec:encryptionKey',
35 'expiration': { '@id': 'sec:expiration', '@type': 'xsd:dateTime' },
36 'expires': { '@id': 'sec:expiration', '@type': 'xsd:dateTime' },
37 'initializationVector': 'sec:initializationVector',
38 'iterationCount': 'sec:iterationCount',
39 'nonce': 'sec:nonce',
40 'normalizationAlgorithm': 'sec:normalizationAlgorithm',
41 'owner': { '@id': 'sec:owner', '@type': '@id' },
42 'password': 'sec:password',
43 'privateKey': { '@id': 'sec:privateKey', '@type': '@id' },
44 'privateKeyPem': 'sec:privateKeyPem',
45 'publicKey': { '@id': 'sec:publicKey', '@type': '@id' },
46 'publicKeyBase58': 'sec:publicKeyBase58',
47 'publicKeyPem': 'sec:publicKeyPem',
48 'publicKeyWif': 'sec:publicKeyWif',
49 'publicKeyService': { '@id': 'sec:publicKeyService', '@type': '@id' },
50 'revoked': { '@id': 'sec:revoked', '@type': 'xsd:dateTime' },
51 'salt': 'sec:salt',
52 'signature': 'sec:signature',
53 'signatureAlgorithm': 'sec:signingAlgorithm',
54 'signatureValue': 'sec:signatureValue'
55 }
56 }
57}
4 58
5const nodeDocumentLoader = jsonld.documentLoaders.node() 59const nodeDocumentLoader = jsonld.documentLoaders.node()
6 60
7const lru = new AsyncLRU({ 61const lru = new AsyncLRU({
8 max: 10, 62 max: 10,
9 load: (key, cb) => { 63 load: (url, cb) => {
10 nodeDocumentLoader(key, cb) 64 if (CACHE[ url ] !== undefined) {
65 logger.debug('Using cache for JSON-LD %s.', url)
66
67 return cb(null, {
68 contextUrl: null,
69 document: CACHE[ url ],
70 documentUrl: url
71 })
72 }
73
74 nodeDocumentLoader(url, cb)
11 } 75 }
12}) 76})
13 77
diff --git a/server/helpers/custom-validators/users.ts b/server/helpers/custom-validators/users.ts
index 70af5f1f0..e3ad9102a 100644
--- a/server/helpers/custom-validators/users.ts
+++ b/server/helpers/custom-validators/users.ts
@@ -1,9 +1,10 @@
1import 'express-validator' 1import 'express-validator'
2import * as validator from 'validator' 2import * as validator from 'validator'
3import { UserRole } from '../../../shared' 3import { UserNotificationSettingValue, UserRole } from '../../../shared'
4import { CONSTRAINTS_FIELDS, NSFW_POLICY_TYPES } from '../../initializers/constants' 4import { CONSTRAINTS_FIELDS, NSFW_POLICY_TYPES } from '../../initializers/constants'
5import { exists, isFileValid, isBooleanValid } from './misc' 5import { exists, isFileValid, isBooleanValid } from './misc'
6import { values } from 'lodash' 6import { values } from 'lodash'
7import { UserAdminFlag } from '../../../shared/models/users/user-flag.model'
7 8
8const USERS_CONSTRAINTS_FIELDS = CONSTRAINTS_FIELDS.USERS 9const USERS_CONSTRAINTS_FIELDS = CONSTRAINTS_FIELDS.USERS
9 10
@@ -54,6 +55,10 @@ function isUserAutoPlayVideoValid (value: any) {
54 return isBooleanValid(value) 55 return isBooleanValid(value)
55} 56}
56 57
58function isUserAdminFlagsValid (value: any) {
59 return exists(value) && validator.isInt('' + value)
60}
61
57function isUserBlockedValid (value: any) { 62function isUserBlockedValid (value: any) {
58 return isBooleanValid(value) 63 return isBooleanValid(value)
59} 64}
@@ -85,6 +90,7 @@ export {
85 isUserVideoQuotaValid, 90 isUserVideoQuotaValid,
86 isUserVideoQuotaDailyValid, 91 isUserVideoQuotaDailyValid,
87 isUserUsernameValid, 92 isUserUsernameValid,
93 isUserAdminFlagsValid,
88 isUserEmailVerifiedValid, 94 isUserEmailVerifiedValid,
89 isUserNSFWPolicyValid, 95 isUserNSFWPolicyValid,
90 isUserWebTorrentEnabledValid, 96 isUserWebTorrentEnabledValid,