mirror of
https://github.com/JuniorDark/RustyHearts-API.git
synced 2026-05-07 06:01:44 -04:00
Add project files.
This commit is contained in:
commit
0a12c6baa0
41 changed files with 2698 additions and 0 deletions
67
src/routes/launcher/register.js
Normal file
67
src/routes/launcher/register.js
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
const sql = require('mssql');
|
||||
const express = require('express');
|
||||
const router = express.Router();
|
||||
const bcrypt = require('bcrypt');
|
||||
const crypto = require('crypto');
|
||||
const { logger, accountLogger } = require('../../utils/logger');
|
||||
const { sendConfirmationEmail } = require('../../mailer/mailer');
|
||||
const Joi = require('joi');
|
||||
|
||||
// Set up database connection
|
||||
const { connAccount } = require('../../utils/dbConfig');
|
||||
|
||||
// Joi schema for validating request data
|
||||
const schema = Joi.object({
|
||||
windyCode: Joi.string().alphanum().min(1).max(16).required(),
|
||||
email: Joi.string().email().required(),
|
||||
password: Joi.string().min(6).required(),
|
||||
});
|
||||
|
||||
// Route for registering an account
|
||||
router.post('/', async (req, res) => {
|
||||
try {
|
||||
const { error, value } = schema.validate(req.body);
|
||||
if (error) {
|
||||
return res.status(400).send(error.details[0].message);
|
||||
}
|
||||
|
||||
const windyCode = value.windyCode;
|
||||
const email = value.email;
|
||||
const password = value.password;
|
||||
const userIp = req.ip;
|
||||
|
||||
const md5_password = crypto.createHash('md5').update(windyCode + password).digest('hex'); // Generate MD5 hash
|
||||
|
||||
const passwordHash = await bcrypt.hash(md5_password, 10);
|
||||
|
||||
// Use a prepared statement to create the account
|
||||
const pool = await connAccount;
|
||||
const request = pool.request();
|
||||
request.input('WindyCode', sql.VarChar, windyCode);
|
||||
request.input('AccountPwd', sql.VarChar, passwordHash);
|
||||
request.input('Email', sql.VarChar, email);
|
||||
request.input('RegisterIP', sql.VarChar, userIp);
|
||||
const result = await request.execute('CreateAccount');
|
||||
const row = result.recordset[0];
|
||||
|
||||
if (row && row.Result === 'AccountCreated') {
|
||||
accountLogger.info(`[Account] Account [${windyCode}] created successfully`);
|
||||
sendConfirmationEmail(email, windyCode);
|
||||
|
||||
const clearRequest = pool.request();
|
||||
clearRequest.input('Email', sql.VarChar, email);
|
||||
const clearResult = await clearRequest.execute('ClearVerificationCode');
|
||||
const clearRow = clearResult.recordset[0];
|
||||
|
||||
return res.status(200).send('Success');
|
||||
} else {
|
||||
accountLogger.info(`[Account] Account [${windyCode}] creation failed: ${row.Result}`);
|
||||
return res.status(400).send(row.Result);
|
||||
}
|
||||
} catch (error) {
|
||||
logger.error('[Account] Database query failed: ' + error.message);
|
||||
return res.status(500).send('Database query failed: ' + error.message);
|
||||
}
|
||||
});
|
||||
|
||||
module.exports = router;
|
||||
Loading…
Add table
Add a link
Reference in a new issue