forked from woem.men/forkey
decline users
This commit is contained in:
parent
2d3589e4aa
commit
6e25bd9c5e
8 changed files with 35 additions and 5 deletions
|
@ -61,6 +61,7 @@ export class CreateSystemUserService {
|
||||||
isLocked: true,
|
isLocked: true,
|
||||||
isExplorable: false,
|
isExplorable: false,
|
||||||
isBot: true,
|
isBot: true,
|
||||||
|
approved: true,
|
||||||
}).then(x => transactionalEntityManager.findOneByOrFail(MiUser, x.identifiers[0]));
|
}).then(x => transactionalEntityManager.findOneByOrFail(MiUser, x.identifiers[0]));
|
||||||
|
|
||||||
await transactionalEntityManager.insert(MiUserKeypair, {
|
await transactionalEntityManager.insert(MiUserKeypair, {
|
||||||
|
|
|
@ -93,6 +93,9 @@ export class ImportFollowingProcessorService {
|
||||||
// skip myself
|
// skip myself
|
||||||
if (target.id === job.data.user.id) return;
|
if (target.id === job.data.user.id) return;
|
||||||
|
|
||||||
|
// skip follows to not approved accounts
|
||||||
|
if (!target.approved) return;
|
||||||
|
|
||||||
this.logger.info(`Follow ${target.id} ${job.data.withReplies ? 'with replies' : 'without replies'} ...`);
|
this.logger.info(`Follow ${target.id} ${job.data.withReplies ? 'with replies' : 'without replies'} ...`);
|
||||||
|
|
||||||
this.queueService.createFollowJob([{ from: user, to: { id: target.id }, silent: true, withReplies: job.data.withReplies }]);
|
this.queueService.createFollowJob([{ from: user, to: { id: target.id }, silent: true, withReplies: job.data.withReplies }]);
|
||||||
|
|
|
@ -684,6 +684,7 @@ export class ActivityPubServerService {
|
||||||
usernameLower: request.params.user.toLowerCase(),
|
usernameLower: request.params.user.toLowerCase(),
|
||||||
host: IsNull(),
|
host: IsNull(),
|
||||||
isSuspended: false,
|
isSuspended: false,
|
||||||
|
approved: true,
|
||||||
});
|
});
|
||||||
|
|
||||||
return await this.userInfo(request, reply, user);
|
return await this.userInfo(request, reply, user);
|
||||||
|
|
|
@ -480,6 +480,7 @@ const $admin_showUser: Provider = { provide: 'ep:admin/show-user', useClass: ep_
|
||||||
const $admin_showUsers: Provider = { provide: 'ep:admin/show-users', useClass: ep___admin_showUsers.default };
|
const $admin_showUsers: Provider = { provide: 'ep:admin/show-users', useClass: ep___admin_showUsers.default };
|
||||||
const $admin_suspendUser: Provider = { provide: 'ep:admin/suspend-user', useClass: ep___admin_suspendUser.default };
|
const $admin_suspendUser: Provider = { provide: 'ep:admin/suspend-user', useClass: ep___admin_suspendUser.default };
|
||||||
const $admin_approveUser: Provider = { provide: 'ep:admin/approve-user', useClass: ep___admin_approveUser.default };
|
const $admin_approveUser: Provider = { provide: 'ep:admin/approve-user', useClass: ep___admin_approveUser.default };
|
||||||
|
const $admin_declineUser: Provider = { provide: 'ep:admin/decline-user', useClass: ep___admin_declineUser.default };
|
||||||
const $admin_unsuspendUser: Provider = { provide: 'ep:admin/unsuspend-user', useClass: ep___admin_unsuspendUser.default };
|
const $admin_unsuspendUser: Provider = { provide: 'ep:admin/unsuspend-user', useClass: ep___admin_unsuspendUser.default };
|
||||||
const $admin_updateMeta: Provider = { provide: 'ep:admin/update-meta', useClass: ep___admin_updateMeta.default };
|
const $admin_updateMeta: Provider = { provide: 'ep:admin/update-meta', useClass: ep___admin_updateMeta.default };
|
||||||
const $admin_updateUserName: Provider = { provide: 'ep:admin/update-user-name', useClass: ep___admin_updateUserName.default };
|
const $admin_updateUserName: Provider = { provide: 'ep:admin/update-user-name', useClass: ep___admin_updateUserName.default };
|
||||||
|
@ -880,6 +881,7 @@ const $reversi_verify: Provider = { provide: 'ep:reversi/verify', useClass: ep__
|
||||||
$admin_showUsers,
|
$admin_showUsers,
|
||||||
$admin_suspendUser,
|
$admin_suspendUser,
|
||||||
$admin_approveUser,
|
$admin_approveUser,
|
||||||
|
$admin_declineUser,
|
||||||
$admin_unsuspendUser,
|
$admin_unsuspendUser,
|
||||||
$admin_updateMeta,
|
$admin_updateMeta,
|
||||||
$admin_updateUserName,
|
$admin_updateUserName,
|
||||||
|
|
|
@ -63,7 +63,11 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
|
||||||
|
|
||||||
await this.usedUsernamesRepository.delete({ username: user.username });
|
await this.usedUsernamesRepository.delete({ username: user.username });
|
||||||
|
|
||||||
await this.deleteAccountService.deleteAccount(user, false, me);
|
|
||||||
|
//Actually delete it since the last function doesnt actually delete the account
|
||||||
|
//Note: Before approval these accounts wont federate so this is totally fine.
|
||||||
|
await this.usersRepository.delete(user.id);
|
||||||
|
|
||||||
|
|
||||||
this.moderationLogService.log(me, 'decline', {
|
this.moderationLogService.log(me, 'decline', {
|
||||||
userId: user.id,
|
userId: user.id,
|
||||||
|
|
|
@ -35,6 +35,12 @@ export const meta = {
|
||||||
id: 'fcd2eef9-a9b2-4c4f-8624-038099e90aa5',
|
id: 'fcd2eef9-a9b2-4c4f-8624-038099e90aa5',
|
||||||
},
|
},
|
||||||
|
|
||||||
|
unapprovedUser: {
|
||||||
|
message: 'The user has not been approved yet.',
|
||||||
|
code: 'UNAPPROVED_USER',
|
||||||
|
id: '8d66f136-b3e1-48fd-92c4-30ecfd7fdb7a',
|
||||||
|
},
|
||||||
|
|
||||||
followeeIsYourself: {
|
followeeIsYourself: {
|
||||||
message: 'Followee is yourself.',
|
message: 'Followee is yourself.',
|
||||||
code: 'FOLLOWEE_IS_YOURSELF',
|
code: 'FOLLOWEE_IS_YOURSELF',
|
||||||
|
@ -101,15 +107,25 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get followee
|
// Get followee
|
||||||
const followee = await this.getterService.getUser(ps.userId).catch(err => {
|
let followee;
|
||||||
if (err.id === '15348ddd-432d-49c2-8a5a-8069753becff') throw new ApiError(meta.errors.noSuchUser);
|
try {
|
||||||
|
followee = await this.getterService.getUser(ps.userId);
|
||||||
|
} catch (err) {
|
||||||
|
if (err.id === '15348ddd-432d-49c2-8a5a-8069753becff') {
|
||||||
|
throw new ApiError(meta.errors.noSuchUser);
|
||||||
|
}
|
||||||
throw err;
|
throw err;
|
||||||
});
|
}
|
||||||
|
|
||||||
if ( me.isBot && followee.isBot ) {
|
if ( me.isBot && followee.isBot ) {
|
||||||
throw new ApiError(meta.errors.followingAnotherBot);
|
throw new ApiError(meta.errors.followingAnotherBot);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const isLocalUser = followee.uri == null;
|
||||||
|
if (!followee.approved && isLocalUser) {
|
||||||
|
throw new ApiError(meta.errors.unapprovedUser);
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await this.userFollowingService.follow(follower, followee, { withReplies: ps.withReplies });
|
await this.userFollowingService.follow(follower, followee, { withReplies: ps.withReplies });
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
|
|
@ -113,5 +113,6 @@ onUnmounted(() => {
|
||||||
border: solid 0.5px var(--divider);
|
border: solid 0.5px var(--divider);
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
transform-origin: center center;
|
transform-origin: center center;
|
||||||
|
backdrop-filter: blur(10px);
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
@ -45,7 +45,9 @@ const pagination = {
|
||||||
|
|
||||||
function deleted(id: string) {
|
function deleted(id: string) {
|
||||||
if (paginationComponent.value) {
|
if (paginationComponent.value) {
|
||||||
paginationComponent.value.items.delete(id);
|
paginationComponent.value.items = paginationComponent.value.items.filter(
|
||||||
|
(item: any) => item.id !== id
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue