Added option for promotional emails to signup page
This commit is contained in:
+5
-5
@@ -18,7 +18,7 @@ const signupRequest = (connection) => (req, res) => {
|
||||
//parse form
|
||||
form.parse(req, (err, fields) => {
|
||||
if (err) throw err;
|
||||
|
||||
console.log(fields);
|
||||
//prevent too many clicks
|
||||
if (isThrottled(fields.email)) {
|
||||
res.status(400).write(log('Signup throttled', fields.email));
|
||||
@@ -74,8 +74,8 @@ const signupRequest = (connection) => (req, res) => {
|
||||
let rand = Math.floor(Math.random() * 100000);
|
||||
|
||||
//save the generated data to the signups table
|
||||
let query = 'REPLACE INTO signups (email, username, salt, hash, verify) VALUES (?, ?, ?, ?, ?);';
|
||||
connection.query(query, [fields.email, fields.username, salt, hash, rand], (err) => {
|
||||
let query = 'REPLACE INTO signups (email, username, salt, hash, promotions, verify) VALUES (?, ?, ?, ?, ?, ?);';
|
||||
connection.query(query, [fields.email, fields.username, salt, hash, fields.promotions ? true : false, rand], (err) => {
|
||||
if (err) throw err;
|
||||
|
||||
//TODO: make the verification email prettier
|
||||
@@ -145,8 +145,8 @@ const verifyRequest = (connection) => (req, res) => {
|
||||
log('Trying to create account', req.query.email);
|
||||
|
||||
//move the data from signups to accounts
|
||||
let query = 'INSERT IGNORE INTO accounts (email, username, salt, hash) VALUES (?, ?, ?, ?);';
|
||||
connection.query(query, [results[0].email, results[0].username, results[0].salt, results[0].hash], (err) => {
|
||||
let query = 'INSERT IGNORE INTO accounts (email, username, salt, hash, promotions) VALUES (?, ?, ?, ?, ?);';
|
||||
connection.query(query, [results[0].email, results[0].username, results[0].salt, results[0].hash, results[0].promotions], (err) => {
|
||||
if (err) throw err;
|
||||
|
||||
//delete from signups
|
||||
|
||||
@@ -25,6 +25,7 @@ CREATE TABLE IF NOT EXISTS signups (
|
||||
username VARCHAR(100) UNIQUE,
|
||||
salt VARCHAR(50),
|
||||
hash VARCHAR(100),
|
||||
promotions BOOLEAN DEFAULT FALSE,
|
||||
|
||||
verify INTEGER DEFAULT 0
|
||||
);
|
||||
@@ -37,6 +38,7 @@ CREATE TABLE IF NOT EXISTS accounts (
|
||||
username VARCHAR(100) UNIQUE,
|
||||
salt VARCHAR(50),
|
||||
hash VARCHAR(100),
|
||||
promotions BOOLEAN DEFAULT FALSE,
|
||||
|
||||
lastActivityTime TIMESTAMP DEFAULT '2019-01-01 00:00:00'
|
||||
);
|
||||
|
||||
+12
-16
@@ -1,20 +1,16 @@
|
||||
#NOTE: ALWAYS, ALWAYS, ALWAYS write a script in revert.sql that undoes these changes
|
||||
ALTER TABLE
|
||||
signups
|
||||
ADD COLUMN
|
||||
promotions BOOLEAN DEFAULT FALSE
|
||||
AFTER
|
||||
hash
|
||||
;
|
||||
|
||||
ALTER TABLE
|
||||
pastSpying
|
||||
MODIFY COLUMN
|
||||
success ENUM ('success', 'failure', 'ineffective')
|
||||
;
|
||||
|
||||
UPDATE
|
||||
pastSpying
|
||||
SET
|
||||
success = 'ineffective'
|
||||
WHERE
|
||||
success = 'success'
|
||||
AND
|
||||
spoilsGold = 0
|
||||
AND
|
||||
(SELECT COUNT(*) FROM equipmentStolen WHERE pastSpyingId = pastSpying.id) = 0
|
||||
accounts
|
||||
ADD COLUMN
|
||||
promotions BOOLEAN DEFAULT FALSE
|
||||
AFTER
|
||||
hash
|
||||
;
|
||||
|
||||
|
||||
@@ -32,9 +32,7 @@ class Signup extends React.Component {
|
||||
<Panel />
|
||||
<Link to='/' className='centered'>Return Home</Link>
|
||||
<div className='break' />
|
||||
<p className='centered'>Remember to verify your email!</p>
|
||||
<div className='break' />
|
||||
<p className='centered'>Check our rules concerning<br /><Link to='/rules'>conduct in this game</Link>.</p>
|
||||
<p className='centered'><em>(Remember to verify your email!)</em></p>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -11,6 +11,7 @@ class Signup extends React.Component {
|
||||
username: '',
|
||||
password: '',
|
||||
retype: '',
|
||||
promotions: false,
|
||||
warning: ''
|
||||
};
|
||||
}
|
||||
@@ -49,6 +50,11 @@ class Signup extends React.Component {
|
||||
<input id='retype' type='password' name='retype' value={this.state.retype} onChange={this.updateRetype.bind(this)} />
|
||||
</div>
|
||||
|
||||
<div style={{paddingLeft: '34px', alignSelf: 'flex-start', flex: '1', display:'flex', flexDirection: 'row', justifyContent: 'flex-start', alignItems: 'center'}}>
|
||||
<label htmlFor='promotions'>Allow Emails:</label>
|
||||
<input id='promotions' type='checkbox' name='promotions' value={this.state.promotions} onChange={this.updatePromotions.bind(this)} />
|
||||
</div>
|
||||
|
||||
<button type='submit' disabled={!this.state.email}>Sign Up</button>
|
||||
</form>
|
||||
</div>
|
||||
@@ -121,7 +127,7 @@ class Signup extends React.Component {
|
||||
}
|
||||
|
||||
clearInput() {
|
||||
this.setState({ email: '', username: '', password: '', retype: '', warning: '' });
|
||||
this.setState({ email: '', username: '', password: '', retype: '', promotions: false, warning: '' });
|
||||
}
|
||||
|
||||
updateEmail(evt) {
|
||||
@@ -139,6 +145,10 @@ class Signup extends React.Component {
|
||||
updateRetype(evt) {
|
||||
this.setState({ retype: evt.target.value });
|
||||
}
|
||||
|
||||
updatePromotions(evt) {
|
||||
this.setState({ promotions: evt.target.value });
|
||||
}
|
||||
};
|
||||
|
||||
Signup.propTypes = {
|
||||
|
||||
Reference in New Issue
Block a user