parent
							
								
									165d272552
								
							
						
					
					
						commit
						9ea7d75aa4
					
				
					 4 changed files with 82 additions and 10 deletions
				
			
		| 
						 | 
				
			
			@ -59,6 +59,7 @@
 | 
			
		|||
		"@types/redis": "2.8.32",
 | 
			
		||||
		"@types/rename": "1.0.4",
 | 
			
		||||
		"@types/request-stats": "3.0.0",
 | 
			
		||||
		"@types/sanitize-html": "2.5.0",
 | 
			
		||||
		"@types/seedrandom": "2.4.28",
 | 
			
		||||
		"@types/sharp": "0.29.3",
 | 
			
		||||
		"@types/sinonjs__fake-timers": "6.0.4",
 | 
			
		||||
| 
						 | 
				
			
			@ -163,6 +164,7 @@
 | 
			
		|||
		"require-all": "3.0.0",
 | 
			
		||||
		"rndstr": "1.0.0",
 | 
			
		||||
		"s-age": "1.1.2",
 | 
			
		||||
		"sanitize-html": "2.5.3",
 | 
			
		||||
		"seedrandom": "3.0.5",
 | 
			
		||||
		"sharp": "0.29.2",
 | 
			
		||||
		"speakeasy": "2.0.0",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,4 +1,5 @@
 | 
			
		|||
import $ from 'cafy';
 | 
			
		||||
import * as sanitizeHtml from 'sanitize-html';
 | 
			
		||||
import { ID } from '@/misc/cafy-id';
 | 
			
		||||
import define from '../../define';
 | 
			
		||||
import { publishAdminStream } from '@/services/stream';
 | 
			
		||||
| 
						 | 
				
			
			@ -6,6 +7,8 @@ import { ApiError } from '../../error';
 | 
			
		|||
import { getUser } from '../../common/getters';
 | 
			
		||||
import { AbuseUserReports, Users } from '@/models/index';
 | 
			
		||||
import { genId } from '@/misc/gen-id';
 | 
			
		||||
import { sendEmail } from '@/services/send-email';
 | 
			
		||||
import { fetchMeta } from '@/misc/fetch-meta';
 | 
			
		||||
 | 
			
		||||
export const meta = {
 | 
			
		||||
	tags: ['users'],
 | 
			
		||||
| 
						 | 
				
			
			@ -26,23 +29,24 @@ export const meta = {
 | 
			
		|||
		noSuchUser: {
 | 
			
		||||
			message: 'No such user.',
 | 
			
		||||
			code: 'NO_SUCH_USER',
 | 
			
		||||
			id: '1acefcb5-0959-43fd-9685-b48305736cb5'
 | 
			
		||||
			id: '1acefcb5-0959-43fd-9685-b48305736cb5',
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		cannotReportYourself: {
 | 
			
		||||
			message: 'Cannot report yourself.',
 | 
			
		||||
			code: 'CANNOT_REPORT_YOURSELF',
 | 
			
		||||
			id: '1e13149e-b1e8-43cf-902e-c01dbfcb202f'
 | 
			
		||||
			id: '1e13149e-b1e8-43cf-902e-c01dbfcb202f',
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		cannotReportAdmin: {
 | 
			
		||||
			message: 'Cannot report the admin.',
 | 
			
		||||
			code: 'CANNOT_REPORT_THE_ADMIN',
 | 
			
		||||
			id: '35e166f5-05fb-4f87-a2d5-adb42676d48f'
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
			id: '35e166f5-05fb-4f87-a2d5-adb42676d48f',
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// eslint-disable-next-line import/no-default-export
 | 
			
		||||
export default define(meta, async (ps, me) => {
 | 
			
		||||
	// Lookup user
 | 
			
		||||
	const user = await getUser(ps.userId).catch(e => {
 | 
			
		||||
| 
						 | 
				
			
			@ -72,10 +76,10 @@ export default define(meta, async (ps, me) => {
 | 
			
		|||
	setTimeout(async () => {
 | 
			
		||||
		const moderators = await Users.find({
 | 
			
		||||
			where: [{
 | 
			
		||||
				isAdmin: true
 | 
			
		||||
				isAdmin: true,
 | 
			
		||||
			}, {
 | 
			
		||||
				isModerator: true
 | 
			
		||||
			}]
 | 
			
		||||
				isModerator: true,
 | 
			
		||||
			}],
 | 
			
		||||
		});
 | 
			
		||||
 | 
			
		||||
		for (const moderator of moderators) {
 | 
			
		||||
| 
						 | 
				
			
			@ -83,8 +87,15 @@ export default define(meta, async (ps, me) => {
 | 
			
		|||
				id: report.id,
 | 
			
		||||
				targetUserId: report.targetUserId,
 | 
			
		||||
				reporterId: report.reporterId,
 | 
			
		||||
				comment: report.comment
 | 
			
		||||
				comment: report.comment,
 | 
			
		||||
			});
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		const meta = await fetchMeta();
 | 
			
		||||
		if (meta.email) {
 | 
			
		||||
			sendEmail(meta.email, 'New abuse report',
 | 
			
		||||
				sanitizeHtml(ps.comment),
 | 
			
		||||
				sanitizeHtml(ps.comment));
 | 
			
		||||
		}
 | 
			
		||||
	}, 1);
 | 
			
		||||
});
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -769,6 +769,13 @@
 | 
			
		|||
  resolved "https://registry.yarnpkg.com/@types/rsvp/-/rsvp-4.0.4.tgz#55e93e7054027f1ad4b4ebc1e60e59eb091e2d32"
 | 
			
		||||
  integrity sha512-J3Ol++HCC7/hwZhanDvggFYU/GtxHxE/e7cGRWxR04BF7Tt3TqJZ84BkzQgDxmX0uu8IagiyfmfoUlBACh2Ilg==
 | 
			
		||||
 | 
			
		||||
"@types/sanitize-html@2.5.0":
 | 
			
		||||
  version "2.5.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@types/sanitize-html/-/sanitize-html-2.5.0.tgz#bfef58fbcf2674b20ffcc23c3506faa68c3a13e3"
 | 
			
		||||
  integrity sha512-PeFIEZsO9m1+ACJlXUaimgrR+5DEDiIXhz7Hso307jmq5Yz0lb5kDp8LiTr5dMMMliC/jNNx/qds7Zoxa4zexw==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    htmlparser2 "^6.0.0"
 | 
			
		||||
 | 
			
		||||
"@types/seedrandom@2.4.28":
 | 
			
		||||
  version "2.4.28"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@types/seedrandom/-/seedrandom-2.4.28.tgz#9ce8fa048c1e8c85cb71d7fe4d704e000226036f"
 | 
			
		||||
| 
						 | 
				
			
			@ -2631,6 +2638,11 @@ deep-is@^0.1.3, deep-is@~0.1.3:
 | 
			
		|||
  resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
 | 
			
		||||
  integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=
 | 
			
		||||
 | 
			
		||||
deepmerge@^4.2.2:
 | 
			
		||||
  version "4.2.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955"
 | 
			
		||||
  integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==
 | 
			
		||||
 | 
			
		||||
defer-to-connect@^2.0.0:
 | 
			
		||||
  version "2.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.0.tgz#83d6b199db041593ac84d781b5222308ccf4c2c1"
 | 
			
		||||
| 
						 | 
				
			
			@ -2831,7 +2843,7 @@ domutils@^1.5.1:
 | 
			
		|||
    dom-serializer "0"
 | 
			
		||||
    domelementtype "1"
 | 
			
		||||
 | 
			
		||||
domutils@^2.6.0:
 | 
			
		||||
domutils@^2.5.2, domutils@^2.6.0:
 | 
			
		||||
  version "2.8.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135"
 | 
			
		||||
  integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==
 | 
			
		||||
| 
						 | 
				
			
			@ -3889,6 +3901,16 @@ htmlparser2@^3.9.1:
 | 
			
		|||
    inherits "^2.0.1"
 | 
			
		||||
    readable-stream "^3.1.1"
 | 
			
		||||
 | 
			
		||||
htmlparser2@^6.0.0:
 | 
			
		||||
  version "6.1.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7"
 | 
			
		||||
  integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    domelementtype "^2.0.1"
 | 
			
		||||
    domhandler "^4.0.0"
 | 
			
		||||
    domutils "^2.5.2"
 | 
			
		||||
    entities "^2.0.0"
 | 
			
		||||
 | 
			
		||||
http-assert@^1.3.0:
 | 
			
		||||
  version "1.4.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/http-assert/-/http-assert-1.4.1.tgz#c5f725d677aa7e873ef736199b89686cceb37878"
 | 
			
		||||
| 
						 | 
				
			
			@ -4358,6 +4380,11 @@ is-plain-obj@^2.1.0:
 | 
			
		|||
  resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287"
 | 
			
		||||
  integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==
 | 
			
		||||
 | 
			
		||||
is-plain-object@^5.0.0:
 | 
			
		||||
  version "5.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344"
 | 
			
		||||
  integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==
 | 
			
		||||
 | 
			
		||||
is-potential-custom-element-name@^1.0.1:
 | 
			
		||||
  version "1.0.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5"
 | 
			
		||||
| 
						 | 
				
			
			@ -5471,6 +5498,11 @@ nanoid@^3.1.23:
 | 
			
		|||
  resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.23.tgz#f744086ce7c2bc47ee0a8472574d5c78e4183a81"
 | 
			
		||||
  integrity sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw==
 | 
			
		||||
 | 
			
		||||
nanoid@^3.1.30:
 | 
			
		||||
  version "3.1.30"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.30.tgz#63f93cc548d2a113dc5dfbc63bfa09e2b9b64362"
 | 
			
		||||
  integrity sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==
 | 
			
		||||
 | 
			
		||||
napi-build-utils@^1.0.1:
 | 
			
		||||
  version "1.0.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806"
 | 
			
		||||
| 
						 | 
				
			
			@ -5940,6 +5972,11 @@ parse-passwd@^1.0.0:
 | 
			
		|||
  resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6"
 | 
			
		||||
  integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=
 | 
			
		||||
 | 
			
		||||
parse-srcset@^1.0.2:
 | 
			
		||||
  version "1.0.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/parse-srcset/-/parse-srcset-1.0.2.tgz#f2bd221f6cc970a938d88556abc589caaaa2bde1"
 | 
			
		||||
  integrity sha1-8r0iH2zJcKk42IVWq8WJyqqiveE=
 | 
			
		||||
 | 
			
		||||
parse5-htmlparser2-tree-adapter@^6.0.0:
 | 
			
		||||
  version "6.0.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz#2cdf9ad823321140370d4dbf5d3e92c7c8ddc6e6"
 | 
			
		||||
| 
						 | 
				
			
			@ -6371,6 +6408,15 @@ postcss@^8.2.15:
 | 
			
		|||
    nanoid "^3.1.23"
 | 
			
		||||
    source-map-js "^0.6.2"
 | 
			
		||||
 | 
			
		||||
postcss@^8.3.11:
 | 
			
		||||
  version "8.3.11"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.3.11.tgz#c3beca7ea811cd5e1c4a3ec6d2e7599ef1f8f858"
 | 
			
		||||
  integrity sha512-hCmlUAIlUiav8Xdqw3Io4LcpA1DOt7h3LSTAC4G6JGHFFaWzI6qvFt9oilvl8BmkbBRX1IhM90ZAmpk68zccQA==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    nanoid "^3.1.30"
 | 
			
		||||
    picocolors "^1.0.0"
 | 
			
		||||
    source-map-js "^0.6.2"
 | 
			
		||||
 | 
			
		||||
postgres-array@~2.0.0:
 | 
			
		||||
  version "2.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/postgres-array/-/postgres-array-2.0.0.tgz#48f8fce054fbc69671999329b8834b772652d82e"
 | 
			
		||||
| 
						 | 
				
			
			@ -7049,6 +7095,18 @@ safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2, safe-buffer@~5.2.0:
 | 
			
		|||
  resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
 | 
			
		||||
  integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
 | 
			
		||||
 | 
			
		||||
sanitize-html@2.5.3:
 | 
			
		||||
  version "2.5.3"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/sanitize-html/-/sanitize-html-2.5.3.tgz#91aa3dc760b072cdf92f9c6973747569b1ba1cd8"
 | 
			
		||||
  integrity sha512-DGATXd1fs/Rm287/i5FBKVYSBBUL0iAaztOA1/RFhEs4yqo39/X52i/q/CwsfCUG5cilmXSBmnQmyWfnKhBlOg==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    deepmerge "^4.2.2"
 | 
			
		||||
    escape-string-regexp "^4.0.0"
 | 
			
		||||
    htmlparser2 "^6.0.0"
 | 
			
		||||
    is-plain-object "^5.0.0"
 | 
			
		||||
    parse-srcset "^1.0.2"
 | 
			
		||||
    postcss "^8.3.11"
 | 
			
		||||
 | 
			
		||||
sax@1.2.1:
 | 
			
		||||
  version "1.2.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.1.tgz#7b8e656190b228e81a66aea748480d828cd2d37a"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue