summaryrefslogtreecommitdiff
path: root/src/api/endpoints/i/regenerate_token.ts
diff options
context:
space:
mode:
authorこぴなたみぽ <Syuilotan@yahoo.co.jp>2017-11-06 19:11:23 +0900
committerGitHub <noreply@github.com>2017-11-06 19:11:23 +0900
commitcb7e70dee3aa47807d33757d4ecd07e2793540d0 (patch)
treec6795a6c0aa200195748c364d4ab990c6a160150 /src/api/endpoints/i/regenerate_token.ts
parentchore(package): update @types/rimraf to version 2.0.2 (diff)
parentMerge pull request #871 from syuilo/greenkeeper/@types/elasticsearch-5.0.17 (diff)
downloadmisskey-cb7e70dee3aa47807d33757d4ecd07e2793540d0.tar.gz
misskey-cb7e70dee3aa47807d33757d4ecd07e2793540d0.tar.bz2
misskey-cb7e70dee3aa47807d33757d4ecd07e2793540d0.zip
Merge branch 'master' into greenkeeper/@types/rimraf-2.0.2
Diffstat (limited to 'src/api/endpoints/i/regenerate_token.ts')
-rw-r--r--src/api/endpoints/i/regenerate_token.ts42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/api/endpoints/i/regenerate_token.ts b/src/api/endpoints/i/regenerate_token.ts
new file mode 100644
index 0000000000..f96d10ebfc
--- /dev/null
+++ b/src/api/endpoints/i/regenerate_token.ts
@@ -0,0 +1,42 @@
+/**
+ * Module dependencies
+ */
+import $ from 'cafy';
+import * as bcrypt from 'bcryptjs';
+import User from '../../models/user';
+import event from '../../event';
+import generateUserToken from '../../common/generate-native-user-token';
+
+/**
+ * Regenerate native token
+ *
+ * @param {any} params
+ * @param {any} user
+ * @return {Promise<any>}
+ */
+module.exports = async (params, user) => new Promise(async (res, rej) => {
+ // Get 'password' parameter
+ const [password, passwordErr] = $(params.password).string().$;
+ if (passwordErr) return rej('invalid password param');
+
+ // Compare password
+ const same = bcrypt.compareSync(password, user.password);
+
+ if (!same) {
+ return rej('incorrect password');
+ }
+
+ // Generate secret
+ const secret = generateUserToken();
+
+ await User.update(user._id, {
+ $set: {
+ token: secret
+ }
+ });
+
+ res();
+
+ // Publish event
+ event(user._id, 'my_token_regenerated');
+});