From 3409a51cca11e611cc9629c0b0587d0c0ff78be2 Mon Sep 17 00:00:00 2001 From: syuilo Date: Thu, 21 Feb 2019 01:30:21 +0900 Subject: Resolve #2017 --- src/server/api/endpoints/i/delete-account.ts | 49 ++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 src/server/api/endpoints/i/delete-account.ts (limited to 'src/server/api') diff --git a/src/server/api/endpoints/i/delete-account.ts b/src/server/api/endpoints/i/delete-account.ts new file mode 100644 index 0000000000..217ad0010b --- /dev/null +++ b/src/server/api/endpoints/i/delete-account.ts @@ -0,0 +1,49 @@ +import $ from 'cafy'; +import * as bcrypt from 'bcryptjs'; +import User from '../../../../models/user'; +import define from '../../define'; +import { createDeleteNotesJob, createDeleteDriveFilesJob } from '../../../../queue'; + +export const meta = { + requireCredential: true, + + secure: true, + + params: { + password: { + validator: $.str + }, + } +}; + +export default define(meta, (ps, user) => new Promise(async (res, rej) => { + // Compare password + const same = await bcrypt.compare(ps.password, user.password); + + if (!same) { + return rej('incorrect password'); + } + + await User.update({ _id: user._id }, { + $set: { + isDeleted: true, + token: null, + name: null, + description: null, + pinnedNoteIds: [], + password: null, + email: null, + twitter: null, + github: null, + discord: null, + profile: {}, + fields: [], + clientSettings: {}, + } + }); + + createDeleteNotesJob(user); + createDeleteDriveFilesJob(user); + + res(); +})); -- cgit v1.2.3-freya