diff options
| author | syuilo <syuilotan@yahoo.co.jp> | 2018-08-17 19:17:23 +0900 |
|---|---|---|
| committer | syuilo <syuilotan@yahoo.co.jp> | 2018-08-17 19:17:23 +0900 |
| commit | 2c8f962889f9231238dbdaa5990f00646e8060f3 (patch) | |
| tree | 73e2fb3d84cbd0e372c950b9e6482deeafa26ec2 /src/server/api/private | |
| parent | Merge pull request #2270 from syuilo/l10n_master (diff) | |
| download | sharkey-2c8f962889f9231238dbdaa5990f00646e8060f3.tar.gz sharkey-2c8f962889f9231238dbdaa5990f00646e8060f3.tar.bz2 sharkey-2c8f962889f9231238dbdaa5990f00646e8060f3.zip | |
#2214 #2155
Diffstat (limited to 'src/server/api/private')
| -rw-r--r-- | src/server/api/private/signup.ts | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/server/api/private/signup.ts b/src/server/api/private/signup.ts index 16ec33bcbf..2bf56a9791 100644 --- a/src/server/api/private/signup.ts +++ b/src/server/api/private/signup.ts @@ -6,6 +6,7 @@ import User, { IUser, validateUsername, validatePassword, pack } from '../../../ import generateUserToken from '../common/generate-native-user-token'; import config from '../../../config'; import Meta from '../../../models/meta'; +import RegistrationTicket from '../../../models/registration-tickets'; if (config.recaptcha) { recaptcha.init({ @@ -29,6 +30,29 @@ export default async (ctx: Koa.Context) => { const username = body['username']; const password = body['password']; + const invitationCode = body['invitationCode']; + + const meta = await Meta.findOne({}); + + if (meta.disableRegistration) { + if (invitationCode == null || typeof invitationCode != 'string') { + ctx.status = 400; + return; + } + + const ticket = await RegistrationTicket.findOne({ + code: invitationCode + }); + + if (ticket == null) { + ctx.status = 400; + return; + } + + RegistrationTicket.remove({ + _id: ticket._id + }); + } // Validate username if (!validateUsername(username)) { |