summaryrefslogtreecommitdiff
path: root/src/server/api/endpoints/i/update-email.ts
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2021-11-12 02:02:25 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2021-11-12 02:02:25 +0900
commit0e4a111f81cceed275d9bec2695f6e401fb654d8 (patch)
tree40874799472fa07416f17b50a398ac33b7771905 /src/server/api/endpoints/i/update-email.ts
parentupdate deps (diff)
downloadmisskey-0e4a111f81cceed275d9bec2695f6e401fb654d8.tar.gz
misskey-0e4a111f81cceed275d9bec2695f6e401fb654d8.tar.bz2
misskey-0e4a111f81cceed275d9bec2695f6e401fb654d8.zip
refactoring
Resolve #7779
Diffstat (limited to 'src/server/api/endpoints/i/update-email.ts')
-rw-r--r--src/server/api/endpoints/i/update-email.ts94
1 files changed, 0 insertions, 94 deletions
diff --git a/src/server/api/endpoints/i/update-email.ts b/src/server/api/endpoints/i/update-email.ts
deleted file mode 100644
index 9b6fb9c410..0000000000
--- a/src/server/api/endpoints/i/update-email.ts
+++ /dev/null
@@ -1,94 +0,0 @@
-import $ from 'cafy';
-import { publishMainStream } from '@/services/stream';
-import define from '../../define';
-import rndstr from 'rndstr';
-import config from '@/config/index';
-import * as ms from 'ms';
-import * as bcrypt from 'bcryptjs';
-import { Users, UserProfiles } from '@/models/index';
-import { sendEmail } from '@/services/send-email';
-import { ApiError } from '../../error';
-import { validateEmailForAccount } from '@/services/validate-email-for-account';
-
-export const meta = {
- requireCredential: true as const,
-
- secure: true,
-
- limit: {
- duration: ms('1hour'),
- max: 3
- },
-
- params: {
- password: {
- validator: $.str
- },
-
- email: {
- validator: $.optional.nullable.str
- },
- },
-
- errors: {
- incorrectPassword: {
- message: 'Incorrect password.',
- code: 'INCORRECT_PASSWORD',
- id: 'e54c1d7e-e7d6-4103-86b6-0a95069b4ad3'
- },
-
- unavailable: {
- message: 'Unavailable email address.',
- code: 'UNAVAILABLE',
- id: 'a2defefb-f220-8849-0af6-17f816099323'
- },
- }
-};
-
-export default define(meta, async (ps, user) => {
- const profile = await UserProfiles.findOneOrFail(user.id);
-
- // Compare password
- const same = await bcrypt.compare(ps.password, profile.password!);
-
- if (!same) {
- throw new ApiError(meta.errors.incorrectPassword);
- }
-
- if (ps.email != null) {
- const available = await validateEmailForAccount(ps.email);
- if (!available) {
- throw new ApiError(meta.errors.unavailable);
- }
- }
-
- await UserProfiles.update(user.id, {
- email: ps.email,
- emailVerified: false,
- emailVerifyCode: null
- });
-
- const iObj = await Users.pack(user.id, user, {
- detail: true,
- includeSecrets: true
- });
-
- // Publish meUpdated event
- publishMainStream(user.id, 'meUpdated', iObj);
-
- if (ps.email != null) {
- const code = rndstr('a-z0-9', 16);
-
- await UserProfiles.update(user.id, {
- emailVerifyCode: code
- });
-
- const link = `${config.url}/verify-email/${code}`;
-
- sendEmail(ps.email, 'Email verification',
- `To verify email, please click this link:<br><a href="${link}">${link}</a>`,
- `To verify email, please click this link: ${link}`);
- }
-
- return iObj;
-});