Make require password to update email
This commit is contained in:
		| @@ -26,6 +26,7 @@ common: | ||||
|   close: "閉じる" | ||||
|   do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。" | ||||
|   load-more: "もっと読み込む" | ||||
|   enter-password: "パスワードを入力してください" | ||||
|  | ||||
|   got-it: "わかった" | ||||
|   customization-tips: | ||||
|   | ||||
| @@ -218,8 +218,14 @@ export default Vue.extend({ | ||||
| 		}, | ||||
|  | ||||
| 		updateEmail() { | ||||
| 			this.$root.api('i/update_email', { | ||||
| 				email: this.email == '' ? null : this.email | ||||
| 			this.$input({ | ||||
| 				title: this.$t('@.enter-password'), | ||||
| 				type: 'password' | ||||
| 			}).then(password => { | ||||
| 				this.$root.api('i/update_email', { | ||||
| 					password: password, | ||||
| 					email: this.email == '' ? null : this.email | ||||
| 				}); | ||||
| 			}); | ||||
| 		} | ||||
| 	} | ||||
|   | ||||
| @@ -7,6 +7,7 @@ import fetchMeta from '../../../../misc/fetch-meta'; | ||||
| import rndstr from 'rndstr'; | ||||
| import config from '../../../../config'; | ||||
| const ms = require('ms'); | ||||
| import * as bcrypt from 'bcryptjs'; | ||||
|  | ||||
| export const meta = { | ||||
| 	requireCredential: true, | ||||
| @@ -19,6 +20,10 @@ export const meta = { | ||||
| 	}, | ||||
|  | ||||
| 	params: { | ||||
| 		password: { | ||||
| 			validator: $.str | ||||
| 		}, | ||||
|  | ||||
| 		email: { | ||||
| 			validator: $.str.optional.nullable | ||||
| 		}, | ||||
| @@ -26,6 +31,13 @@ export const meta = { | ||||
| }; | ||||
|  | ||||
| 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(user._id, { | ||||
| 		$set: { | ||||
| 			email: ps.email, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 syuilo
					syuilo