diff options
| author | syuilo <syuilotan@yahoo.co.jp> | 2019-02-21 01:30:21 +0900 |
|---|---|---|
| committer | syuilo <syuilotan@yahoo.co.jp> | 2019-02-21 01:30:21 +0900 |
| commit | 3409a51cca11e611cc9629c0b0587d0c0ff78be2 (patch) | |
| tree | 473f2d284366d5cf6ac18075985af9e928b13006 /src/server/api | |
| parent | :art: (diff) | |
| download | sharkey-3409a51cca11e611cc9629c0b0587d0c0ff78be2.tar.gz sharkey-3409a51cca11e611cc9629c0b0587d0c0ff78be2.tar.bz2 sharkey-3409a51cca11e611cc9629c0b0587d0c0ff78be2.zip | |
Resolve #2017
Diffstat (limited to 'src/server/api')
| -rw-r--r-- | src/server/api/endpoints/i/delete-account.ts | 49 |
1 files changed, 49 insertions, 0 deletions
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(); +})); |