X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fcontrollers%2Fapi%2Fserver%2Ffollows.ts;h=d38ce91debdde0aa5979c8f1a1798447806db784;hb=453e83ea5d81d203ba34bc43cd5c2c750ba40568;hp=87cf091cbffc0e64c5816c75a4c7de9e4ec6a66a;hpb=5b9c965d5aa747f29b081289f930ee215fdc23c8;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/controllers/api/server/follows.ts b/server/controllers/api/server/follows.ts index 87cf091cb..d38ce91de 100644 --- a/server/controllers/api/server/follows.ts +++ b/server/controllers/api/server/follows.ts @@ -2,8 +2,8 @@ import * as express from 'express' import { UserRight } from '../../../../shared/models/users' import { logger } from '../../../helpers/logger' import { getFormattedObjects, getServerActor } from '../../../helpers/utils' -import { sequelizeTypescript, SERVER_ACTOR_NAME } from '../../../initializers' -import { sendReject, sendUndoFollow } from '../../../lib/activitypub/send' +import { SERVER_ACTOR_NAME } from '../../../initializers/constants' +import { sendAccept, sendReject, sendUndoFollow } from '../../../lib/activitypub/send' import { asyncMiddleware, authenticate, @@ -14,15 +14,17 @@ import { setDefaultSort } from '../../../middlewares' import { + acceptOrRejectFollowerValidator, followersSortValidator, followingSortValidator, followValidator, - removeFollowerValidator, + getFollowerValidator, removeFollowingValidator } from '../../../middlewares/validators' import { ActorFollowModel } from '../../../models/activitypub/actor-follow' import { JobQueue } from '../../../lib/job-queue' import { removeRedundancyOf } from '../../../lib/redundancy' +import { sequelizeTypescript } from '../../../initializers/database' const serverFollowsRouter = express.Router() serverFollowsRouter.get('/following', @@ -59,8 +61,24 @@ serverFollowsRouter.get('/followers', serverFollowsRouter.delete('/followers/:nameWithHost', authenticate, ensureUserHasRight(UserRight.MANAGE_SERVER_FOLLOW), - asyncMiddleware(removeFollowerValidator), - asyncMiddleware(removeFollower) + asyncMiddleware(getFollowerValidator), + asyncMiddleware(removeOrRejectFollower) +) + +serverFollowsRouter.post('/followers/:nameWithHost/reject', + authenticate, + ensureUserHasRight(UserRight.MANAGE_SERVER_FOLLOW), + asyncMiddleware(getFollowerValidator), + acceptOrRejectFollowerValidator, + asyncMiddleware(removeOrRejectFollower) +) + +serverFollowsRouter.post('/followers/:nameWithHost/accept', + authenticate, + ensureUserHasRight(UserRight.MANAGE_SERVER_FOLLOW), + asyncMiddleware(getFollowerValidator), + acceptOrRejectFollowerValidator, + asyncMiddleware(acceptFollower) ) // --------------------------------------------------------------------------- @@ -136,7 +154,7 @@ async function removeFollowing (req: express.Request, res: express.Response) { return res.status(204).end() } -async function removeFollower (req: express.Request, res: express.Response) { +async function removeOrRejectFollower (req: express.Request, res: express.Response) { const follow = res.locals.follow await sendReject(follow.ActorFollower, follow.ActorFollowing) @@ -145,3 +163,14 @@ async function removeFollower (req: express.Request, res: express.Response) { return res.status(204).end() } + +async function acceptFollower (req: express.Request, res: express.Response) { + const follow = res.locals.follow + + await sendAccept(follow) + + follow.state = 'accepted' + await follow.save() + + return res.status(204).end() +}