X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Flib%2Fblocklist.ts;h=a11b717b548414daa8478fcd3ed6d73b5a4b2176;hb=866b5d3f5230204d611a556260102996c1aefe10;hp=394c2453705c139054a839372807ec482da53762;hpb=7ad9b9846c44d198a736183fb186c2039f5236b5;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/lib/blocklist.ts b/server/lib/blocklist.ts index 394c24537..a11b717b5 100644 --- a/server/lib/blocklist.ts +++ b/server/lib/blocklist.ts @@ -1,40 +1,62 @@ -import { sequelizeTypescript } from '../initializers' +import { sequelizeTypescript } from '@server/initializers/database' +import { getServerActor } from '@server/models/application/application' +import { MAccountBlocklist, MAccountId, MAccountServer, MServerBlocklist } from '@server/types/models' import { AccountBlocklistModel } from '../models/account/account-blocklist' import { ServerBlocklistModel } from '../models/server/server-blocklist' function addAccountInBlocklist (byAccountId: number, targetAccountId: number) { return sequelizeTypescript.transaction(async t => { - return AccountBlocklistModel.create({ + return AccountBlocklistModel.upsert({ accountId: byAccountId, - targetAccountId: targetAccountId + targetAccountId }, { transaction: t }) }) } function addServerInBlocklist (byAccountId: number, targetServerId: number) { return sequelizeTypescript.transaction(async t => { - return ServerBlocklistModel.create({ + return ServerBlocklistModel.upsert({ accountId: byAccountId, targetServerId }, { transaction: t }) }) } -function removeAccountFromBlocklist (accountBlock: AccountBlocklistModel) { +function removeAccountFromBlocklist (accountBlock: MAccountBlocklist) { return sequelizeTypescript.transaction(async t => { return accountBlock.destroy({ transaction: t }) }) } -function removeServerFromBlocklist (serverBlock: ServerBlocklistModel) { +function removeServerFromBlocklist (serverBlock: MServerBlocklist) { return sequelizeTypescript.transaction(async t => { return serverBlock.destroy({ transaction: t }) }) } +async function isBlockedByServerOrAccount (targetAccount: MAccountServer, userAccount?: MAccountId) { + const serverAccountId = (await getServerActor()).Account.id + const sourceAccounts = [ serverAccountId ] + + if (userAccount) sourceAccounts.push(userAccount.id) + + const accountMutedHash = await AccountBlocklistModel.isAccountMutedByAccounts(sourceAccounts, targetAccount.id) + if (accountMutedHash[serverAccountId] || (userAccount && accountMutedHash[userAccount.id])) { + return true + } + + const instanceMutedHash = await ServerBlocklistModel.isServerMutedByAccounts(sourceAccounts, targetAccount.Actor.serverId) + if (instanceMutedHash[serverAccountId] || (userAccount && instanceMutedHash[userAccount.id])) { + return true + } + + return false +} + export { addAccountInBlocklist, addServerInBlocklist, removeAccountFromBlocklist, - removeServerFromBlocklist + removeServerFromBlocklist, + isBlockedByServerOrAccount }