From 22eca63636bed85935582af839d2e1431fecf0a0 Mon Sep 17 00:00:00 2001 From: Bennett Sampson Date: Thu, 1 Dec 2022 10:07:30 -0700 Subject: [PATCH 01/90] BanVolunteerConmponent made --- client/src/components/BanVolunteer.jsx | 62 ++++++++++++++++++++++++ client/src/components/CurrentEntries.jsx | 19 ++++++++ 2 files changed, 81 insertions(+) create mode 100644 client/src/components/BanVolunteer.jsx diff --git a/client/src/components/BanVolunteer.jsx b/client/src/components/BanVolunteer.jsx new file mode 100644 index 0000000..2fa1473 --- /dev/null +++ b/client/src/components/BanVolunteer.jsx @@ -0,0 +1,62 @@ +import { useState, useRef } from 'react'; +import axios from 'axios' + +const AddEntry = () => { + + const [firstName, setFirstName] = useState(''); + const [lastName, setLastName] = useState(''); + const [emailAddress, setEmailAddress] = useState(''); + const [entryList, setEntryList] = useState([]) + + const ref1 = useRef(null); + const ref2 = useRef(null); + const ref3 = useRef(null); + + // CREATE (PUT) + function banEntry() { + axios.post(`${process.env.REACT_APP_HOST}/api/create`, { first: firstName, last: lastName, email: emailAddress }).then((response) => { + setEntryList([...entryList, { first_name: firstName, last_name: lastName, email_address: emailAddress }] + ) + }) + + ref1.current.value = "" + setFirstName('') + ref2.current.value = "" + setLastName('') + ref3.current.value = "" + setEmailAddress('') + } + + function refreshPage() { + window.location.reload(false); + } + + return ( +
+

Add an Entry

+
+
+ + setFirstName(e.target.value)} /> +
+
+ + setLastName(e.target.value)} /> +

+
+ + setEmailAddress(e.target.value)} /> +
+ +
+
+ ) +} + +export default AddEntry; diff --git a/client/src/components/CurrentEntries.jsx b/client/src/components/CurrentEntries.jsx index 842348a..954073c 100644 --- a/client/src/components/CurrentEntries.jsx +++ b/client/src/components/CurrentEntries.jsx @@ -42,6 +42,19 @@ const CurrentEntries = () => { }) //close .then() } + // BAN + // const banEntry = (email) => { // deletes ALL such email instances in the database + // axios.delete(`${process.env.REACT_APP_HOST}/api/delete/${email}`).then((response) => { + // let objToDelete = getObjectByValue(email) + // const index = entryList.indexOf(objToDelete) // deletes ONE instance in the state var + // if (index > -1) { + // let entryListCopy = [...entryList] // copy + // entryListCopy.splice(index, 1) // remove index + // setEntryList(entryListCopy) + // } + // }) //close .then() + // } + // UPDATE (PUT) const updateEmail = (email) => { // replaces ALL such email instances in the database axios.put(`${process.env.REACT_APP_HOST}/api/update`, { old: email, new: newEmail }).then((response) => { @@ -143,6 +156,12 @@ const CurrentEntries = () => { deleteEntry(val.email_address) }}>delete + + //Ban button stuff + + - - - ) -} - -export default AddEntry; diff --git a/client/src/components/CurrentEntries.jsx b/client/src/components/CurrentEntries.jsx index 954073c..a1cc6c5 100644 --- a/client/src/components/CurrentEntries.jsx +++ b/client/src/components/CurrentEntries.jsx @@ -43,17 +43,17 @@ const CurrentEntries = () => { } // BAN - // const banEntry = (email) => { // deletes ALL such email instances in the database - // axios.delete(`${process.env.REACT_APP_HOST}/api/delete/${email}`).then((response) => { - // let objToDelete = getObjectByValue(email) - // const index = entryList.indexOf(objToDelete) // deletes ONE instance in the state var - // if (index > -1) { - // let entryListCopy = [...entryList] // copy - // entryListCopy.splice(index, 1) // remove index - // setEntryList(entryListCopy) - // } - // }) //close .then() - // } + const banEntry = (email) => { // deletes ALL such email instances in the database + axios.delete(`${process.env.REACT_APP_HOST}/api/delete/${email}`).then((response) => { + let objToDelete = getObjectByValue(email) + const index = entryList.indexOf(objToDelete) // deletes ONE instance in the state var + if (index > -1) { + let entryListCopy = [...entryList] // copy + entryListCopy.splice(index, 1) // remove index + setEntryList(entryListCopy) + } + }) //close .then() + } // UPDATE (PUT) const updateEmail = (email) => { // replaces ALL such email instances in the database @@ -120,6 +120,23 @@ const CurrentEntries = () => { submitEmailsButton.style.display = 'none' } + //TODO: Ban Button + function handleBanVolunteer() { + const editPasscodeInput = document.getElementById('editPasscodeInput') + const editButton = document.getElementById('editButton') + const doneButton = document.getElementById('doneButton') + const collection = document.getElementsByClassName("editControls") + const submitEmailsButton = document.getElementById('submitEmailsButton') + + for (let i = 0; i < collection.length; i++) + collection[i].style.display = 'none' + editPasscodeInput.style.visibility = 'hidden' + doneButton.style.display = 'none' + editButton.style.display = 'inline' + editButton.innerHTML = "Edit List" + submitEmailsButton.style.display = 'none' + } + function checkPasscode(e) { const editButton = document.getElementById('editButton') if ((e.target.value) === SECRET) { @@ -153,20 +170,22 @@ const CurrentEntries = () => {
- //Ban button stuff - - + + /*BAN*/ + + setNewEmail(e.target.value)} />
@@ -176,6 +195,7 @@ const CurrentEntries = () => {
+ abortPasscodeAttempt(e.target.value)} /> From fd684a7186dacdaccd4945660d5d76c8be4d6102 Mon Sep 17 00:00:00 2001 From: Bennett Sampson Date: Thu, 1 Dec 2022 12:33:52 -0700 Subject: [PATCH 03/90] removed extra ban button --- client/src/components/CurrentEntries.jsx | 2 -- 1 file changed, 2 deletions(-) diff --git a/client/src/components/CurrentEntries.jsx b/client/src/components/CurrentEntries.jsx index a1cc6c5..097b777 100644 --- a/client/src/components/CurrentEntries.jsx +++ b/client/src/components/CurrentEntries.jsx @@ -179,7 +179,6 @@ const CurrentEntries = () => { } }}>update - /*BAN*/ - abortPasscodeAttempt(e.target.value)} /> From d524f22a3e9b198f997a9ed64dc824d1d0b6f211 Mon Sep 17 00:00:00 2001 From: DrDisturbance Date: Thu, 1 Dec 2022 13:54:28 -0700 Subject: [PATCH 04/90] updates to add banned updates to add banned --- client/src/components/App/App.js | 3 + client/src/components/BanEntry.jsx | 62 ++++++++++++++++++++ client/src/components/CurrentEntries.jsx | 30 ---------- server/index.js | 73 ++++++++++++++++++++++-- 4 files changed, 134 insertions(+), 34 deletions(-) create mode 100644 client/src/components/BanEntry.jsx diff --git a/client/src/components/App/App.js b/client/src/components/App/App.js index 23871d7..bf77eae 100644 --- a/client/src/components/App/App.js +++ b/client/src/components/App/App.js @@ -1,6 +1,7 @@ import React from 'react'; import './App.css'; import AddEntry from '../AddEntry.jsx'; +import BanEntry from '../BanEntry.jsx'; import CurrentEntries from '../CurrentEntries.jsx'; import Footer from '../Footer.jsx' @@ -12,6 +13,8 @@ function App() {
+ +

diff --git a/client/src/components/BanEntry.jsx b/client/src/components/BanEntry.jsx new file mode 100644 index 0000000..6b2761f --- /dev/null +++ b/client/src/components/BanEntry.jsx @@ -0,0 +1,62 @@ +import { useState, useRef } from 'react'; +import axios from 'axios' + +const BanEntry = () => { + + const [firstName, setFirstName] = useState(''); + const [lastName, setLastName] = useState(''); + const [emailAddress, setEmailAddress] = useState(''); + const [entryList, setEntryList] = useState([]) + + const ref1 = useRef(null); + const ref2 = useRef(null); + const ref3 = useRef(null); + + // CREATE (POST) + function submitEntry() { + axios.post(`${process.env.REACT_APP_HOST}/api/create`, { first: firstName, last: lastName, email: emailAddress }).then((response) => { + setEntryList([...entryList, { first_name: firstName, last_name: lastName, email_address: emailAddress }] + ) + }) + + ref1.current.value = "" + setFirstName('') + ref2.current.value = "" + setLastName('') + ref3.current.value = "" + setEmailAddress('') + } + + function refreshPage() { + window.location.reload(false); + } + + return ( +
+

Ban an Entry

+
+
+ + setFirstName(e.target.value)} /> +
+
+ + setLastName(e.target.value)} /> +

+
+ + setEmailAddress(e.target.value)} /> +
+ +
+
+ ) +} + +export default BanEntry; diff --git a/client/src/components/CurrentEntries.jsx b/client/src/components/CurrentEntries.jsx index 097b777..e1cc966 100644 --- a/client/src/components/CurrentEntries.jsx +++ b/client/src/components/CurrentEntries.jsx @@ -42,19 +42,6 @@ const CurrentEntries = () => { }) //close .then() } - // BAN - const banEntry = (email) => { // deletes ALL such email instances in the database - axios.delete(`${process.env.REACT_APP_HOST}/api/delete/${email}`).then((response) => { - let objToDelete = getObjectByValue(email) - const index = entryList.indexOf(objToDelete) // deletes ONE instance in the state var - if (index > -1) { - let entryListCopy = [...entryList] // copy - entryListCopy.splice(index, 1) // remove index - setEntryList(entryListCopy) - } - }) //close .then() - } - // UPDATE (PUT) const updateEmail = (email) => { // replaces ALL such email instances in the database axios.put(`${process.env.REACT_APP_HOST}/api/update`, { old: email, new: newEmail }).then((response) => { @@ -120,23 +107,6 @@ const CurrentEntries = () => { submitEmailsButton.style.display = 'none' } - //TODO: Ban Button - function handleBanVolunteer() { - const editPasscodeInput = document.getElementById('editPasscodeInput') - const editButton = document.getElementById('editButton') - const doneButton = document.getElementById('doneButton') - const collection = document.getElementsByClassName("editControls") - const submitEmailsButton = document.getElementById('submitEmailsButton') - - for (let i = 0; i < collection.length; i++) - collection[i].style.display = 'none' - editPasscodeInput.style.visibility = 'hidden' - doneButton.style.display = 'none' - editButton.style.display = 'inline' - editButton.innerHTML = "Edit List" - submitEmailsButton.style.display = 'none' - } - function checkPasscode(e) { const editButton = document.getElementById('editButton') if ((e.target.value) === SECRET) { diff --git a/server/index.js b/server/index.js index b7ac4ce..2b9ec51 100644 --- a/server/index.js +++ b/server/index.js @@ -17,7 +17,7 @@ app.use(cors()) app.use(express.json()) app.use(bodyParser.urlencoded({extended: true})) -// READ +// READ Add app.get("/api/read", (req, res) => { const sqlSelect = "SELECT * FROM volunteers;" db.query(sqlSelect, (err, result) => { @@ -28,7 +28,7 @@ app.get("/api/read", (req, res) => { }) }) -// CREATE +// CREATE Add app.post("/api/create", (req, res) => { const fn = req.body.first const ln = req.body.last @@ -41,7 +41,7 @@ app.post("/api/create", (req, res) => { }) }) -// DELETE +// DELETE Add app.delete("/api/delete/:emailAddress", (req, res) => { const ea = req.params.emailAddress; console.log(ea) @@ -53,7 +53,7 @@ app.delete("/api/delete/:emailAddress", (req, res) => { }) }) -// UPDATE +// UPDATE Add app.put("/api/update", (req, res) => { // console.log(req) @@ -68,6 +68,71 @@ app.put("/api/update", (req, res) => { }) }) + + +// READ Ban +app.get("/api/read", (req, res) => { + const sqlSelect = "SELECT * FROM banned;" + db.query(sqlSelect, (err, result) => { + if(err){ + throw err; + } + res.send(result); + }) +}) + +// CREATE Ban +app.post("/api/create", (req, res) => { + const fn = req.body.first + const ln = req.body.last + const ea = req.body.email + const sqlInsert = "INSERT INTO banned (first_name, last_name, email_address) VALUES (?,?,?);" + db.query(sqlInsert, [fn, ln, ea], (err, result) => { + if(err) throw err + console.log("Server posted: ", fn, ln) + res.send(result) + }) + + const ea1 = req.params.emailAddress; + console.log(ea1) + const sqlDelete = "DELETE FROM volunteers WHERE email_address = ?"; + db.query(sqlDelete, [ea1], (err, result) => { + if(err) throw err + console.log("Server: deleted: ", ea1) + res.send(result) + }) +}) + +// DELETE Ban +app.delete("/api/delete/:emailAddress", (req, res) => { + const ea = req.params.emailAddress; + console.log(ea) + const sqlDelete = "DELETE FROM banned WHERE email_address = ?"; + db.query(sqlDelete, [ea], (err, result) => { + if(err) throw err + console.log("Server: deleted: ", ea) + res.send(result) + }) +}) + +// UPDATE Ban +app.put("/api/update", (req, res) => { + // console.log(req) + + const ne = req.body.new; + const oe = req.body.old; + console.log("Ready to change: ", oe, "to", ne) + const sqlUpdate = "UPDATE banned SET email_address = ? WHERE email_address = ?" + db.query(sqlUpdate, [ne, oe], (err, result)=>{ + if(err) throw err; + console.log("Server changed: ", oe, "to", ne) + res.send(result) + }) +}) + + + + const PORT = process.env.EXPRESSPORT; const msg = `Running on PORT ${PORT}` app.get("/", (req, res) => { From 3b2e9e0e953906c128fabc6bdf16fe11c5347d5a Mon Sep 17 00:00:00 2001 From: DrDisturbance Date: Thu, 1 Dec 2022 14:22:09 -0700 Subject: [PATCH 05/90] this --- client/src/components/BanEntry.jsx | 2 +- client/src/components/CurrentEntries.jsx | 101 +++++++++++++++++++++++ server/index.js | 8 +- 3 files changed, 106 insertions(+), 5 deletions(-) diff --git a/client/src/components/BanEntry.jsx b/client/src/components/BanEntry.jsx index 6b2761f..193a24b 100644 --- a/client/src/components/BanEntry.jsx +++ b/client/src/components/BanEntry.jsx @@ -14,7 +14,7 @@ const BanEntry = () => { // CREATE (POST) function submitEntry() { - axios.post(`${process.env.REACT_APP_HOST}/api/create`, { first: firstName, last: lastName, email: emailAddress }).then((response) => { + axios.post(`${process.env.REACT_APP_HOST}/api/createban`, { first: firstName, last: lastName, email: emailAddress }).then((response) => { setEntryList([...entryList, { first_name: firstName, last_name: lastName, email_address: emailAddress }] ) }) diff --git a/client/src/components/CurrentEntries.jsx b/client/src/components/CurrentEntries.jsx index e1cc966..414a82f 100644 --- a/client/src/components/CurrentEntries.jsx +++ b/client/src/components/CurrentEntries.jsx @@ -62,6 +62,61 @@ const CurrentEntries = () => { } } + + ////////////////////////////////////////////////////////////////////////////////////////////////////// + // READ (GET) BANNED USERS + useEffect(() => { + axios.get(`${process.env.REACT_APP_HOST}/api/readban`).then((response) => { + setEntryList(response.data) + }) + }, []) + + function getObjectByValue(objVal) { + let objectWithValue = {} + entryList.forEach(entry => { + if (Object.values(entry).indexOf(objVal) > -1) { // email value is inside obj inside array + console.log('entry', entry) + objectWithValue = entry + } + }) + return objectWithValue + } + + // DELETE + const deleteEntryban = (email) => { // deletes ALL such email instances in the database + axios.delete(`${process.env.REACT_APP_HOST}/api/deleteban/${email}`).then((response) => { + let objToDelete = getObjectByValue(email) + const index = entryList.indexOf(objToDelete) // deletes ONE instance in the state var + if (index > -1) { + let entryListCopy = [...entryList] // copy + entryListCopy.splice(index, 1) // remove index + setEntryList(entryListCopy) + } + }) //close .then() + } + + // UPDATE (PUT) + const updateEmailban = (email) => { // replaces ALL such email instances in the database + axios.put(`${process.env.REACT_APP_HOST}/api/updateban`, { old: email, new: newEmail }).then((response) => { + let objToChange = getObjectByValue(email) + const index = entryList.indexOf(objToChange) // deletes ONE instance in the state var + objToChange.email_address = newEmail + if (index > -1) { + let entryListCopy = [...entryList] + entryListCopy[index] = objToChange + setEntryList(entryListCopy) + } + }) //close .then() + + setNewEmailban('') // clear all update email input fields + let updateInputs = document.getElementsByClassName('updateInputban'); + for (let i = 0; i < updateInputs.length; i++) { + updateInputs[i].value = '' + } + } + ////////////////////////////////////////////////////////////////////////////////////////////////////// + + const refPass = useRef(null); function handleEditList(e) { @@ -171,7 +226,53 @@ const CurrentEntries = () => {
+ + ///////////////////////////////////////////////////////////////////////////////////// + +

Banned Entries

+
+ {entryList.map((val, k) => { + return (
+
{val.last_name}, {val.first_name} {val.email_address}
+ +
+ + + + + + + setNewEmail(e.target.value)} /> +
+
) + + })} +
+ + + abortPasscodeAttempt(e.target.value)} /> +
+ + +
+ + //////////////////////////////////////////////////////////////////////////////////// + + ) } diff --git a/server/index.js b/server/index.js index 2b9ec51..a88f338 100644 --- a/server/index.js +++ b/server/index.js @@ -71,7 +71,7 @@ app.put("/api/update", (req, res) => { // READ Ban -app.get("/api/read", (req, res) => { +app.getban("/api/readban", (req, res) => { const sqlSelect = "SELECT * FROM banned;" db.query(sqlSelect, (err, result) => { if(err){ @@ -82,7 +82,7 @@ app.get("/api/read", (req, res) => { }) // CREATE Ban -app.post("/api/create", (req, res) => { +app.postban("/api/createban", (req, res) => { const fn = req.body.first const ln = req.body.last const ea = req.body.email @@ -104,7 +104,7 @@ app.post("/api/create", (req, res) => { }) // DELETE Ban -app.delete("/api/delete/:emailAddress", (req, res) => { +app.deleteban("/api/deleteban/:emailAddress", (req, res) => { const ea = req.params.emailAddress; console.log(ea) const sqlDelete = "DELETE FROM banned WHERE email_address = ?"; @@ -116,7 +116,7 @@ app.delete("/api/delete/:emailAddress", (req, res) => { }) // UPDATE Ban -app.put("/api/update", (req, res) => { +app.putban("/api/updateban", (req, res) => { // console.log(req) const ne = req.body.new; From 40d5386ab8503c717a92237579d4de30044abb4a Mon Sep 17 00:00:00 2001 From: Isabel Nelson Date: Thu, 1 Dec 2022 14:35:51 -0700 Subject: [PATCH 06/90] image and styling --- client/public/index.html | 1 + client/src/components/App/App.css | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/client/public/index.html b/client/public/index.html index d79ba00..1710b8a 100644 --- a/client/public/index.html +++ b/client/public/index.html @@ -11,6 +11,7 @@ +
` diff --git a/client/src/components/App/App.css b/client/src/components/App/App.css index abe8f84..5468d34 100644 --- a/client/src/components/App/App.css +++ b/client/src/components/App/App.css @@ -1,6 +1,13 @@ body { margin:0 10px; } + +#BSF_Logo{ + padding: 50px; + width: 50%; +} + + .App { font-family: Arial, Helvetica, sans-serif; max-width:600px; From 25afa1c9f9c19ec9aeaed6b7b4957ca0f837955c Mon Sep 17 00:00:00 2001 From: Isabel Nelson Date: Thu, 1 Dec 2022 14:39:24 -0700 Subject: [PATCH 07/90] image redo --- client/src/components/App/App.css | 1 - 1 file changed, 1 deletion(-) diff --git a/client/src/components/App/App.css b/client/src/components/App/App.css index 5468d34..ab6e567 100644 --- a/client/src/components/App/App.css +++ b/client/src/components/App/App.css @@ -7,7 +7,6 @@ body { width: 50%; } - .App { font-family: Arial, Helvetica, sans-serif; max-width:600px; From 20a13e7ba9c511f31cecb011bc3b917b487ef36e Mon Sep 17 00:00:00 2001 From: Isabel Nelson Date: Thu, 1 Dec 2022 14:40:11 -0700 Subject: [PATCH 08/90] image redo --- client/public/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/public/index.html b/client/public/index.html index 1710b8a..85c2eaa 100644 --- a/client/public/index.html +++ b/client/public/index.html @@ -11,7 +11,7 @@ - +
` From 05c2075edac62f1a5bd093e7e8731b39282feff2 Mon Sep 17 00:00:00 2001 From: DrDisturbance Date: Thu, 1 Dec 2022 14:40:40 -0700 Subject: [PATCH 09/90] Revert "this" This reverts commit 3b2e9e0e953906c128fabc6bdf16fe11c5347d5a. --- client/src/components/BanEntry.jsx | 2 +- client/src/components/CurrentEntries.jsx | 101 ----------------------- server/index.js | 8 +- 3 files changed, 5 insertions(+), 106 deletions(-) diff --git a/client/src/components/BanEntry.jsx b/client/src/components/BanEntry.jsx index 193a24b..6b2761f 100644 --- a/client/src/components/BanEntry.jsx +++ b/client/src/components/BanEntry.jsx @@ -14,7 +14,7 @@ const BanEntry = () => { // CREATE (POST) function submitEntry() { - axios.post(`${process.env.REACT_APP_HOST}/api/createban`, { first: firstName, last: lastName, email: emailAddress }).then((response) => { + axios.post(`${process.env.REACT_APP_HOST}/api/create`, { first: firstName, last: lastName, email: emailAddress }).then((response) => { setEntryList([...entryList, { first_name: firstName, last_name: lastName, email_address: emailAddress }] ) }) diff --git a/client/src/components/CurrentEntries.jsx b/client/src/components/CurrentEntries.jsx index 414a82f..e1cc966 100644 --- a/client/src/components/CurrentEntries.jsx +++ b/client/src/components/CurrentEntries.jsx @@ -62,61 +62,6 @@ const CurrentEntries = () => { } } - - ////////////////////////////////////////////////////////////////////////////////////////////////////// - // READ (GET) BANNED USERS - useEffect(() => { - axios.get(`${process.env.REACT_APP_HOST}/api/readban`).then((response) => { - setEntryList(response.data) - }) - }, []) - - function getObjectByValue(objVal) { - let objectWithValue = {} - entryList.forEach(entry => { - if (Object.values(entry).indexOf(objVal) > -1) { // email value is inside obj inside array - console.log('entry', entry) - objectWithValue = entry - } - }) - return objectWithValue - } - - // DELETE - const deleteEntryban = (email) => { // deletes ALL such email instances in the database - axios.delete(`${process.env.REACT_APP_HOST}/api/deleteban/${email}`).then((response) => { - let objToDelete = getObjectByValue(email) - const index = entryList.indexOf(objToDelete) // deletes ONE instance in the state var - if (index > -1) { - let entryListCopy = [...entryList] // copy - entryListCopy.splice(index, 1) // remove index - setEntryList(entryListCopy) - } - }) //close .then() - } - - // UPDATE (PUT) - const updateEmailban = (email) => { // replaces ALL such email instances in the database - axios.put(`${process.env.REACT_APP_HOST}/api/updateban`, { old: email, new: newEmail }).then((response) => { - let objToChange = getObjectByValue(email) - const index = entryList.indexOf(objToChange) // deletes ONE instance in the state var - objToChange.email_address = newEmail - if (index > -1) { - let entryListCopy = [...entryList] - entryListCopy[index] = objToChange - setEntryList(entryListCopy) - } - }) //close .then() - - setNewEmailban('') // clear all update email input fields - let updateInputs = document.getElementsByClassName('updateInputban'); - for (let i = 0; i < updateInputs.length; i++) { - updateInputs[i].value = '' - } - } - ////////////////////////////////////////////////////////////////////////////////////////////////////// - - const refPass = useRef(null); function handleEditList(e) { @@ -226,53 +171,7 @@ const CurrentEntries = () => { - - ///////////////////////////////////////////////////////////////////////////////////// - -

Banned Entries

-
- {entryList.map((val, k) => { - return (
-
{val.last_name}, {val.first_name} {val.email_address}
- -
- - - - - - - setNewEmail(e.target.value)} /> -
-
) - - })} -
- - - abortPasscodeAttempt(e.target.value)} /> -
- - -
- - //////////////////////////////////////////////////////////////////////////////////// - - ) } diff --git a/server/index.js b/server/index.js index a88f338..2b9ec51 100644 --- a/server/index.js +++ b/server/index.js @@ -71,7 +71,7 @@ app.put("/api/update", (req, res) => { // READ Ban -app.getban("/api/readban", (req, res) => { +app.get("/api/read", (req, res) => { const sqlSelect = "SELECT * FROM banned;" db.query(sqlSelect, (err, result) => { if(err){ @@ -82,7 +82,7 @@ app.getban("/api/readban", (req, res) => { }) // CREATE Ban -app.postban("/api/createban", (req, res) => { +app.post("/api/create", (req, res) => { const fn = req.body.first const ln = req.body.last const ea = req.body.email @@ -104,7 +104,7 @@ app.postban("/api/createban", (req, res) => { }) // DELETE Ban -app.deleteban("/api/deleteban/:emailAddress", (req, res) => { +app.delete("/api/delete/:emailAddress", (req, res) => { const ea = req.params.emailAddress; console.log(ea) const sqlDelete = "DELETE FROM banned WHERE email_address = ?"; @@ -116,7 +116,7 @@ app.deleteban("/api/deleteban/:emailAddress", (req, res) => { }) // UPDATE Ban -app.putban("/api/updateban", (req, res) => { +app.put("/api/update", (req, res) => { // console.log(req) const ne = req.body.new; From 42e828b8a16639f5a0fd7bfc76098b31fd7908c2 Mon Sep 17 00:00:00 2001 From: Isabel Nelson Date: Thu, 1 Dec 2022 14:44:29 -0700 Subject: [PATCH 10/90] image2.0 --- client/public/BSF_Image.jpg | Bin 0 -> 165734 bytes client/public/index.html | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 client/public/BSF_Image.jpg diff --git a/client/public/BSF_Image.jpg b/client/public/BSF_Image.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3fcdd0be72f7287d372e931bd0e90c48716800ef GIT binary patch literal 165734 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
jZWr?rvkMAq%rIDXe(z^ah$s(TanN z->bd!J`-}8mk&jLFsBxlfXxO=ROXg!iM;l$%fcR)XM2Ei)f)t#tk9Lq`7?>4F+BeC zTud^jW~2qw&*-3==-LuCC#lt|MoZv65r*Kv7L(2Ew^N;TFyFKK2BQVS#7m;i>-P8U zcOo-a<*vM7Ki9diWg&$^-Qi@9h1B=5Z1H%_x%)6na7UYN zvtahrI)~mxHabe|14oiC8|6k@Eb%upy@zo}tM0A{MLi3_=Pu(Grn3= zCl{nK6;^7jVnK>1dY(ihjTV!TMhM+4D&S`3{8awez`J8Dl1^2I9TFOG2mNcwup-lm zN?EpFxMa#d1M&5MtCg73-c^#LZZsW^2IP8-OqM6Z-n3|!U6Tm9;iPq2S^Svm>{%~F z^4Kh$JsDod>vK}^{B;SM=)V}P^5DYxI$K@6FfGp_wn=I3v&OyIUV($ddLFedVVT<+ zWQKYGp*?vQ8Xx@Biy(zr42)hoGXsPxxhHExhi-f|TI^YGRPTUjBd5Q?l**DVB>v+B z^{-|Ae`SdWnN`EDAX(HwyUtB$<~>PoB;|N%_u~%$V^QzYCG~#$iDk+Ob~keN)6u}H z@c7HOXCOQo|-vCE(R zj0jOQJxT85eMgDT&qno2KuRW>uwGYT+)9nbmVtDsX$@KOUqqmEMTdIbg?O=Xk8H_g zA2CIH279@SeS^~#6*(ZLch)YAB5KntRTuP_oM<~?7N%Q=2dno`N&MAK*v>jq1fgEb zuIR2}=@?P?vZ6rtM09{9H~Yh{2d%>Xdwozy&XJ6YK7mqSOk-v}%oEi%rUP<>ot1|!GfohG)l(X(=9ty;JQ!&v&0)ZFcd zYhurUG;UzzIB2TUT*Y-!XCWm##;b-Z<{+!vEM7zoeu?V7rrLa)zP z(AKu?G2YL{=j?#gpZY^fc$V^`QGZghBd`lMk(j%)sa!rJ zpQt+|L&x|XUq)`q>oQ`wo6BK}&!qos4f)gG+kd^jGjY1UU}3@3|NZDmrLhIO6uj0$ zFbLaY3$egAXGHUTG8yzW0JlO?1aN%8Hc=jkHPrr{Sv%gEMuw{YbZyEg=j!pui2>v5 z{5M)fdTG@}E7w8nF?urV)(I%R4w0gmb{{NLlL{AWSHR9Nu>W9ewDrv=Ng_0*h+nEw zGvs|s!s1S?E4L>YnFv0;64BEjXz^TmWp~%j$yqZ%?R-yDyUtJ-y~O4}|I-ig7s^zX z#F*Z04@~~;(9;-$dF~*VsObYHf)_~Bp)vnj46%?VCU+Rv#kT;(KMe3O$v^XWO7 z3y+P`QX0(H=;7OTtmA#Z?()vsLwyI|q^nH4O5)G5GXLCM8qwDQ+=6Y}kM0ae;OO^# zSX!W6)Ovn5tX|xxj_=cnr0K-=>AU$a4!_3keqUUP=VxVnsO7~J`5gqSMM5ckN#_0Z z_)7ixMm!!m)@jU90KX4l!*D~u7Rgzkn$SbLN!F@RDCyOpQ8NC*mffz^WO!80m#m4rhTq1;g7n=3$KDif3Xc2cZEV+k`KP z%Lh?!+9;dVyY?t5Yc1tnRfSx;m@D{9H?vVO@NQju@%&QQZOiy3Qob-mWBwn;UG{mRUOO{NB^snBXCF(z#PY${MqUlyL!U|*@xW+(@c6|!uMtwP}8?5$j+ReA0 zx?uo3-7#w8L?srZ5@*SRKF+egOVp~Q{@^wjc5xf|2Zo2*M_kg1?262fl42f{k*#a) zl1p1L12Fo_Y43K`&+ZL$IpPVbaY62e^q;NiRiL4Mfwt672n~hJcbFu?q%7wln_||O z#iv)FA+R@JuW=_m#`S7Hx>56(?A}zD#!Q9)1xC0!9eohY0i_KLWY*8;#6e*wy+)(C z9(%gJM2(;sT5n9|sbERg)V#Em0sp;Xe-0!qWaAocn+K@-x}YCS|3bU7))a2rt!)hY z2o<0B=r+P7+cKsLdw~<9w@?h%6}Jw!8`yI<;Nw1-Rs+;O%fnV6qY$`ili~UN;xZ

kDhGgEdY?x57Ha}++B@-7-bo~K6X;Ra*Sy+_Y| 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 - +

` From ef03834a953d8317045028cda1a81ccc0a184b5d Mon Sep 17 00:00:00 2001 From: Isabel Nelson Date: Thu, 1 Dec 2022 14:46:20 -0700 Subject: [PATCH 11/90] image3.0 --- client/src/components/App/App.css | 1 + 1 file changed, 1 insertion(+) diff --git a/client/src/components/App/App.css b/client/src/components/App/App.css index ab6e567..1b184d5 100644 --- a/client/src/components/App/App.css +++ b/client/src/components/App/App.css @@ -4,6 +4,7 @@ body { #BSF_Logo{ padding: 50px; + align-items: center; width: 50%; } From 2e17f645239b36145f738576c05924bae08fcae4 Mon Sep 17 00:00:00 2001 From: Isabel Nelson Date: Thu, 1 Dec 2022 14:49:05 -0700 Subject: [PATCH 12/90] image4.0 --- client/src/components/App/App.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/components/App/App.css b/client/src/components/App/App.css index 1b184d5..ef53bff 100644 --- a/client/src/components/App/App.css +++ b/client/src/components/App/App.css @@ -4,7 +4,7 @@ body { #BSF_Logo{ padding: 50px; - align-items: center; + justify-content: center; width: 50%; } From f633f9b13fdc6e040ab95ebd37836fdd62770cb4 Mon Sep 17 00:00:00 2001 From: Isabel Nelson Date: Thu, 1 Dec 2022 15:02:15 -0700 Subject: [PATCH 13/90] image5.0 --- client/src/components/App/App.css | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/client/src/components/App/App.css b/client/src/components/App/App.css index ef53bff..ab330ab 100644 --- a/client/src/components/App/App.css +++ b/client/src/components/App/App.css @@ -4,7 +4,8 @@ body { #BSF_Logo{ padding: 50px; - justify-content: center; + display: flex; + text-align: center; width: 50%; } From 6a580f739363b1498c2da3be79671c10eeb2e247 Mon Sep 17 00:00:00 2001 From: Isabel Nelson Date: Thu, 1 Dec 2022 15:07:18 -0700 Subject: [PATCH 14/90] image6.0 --- client/src/components/App/App.css | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/client/src/components/App/App.css b/client/src/components/App/App.css index ab330ab..fb49f99 100644 --- a/client/src/components/App/App.css +++ b/client/src/components/App/App.css @@ -5,8 +5,9 @@ body { #BSF_Logo{ padding: 50px; display: flex; - text-align: center; width: 50%; + margin-left: auto; + margin-right: auto; } .App { From 7336870718da14eb2744faa2dd7baa11f07924c5 Mon Sep 17 00:00:00 2001 From: Isabel Nelson Date: Thu, 1 Dec 2022 15:13:19 -0700 Subject: [PATCH 15/90] h1-entries --- client/src/components/App/App.css | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/client/src/components/App/App.css b/client/src/components/App/App.css index fb49f99..2562c68 100644 --- a/client/src/components/App/App.css +++ b/client/src/components/App/App.css @@ -10,6 +10,11 @@ body { margin-right: auto; } +h1{ + font-size: 30px; + background-color: darkred; +} + .App { font-family: Arial, Helvetica, sans-serif; max-width:600px; From 68f60f470e1bd8879c9a60f9e5123c15c7777f22 Mon Sep 17 00:00:00 2001 From: Isabel Nelson Date: Thu, 1 Dec 2022 15:14:51 -0700 Subject: [PATCH 16/90] h12.0 --- client/src/components/App/App.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/components/App/App.css b/client/src/components/App/App.css index 2562c68..768a676 100644 --- a/client/src/components/App/App.css +++ b/client/src/components/App/App.css @@ -12,7 +12,7 @@ body { h1{ font-size: 30px; - background-color: darkred; + color: rgb(148, 13, 13); } .App { From ef70de4feec785131d6cb2ea6d42675bfcddb5e7 Mon Sep 17 00:00:00 2001 From: Isabel Nelson Date: Thu, 1 Dec 2022 15:15:30 -0700 Subject: [PATCH 17/90] h13.0 --- client/src/components/App/App.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/components/App/App.css b/client/src/components/App/App.css index 768a676..7e2cbfe 100644 --- a/client/src/components/App/App.css +++ b/client/src/components/App/App.css @@ -11,7 +11,7 @@ body { } h1{ - font-size: 30px; + font-size: 75px; color: rgb(148, 13, 13); } From 7d133abf21f06f192340e9c315e950b4ee15dba9 Mon Sep 17 00:00:00 2001 From: Isabel Nelson Date: Thu, 1 Dec 2022 15:16:17 -0700 Subject: [PATCH 18/90] h14.0 --- client/src/components/App/App.css | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/src/components/App/App.css b/client/src/components/App/App.css index 7e2cbfe..85091a9 100644 --- a/client/src/components/App/App.css +++ b/client/src/components/App/App.css @@ -11,8 +11,8 @@ body { } h1{ - font-size: 75px; - color: rgb(148, 13, 13); + font-size: 60px; + color: rgb(167, 17, 17); } .App { From 6a5ca2d308423591f3913c37155931192813b05c Mon Sep 17 00:00:00 2001 From: Isabel Nelson Date: Thu, 1 Dec 2022 15:18:30 -0700 Subject: [PATCH 19/90] font --- client/src/components/App/App.css | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/src/components/App/App.css b/client/src/components/App/App.css index 85091a9..e5064a8 100644 --- a/client/src/components/App/App.css +++ b/client/src/components/App/App.css @@ -11,12 +11,12 @@ body { } h1{ - font-size: 60px; + font-size: 50px; color: rgb(167, 17, 17); } .App { - font-family: Arial, Helvetica, sans-serif; + font-family: "Lucida Console", "Courier New", monospace; max-width:600px; margin: auto; } From 2b72db7abc38df87ec43ffb0be7f2ff0d47bc1d4 Mon Sep 17 00:00:00 2001 From: Isabel Nelson Date: Thu, 1 Dec 2022 15:19:31 -0700 Subject: [PATCH 20/90] font2.0 --- client/src/components/App/App.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/components/App/App.css b/client/src/components/App/App.css index e5064a8..8e33e50 100644 --- a/client/src/components/App/App.css +++ b/client/src/components/App/App.css @@ -16,7 +16,7 @@ h1{ } .App { - font-family: "Lucida Console", "Courier New", monospace; + font-family: "Lucida Console"; max-width:600px; margin: auto; } From 7c268e1a565691cb7284225bf5ae73722426dd02 Mon Sep 17 00:00:00 2001 From: Isabel Nelson Date: Thu, 1 Dec 2022 15:23:59 -0700 Subject: [PATCH 21/90] font3 --- client/src/components/App/App.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/components/App/App.css b/client/src/components/App/App.css index 8e33e50..87a6cee 100644 --- a/client/src/components/App/App.css +++ b/client/src/components/App/App.css @@ -16,7 +16,7 @@ h1{ } .App { - font-family: "Lucida Console"; + font-family: Andale Mono, monospace; max-width:600px; margin: auto; } From 1dfe6ce3f6290da197d0a9059b49130bfb8c12d6 Mon Sep 17 00:00:00 2001 From: Isabel Nelson Date: Thu, 1 Dec 2022 15:29:14 -0700 Subject: [PATCH 22/90] confirm email --- client/src/components/AddEntry.jsx | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/client/src/components/AddEntry.jsx b/client/src/components/AddEntry.jsx index 1f3ab9e..ea70e20 100644 --- a/client/src/components/AddEntry.jsx +++ b/client/src/components/AddEntry.jsx @@ -47,6 +47,10 @@ const AddEntry = () => { setEmailAddress(e.target.value)} /> +
+ + setEmailAddress(e.target.value)} /> +
{ }) }) + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +app.post("/api/addtoban", (req, res) => { + const fn = req.body.first + const ln = req.body.last + const ea = req.body.email + const sqlInsert = "INSERT INTO banned (first_name, last_name, email_address) VALUES (?,?,?);" + db.query(sqlInsert, [fn, ln, ea], (err, result) => { + if(err) throw err + console.log("Server posted: ", fn, ln) + res.send(result) + }) +}) + + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + + + // DELETE Add app.delete("/api/delete/:emailAddress", (req, res) => { const ea = req.params.emailAddress; From 2c597367a49be9d1c562fccbe3cdc84b8f85c4d2 Mon Sep 17 00:00:00 2001 From: Isabel Nelson Date: Tue, 6 Dec 2022 13:43:30 -0700 Subject: [PATCH 64/90] Button front end stuff -Ben --- client/src/components/CurrentEntries.jsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/client/src/components/CurrentEntries.jsx b/client/src/components/CurrentEntries.jsx index e1cc966..08d7bb9 100644 --- a/client/src/components/CurrentEntries.jsx +++ b/client/src/components/CurrentEntries.jsx @@ -141,19 +141,19 @@ const CurrentEntries = () => {
+ }}>DELETE + }}>UPDATE + }}>BAN setNewEmail(e.target.value)} /> From ddae0a4fe3a6277f8c0a6f5f675dd836d9e03ef4 Mon Sep 17 00:00:00 2001 From: Isabel Nelson Date: Tue, 6 Dec 2022 13:48:12 -0700 Subject: [PATCH 65/90] Fixed it (hopefully) -Ben --- client/src/components/App/App.css | 15 +++++++++++++++ client/src/components/CurrentEntries.jsx | 6 +++--- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/client/src/components/App/App.css b/client/src/components/App/App.css index 615c4c1..b3b0b01 100644 --- a/client/src/components/App/App.css +++ b/client/src/components/App/App.css @@ -104,6 +104,21 @@ body { width: 50%; padding: 5px; } +.delete{ + display: none; + color: white; + background-color: rgb(175, 20, 20); +} +.update{ + display: none; + color: white; + background-color: rgb(175, 20, 20); +} +.ban{ + display: none; + color: white; + background-color: rgb(175, 20, 20); +} #doneButton{ display: none; color: white; diff --git a/client/src/components/CurrentEntries.jsx b/client/src/components/CurrentEntries.jsx index 528ac4e..32d8bb2 100644 --- a/client/src/components/CurrentEntries.jsx +++ b/client/src/components/CurrentEntries.jsx @@ -194,19 +194,19 @@ const CurrentEntries = () => {
+ }}>Delete + }}>Update + }}>Ban setNewEmail(e.target.value)} /> From c77988454c24b02ea327ba8185ce0d344a3b87fa Mon Sep 17 00:00:00 2001 From: Isabel Nelson Date: Tue, 6 Dec 2022 13:49:18 -0700 Subject: [PATCH 66/90] Okay actually fixed it --- client/src/components/App/App.css | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/src/components/App/App.css b/client/src/components/App/App.css index b3b0b01..bd0c775 100644 --- a/client/src/components/App/App.css +++ b/client/src/components/App/App.css @@ -104,7 +104,7 @@ body { width: 50%; padding: 5px; } -.delete{ +/* .delete{ display: none; color: white; background-color: rgb(175, 20, 20); @@ -118,7 +118,7 @@ body { display: none; color: white; background-color: rgb(175, 20, 20); -} +} */ #doneButton{ display: none; color: white; From 531b5432c49b2c31c7971bfce90bbf8e7aebd02c Mon Sep 17 00:00:00 2001 From: Isabel Nelson Date: Tue, 6 Dec 2022 13:51:08 -0700 Subject: [PATCH 67/90] IDK ANYMORE HONESTLY -Ben --- client/src/components/CurrentEntries.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/components/CurrentEntries.jsx b/client/src/components/CurrentEntries.jsx index 32d8bb2..a40d1b1 100644 --- a/client/src/components/CurrentEntries.jsx +++ b/client/src/components/CurrentEntries.jsx @@ -202,7 +202,7 @@ const CurrentEntries = () => { } }}>Update - - - - - - - - - - - - - - - - - - - - -
) + })} +

Banned Entries

+ {bannedentryList.map((val, k) => { + return (
+
{val.last_name}, {val.first_name} {val.email_address}
+ +
+ + + + setNewEmail(e.target.value)} /> +
+
) + })}
@@ -221,6 +324,11 @@ const CurrentEntries = () => {
+ + + + + ) diff --git a/server/index.js b/server/index.js index d1c5071..8841879 100644 --- a/server/index.js +++ b/server/index.js @@ -59,6 +59,29 @@ app.post("/api/addtoban", (req, res) => { }) +app.delete("/api/deleteban/:emailAddress", (req, res) => { + const ea = req.params.emailAddress; + console.log(ea) + const sqlDelete = "DELETE FROM banned WHERE email_address = ?"; + db.query(sqlDelete, [ea], (err, result) => { + if(err) throw err + console.log("Server: deleted: ", ea) + res.send(result) + }) +}) + +// READ Add +app.get("/api/readbanned", (req, res) => { + const sqlSelect = "SELECT * FROM banned;" + db.query(sqlSelect, (err, result) => { + if(err){ + throw err; + } + res.send(result); + }) +}) + + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// From f07a5bbda91c70021c8da7ef7345dc829fa47ed7 Mon Sep 17 00:00:00 2001 From: DrDisturbance Date: Tue, 6 Dec 2022 15:59:16 -0700 Subject: [PATCH 86/90] Push --- client/src/components/App/App.css | 27 ------------------------ client/src/components/CurrentEntries.jsx | 17 +++++---------- 2 files changed, 5 insertions(+), 39 deletions(-) diff --git a/client/src/components/App/App.css b/client/src/components/App/App.css index 3bb89da..615c4c1 100644 --- a/client/src/components/App/App.css +++ b/client/src/components/App/App.css @@ -68,23 +68,11 @@ body { color: white; background-color: rgb(175, 20, 20);; } -.ban{ - color: white; - background-color: rgb(175, 20, 20);; -} #editButton{ color: white; background-color: rgb(175, 20, 20);; } -.update{ - color: white; - background-color: rgb(175, 20, 20); -} -.delete{ - color: white; - background-color: rgb(175, 20, 20); -} .editField{ margin: 20px 0; @@ -121,21 +109,6 @@ body { color: white; background-color: rgb(175, 20, 20); } -#banButton{ - display: none; - color: white; - background-color: rgb(175, 20, 20); -} -#updateButton{ - display: none; - color: white; - background-color: rgb(175, 20, 20); -} -#deleteButton{ - display: none; - color: white; - background-color: rgb(175, 20, 20); -} #editPasscodeInput{ visibility: hidden; width: 50%; diff --git a/client/src/components/CurrentEntries.jsx b/client/src/components/CurrentEntries.jsx index f919298..d4dd2b5 100644 --- a/client/src/components/CurrentEntries.jsx +++ b/client/src/components/CurrentEntries.jsx @@ -266,11 +266,6 @@ const CurrentEntries = () => { editPasscodeInput.style.visibility = 'hidden' } } - var buttonStyle = { - color: 'white', - backgroundColor : 'rgb(175, 20, 20)', - display: 'none' - } return ( @@ -285,19 +280,17 @@ const CurrentEntries = () => {
+ }}>delete - + }}>update + + banEmail(val.email_address, val.last_name, val.first_name); + }}>ban setNewEmail(e.target.value)} /> From 2d1f4c48399c16917416297876ce0cf3d3fea475 Mon Sep 17 00:00:00 2001 From: Bennett Sampson Date: Tue, 6 Dec 2022 16:03:59 -0700 Subject: [PATCH 87/90] Button styling --- client/src/components/App/App.css | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/client/src/components/App/App.css b/client/src/components/App/App.css index 615c4c1..5d61567 100644 --- a/client/src/components/App/App.css +++ b/client/src/components/App/App.css @@ -68,12 +68,18 @@ body { color: white; background-color: rgb(175, 20, 20);; } - #editButton{ color: white; - background-color: rgb(175, 20, 20);; + background-color: rgb(175, 20, 20); +} +.update{ + color: white; + background-color: rgb(175, 20, 20); +} +.delete{ + color: white; + background-color: rgb(175, 20, 20); } - .editField{ margin: 20px 0; } From d991134a14104fa09dd6e263bcb696b89ebe24a2 Mon Sep 17 00:00:00 2001 From: Bennett Sampson Date: Tue, 6 Dec 2022 16:05:03 -0700 Subject: [PATCH 88/90] Capitals are nice --- client/src/components/CurrentEntries.jsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/client/src/components/CurrentEntries.jsx b/client/src/components/CurrentEntries.jsx index d4dd2b5..87b4d95 100644 --- a/client/src/components/CurrentEntries.jsx +++ b/client/src/components/CurrentEntries.jsx @@ -280,17 +280,17 @@ const CurrentEntries = () => {
+ }}>Detele + }}>Update + }}>Ban setNewEmail(e.target.value)} /> @@ -307,7 +307,7 @@ const CurrentEntries = () => { + }}>Unban setNewEmail(e.target.value)} /> From ad4fbbe5009e62831f94bbf0166e92f24feae918 Mon Sep 17 00:00:00 2001 From: Bennett Sampson Date: Tue, 6 Dec 2022 16:18:29 -0700 Subject: [PATCH 89/90] displaying banned --- server/index.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/server/index.js b/server/index.js index 8841879..237a111 100644 --- a/server/index.js +++ b/server/index.js @@ -123,5 +123,4 @@ app.get("/", (req, res) => { }) app.listen(PORT, () => { console.log(msg) -}) - +}) \ No newline at end of file From 681137f76090344220ab8ccf41dc3208547f8275 Mon Sep 17 00:00:00 2001 From: Bennett Sampson Date: Tue, 6 Dec 2022 16:24:31 -0700 Subject: [PATCH 90/90] index --- server/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/server/index.js b/server/index.js index 237a111..8841879 100644 --- a/server/index.js +++ b/server/index.js @@ -123,4 +123,5 @@ app.get("/", (req, res) => { }) app.listen(PORT, () => { console.log(msg) -}) \ No newline at end of file +}) +