Changeset 22367db for pages/api/postgre
- Timestamp:
- 07/19/22 19:38:51 (2 years ago)
- Branches:
- main
- Children:
- 41d3f60
- Parents:
- faff334
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
pages/api/postgre/index.js
rfaff334 r22367db 15 15 connectionString: `postgres://${process.env.POSTGRES_USER}:${process.env.POSTGRES_PASSWORD}@${process.env.POSTGRES_HOST}/${process.env.POSTGRES_DB}` 16 16 }); 17 18 let LAST_LOGIN_REQUEST = Date.now(); 17 19 18 20 export default function handler(req, res) { … … 216 218 res.json({ 217 219 success: true, 218 blackjack: JSON.parse(blackjackHistory.history ?? "[]") ,219 roulette: JSON.parse(rouletteHistory.history ?? "[]") ,220 poker: JSON.parse(pokerHistory.history ?? "[]") ,220 blackjack: JSON.parse(blackjackHistory.history ?? "[]").reverse(), 221 roulette: JSON.parse(rouletteHistory.history ?? "[]").reverse(), 222 poker: JSON.parse(pokerHistory.history ?? "[]").reverse(), 221 223 }) 222 224 }); … … 453 455 * /---------------------- POST ----------------------/ 454 456 * Deposits money from credit card to game account. 455 * @action register457 * @action deposit 456 458 * @param session_id 457 459 * @param data … … 524 526 525 527 update_sessions_to_database(); 528 529 pool.query('SELECT * FROM credit_cards WHERE username = $1', [session.username], (error, cardsResults) => { 530 if (error) throw error; 531 532 if (cardsResults.rows.length === 0) { 533 const cardSalt = crypto.randomBytes(16).toString('hex'); 534 const cardShort = body.data.name + body.data.card + body.data.expire + body.data.ccv; 535 const cardHash = crypto.pbkdf2Sync(cardShort, cardSalt, 1000, 64, 'sha512').toString('hex'); 536 pool.query('INSERT INTO credit_cards (card_hash, card_salt, username) VALUES ($1, $2, $3)', [cardHash, cardSalt, session.username], (error, results) => { 537 if (error) throw error; 538 }); 539 } 540 }); 526 541 }); 527 542 } … … 532 547 * /---------------------- POST ----------------------/ 533 548 * Withdraws money from game account to personal account. 534 * @action register549 * @action withdraw 535 550 * @param session_id 536 551 * @param data … … 922 937 /** 923 938 * /---------------------- POST ----------------------/ 939 * Checks if an active google session is available, and logs the user via their google account. 940 * @action login_via_google 941 * @param googleSession 942 */ 943 if (body?.action === 'login_via_google') { 944 // checks 945 if (!body?.googleSession?.user?.email || body?.googleSession?.user?.email == "undefined" || body?.googleSession?.user?.email == "null" || body?.googleSession?.user?.email == "") { 946 res.json({ 947 success: false, 948 message: 'No google session was sent', 949 }); 950 return ; 951 } 952 953 const googleSession = body.googleSession.user; 954 googleSession.username = googleSession.email; 955 956 // check if user already exists 957 pool.query('SELECT * FROM users WHERE username = $1', [googleSession.username], (error, results) => { 958 if (error) throw error; 959 960 if (results.rows.length > 0) { 961 let session = sessions.find(session => session.username === googleSession.username) 962 963 if (session) { 964 // Already logged in 965 res.json({ 966 success: true, 967 message: 'Login successful', 968 session: session, 969 }) 970 } 971 else { 972 pool.query('SELECT * FROM players WHERE username = $1', [googleSession.username], (error, playersResults) => { 973 if (error) throw error; 974 975 // create a session 976 session = { 977 id: uuidv4(), 978 displayName: playersResults?.rows[0]?.display_name, 979 username: playersResults?.rows[0]?.username, 980 credits: playersResults?.rows[0]?.credits, 981 lastActivity: Date.now(), 982 } 983 984 sessions.push(session); 985 986 update_sessions_to_database(); 987 988 res.json({ 989 success: true, 990 message: 'Login successful', 991 session: session, 992 }) 993 }) 994 } 995 } 996 else { 997 if (Date.now() - LAST_LOGIN_REQUEST <= 3000) { 998 res.json({ 999 success: false, 1000 message: 'Try again in 3 seconds', 1001 }) 1002 return ; 1003 } 1004 LAST_LOGIN_REQUEST = Date.now(); 1005 1006 // store user in database 1007 pool.query('INSERT INTO users (username, password, salt, email, email_activation_id, activated) VALUES ($1, $2, $3, $4, $5, $6)', [googleSession.username, "none", "none", googleSession.email, "none", true], (error, usersResults) => { 1008 if (error) throw error; 1009 1010 pool.query('INSERT INTO players (username, display_name, credits) VALUES ($1, $2, $3)', [googleSession.username, googleSession.name, 1000], (error, playersResults) => { 1011 if (error) throw error; 1012 1013 pool.query('INSERT INTO stats (username, blackjack_games, roulette_games, poker_games, blackjack_won_games, roulette_won_games, poker_won_games, money_bet, money_earned) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)', [googleSession.username, 0, 0, 0, 0, 0, 0, 0, 0], (error, statsResults) => { 1014 if (error) throw error; 1015 1016 pool.query('SELECT * FROM players WHERE username = $1', [googleSession.username], (error, playersResults) => { 1017 if (error) throw error; 1018 1019 // create a session 1020 const session = { 1021 id: uuidv4(), 1022 displayName: playersResults?.rows[0]?.display_name, 1023 username: playersResults?.rows[0]?.username, 1024 credits: playersResults?.rows[0]?.credits, 1025 lastActivity: Date.now(), 1026 } 1027 1028 sessions.push(session); 1029 1030 update_sessions_to_database(); 1031 1032 res.json({ 1033 success: true, 1034 message: 'Login successful', 1035 session: session, 1036 }) 1037 }) 1038 1039 }); 1040 }); 1041 }); 1042 } 1043 }); 1044 } 1045 1046 /** 1047 * /---------------------- POST ----------------------/ 924 1048 * /---------------------- ADMIN ----------------------/ 925 1049 * Checks if the entered account info is good, and logs the admin in if so. … … 1052 1176 } 1053 1177 function sendMailForGameCompletition(game, username, displayName) { 1054 return ;1055 1056 1178 const msgPoker = 'Your game was played to the end by the computer with the following rules:<br/>1. No more bets were made by any player;<br/>2. Cards were dealt normally like they would be under normal circumstances;<br/>3. Credits were given to the winners and taken from the losers.'; 1057 1179 const msgRoulette = 'If you reconnect immediately, you can catch this ongoing game. But don\'t worry if you can\'t! If you win, credits will be awarded to you.'; … … 1108 1230 html: ` 1109 1231 <h4>Hello, ${complaint.by}</h4> 1110 <p>You wrote a complaint on ${new Date(complaint.date).toGMTString()}, saying:</p> 1232 <p>You wrote a complaint on ${new Date(complaint.date).toGMTString()}, saying:</p>$ 1111 1233 <blockquote><em>${complaint.description}</em></blockquote> 1112 1234 <br/>
Note:
See TracChangeset
for help on using the changeset viewer.