From ec174fb1128bc3b21503b74e33d30f75163832a3 Mon Sep 17 00:00:00 2001 From: Kyle Slugg Date: Thu, 18 May 2023 10:37:20 -0400 Subject: [PATCH 1/3] a --- .../MainContainer/MainContainer.jsx | 2 +- server/routes/authenticationRouter.js | 23 +++++++++++++------ server/routes/snippetsRouter.js | 7 +++--- webpack.config.js | 22 ++++++++---------- 4 files changed, 31 insertions(+), 23 deletions(-) diff --git a/client/src/containers/MainContainer/MainContainer.jsx b/client/src/containers/MainContainer/MainContainer.jsx index 1dfa4e2..e0e5465 100644 --- a/client/src/containers/MainContainer/MainContainer.jsx +++ b/client/src/containers/MainContainer/MainContainer.jsx @@ -35,7 +35,7 @@ const MainContainer = () => { }); //Bypass login requirement: - setLogin(true); + //setLogin(true); }; //functino to handle showing the signup page const handleHaveAccount = () => setHaveAccount(false); diff --git a/server/routes/authenticationRouter.js b/server/routes/authenticationRouter.js index da22d68..345e6b9 100644 --- a/server/routes/authenticationRouter.js +++ b/server/routes/authenticationRouter.js @@ -16,25 +16,34 @@ router.post( '/login', passport.authenticate('local', { session: false }), (req, res) => { + console.log(req.user); const token = jwt.sign({ userId: req.user.id }, secret, { - expiresIn: '1d', + expiresIn: '1d' }); res.cookie('token', token, { - expires: new Date(Date.now() + 30 * 24 * 60 * 60 * 1000),// Expires in 30 days - httpOnly: true + expires: new Date(Date.now() + 30 * 24 * 60 * 60 * 1000), // Expires in 30 days + httpOnly: true }); res.cookie('test', 'test', { domain: 'localhost', path: '/' }); + res.cookie('userID', req.user.id, { + expires: new Date(Date.now() + 30 * 24 * 60 * 60 * 1000), // Expires in 30 days + httpOnly: true + }); return res.status(202).json({ token }); } ); -router.get('/protected', passport.authenticate('jwt', {session: false }), (req, res) => { - console.log('at protected router, SUCCESS!'); - res.send('Protected route accessed!'); -}); +router.get( + '/protected', + passport.authenticate('jwt', { session: false }), + (req, res) => { + console.log('at protected router, SUCCESS!'); + res.send('Protected route accessed!'); + } +); router.get('/', authenticationController.getUserData, (req, res) => { res.status(200).json(res.locals.userData); diff --git a/server/routes/snippetsRouter.js b/server/routes/snippetsRouter.js index c6428f5..5cea86f 100644 --- a/server/routes/snippetsRouter.js +++ b/server/routes/snippetsRouter.js @@ -8,12 +8,13 @@ const router = express.Router(); //In the future, this should be refactored as a route to explicitly load all user data //in the context of a separate user route and user controller -router.get('/', snippetsController.getSnippetsByUser, (req, res) => +router.get('/', snippetsController.getSnippetsByUser, (req, res) => { + console.log(req.cookies); res.status(200).json({ snippets: res.locals.allSnippets, tagsLangs: res.locals.userTagsLangs - }) -); + }); +}); router.post( '/', diff --git a/webpack.config.js b/webpack.config.js index 57743ec..07cb8ec 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -14,7 +14,7 @@ module.exports = { rules: [ { test: /\.(png|jp(e*)g|svg|gif)$/, - type: 'asset/resource', + type: 'asset/resource' }, { test: /\.jsx?/, @@ -24,27 +24,25 @@ module.exports = { options: { presets: [ '@babel/preset-env', - ['@babel/preset-react', { runtime: 'automatic' }], - ], - }, - }, + ['@babel/preset-react', { runtime: 'automatic' }] + ] + } + } }, { test: /\.s?css/, - use: [ - 'style-loader', 'css-loader', 'sass-loader' - ] + use: ['style-loader', 'css-loader', 'sass-loader'] } ] }, plugins: [ new HtmlWebpackPlugin({ title: 'Development', - template:'./public/index.html' + template: './public/index.html' }) ], resolve: { - extensions: ['.js', '.jsx', '.scss'], + extensions: ['.js', '.jsx', '.scss'] }, devServer: { static: { @@ -52,8 +50,8 @@ module.exports = { directory: path.resolve(__dirname, 'dist') }, proxy: { - '/snippets': 'http://localhost:3000' + '/*': 'http://localhost:3000' } }, devtool: 'eval-source-map' -}; \ No newline at end of file +}; From 5453e7e85d749c68f649187c3ae1c87414e95dec Mon Sep 17 00:00:00 2001 From: Kyle Slugg Date: Thu, 18 May 2023 11:06:29 -0400 Subject: [PATCH 2/3] Removed hardcoded user ID; now working with ID cookie --- client/src/components/AddSnippet/AddSnippet.jsx | 6 +----- .../components/SnippetDisplay/SnippetDisplay.jsx | 13 ++++--------- client/src/containers/Sidebar/Sidebar.jsx | 5 +---- server/controllers/snippetsController.js | 12 ++++++------ server/routes/authenticationRouter.js | 2 +- server/routes/snippetsRouter.js | 1 - webpack.config.js | 2 +- 7 files changed, 14 insertions(+), 27 deletions(-) diff --git a/client/src/components/AddSnippet/AddSnippet.jsx b/client/src/components/AddSnippet/AddSnippet.jsx index c92bfa8..c1aa27b 100644 --- a/client/src/components/AddSnippet/AddSnippet.jsx +++ b/client/src/components/AddSnippet/AddSnippet.jsx @@ -28,10 +28,6 @@ const AddSnippet = ({ closeModal, getUserData }) => { const [error, setError] = useState(false); const [openModal, setOpenModal] = useState(false); - //TODO: Pull user info from global state - //FIXME: HARCODING USER INFO FOR NOW - const userId = '6463eb52ab99bf89a84a3ebd'; - function handleSubmit(e) { e.preventDefault(); if (title === '') { @@ -42,7 +38,7 @@ const AddSnippet = ({ closeModal, getUserData }) => { setError(false); } - fetch('/snippets?' + new URLSearchParams({ userId }), { + fetch('/snippets', { method: 'POST', headers: { 'Content-Type': 'application/json' diff --git a/client/src/components/SnippetDisplay/SnippetDisplay.jsx b/client/src/components/SnippetDisplay/SnippetDisplay.jsx index be5818a..85d5f40 100644 --- a/client/src/components/SnippetDisplay/SnippetDisplay.jsx +++ b/client/src/components/SnippetDisplay/SnippetDisplay.jsx @@ -25,18 +25,13 @@ const SnippetDisplay = ({ selectedSnippet, getSnippet }) => { const [copied, setCopied] = useState(false); const [editButtonState, setEditButtonState] = useState(false); const [currentDisplay, setCurrentDisplay] = useState(defaultDisplayValues); - //TODO: Pull userId from global state - //FIXME: HARDCODING USER ID FOR NOW - const userId = '6463eb52ab99bf89a84a3ebd'; - // indSnippet = this.props - // create delete method using fetch request useEffect(() => { setCurrentDisplay(selectedSnippet); }, [selectedSnippet, getSnippet]); - const deleteSnippet = (snippetId, userId) => { - fetch('/snippets?' + new URLSearchParams({ snippetId, userId }), { + const deleteSnippet = (snippetId) => { + fetch('/snippets?' + new URLSearchParams({ snippetId }), { method: 'DELETE' }) .then((response) => { @@ -55,7 +50,7 @@ const SnippetDisplay = ({ selectedSnippet, getSnippet }) => { }; const editSnippet = (snippetId) => { - fetch(`/snippets?${new URLSearchParams({ snippetId, userId })}`, { + fetch(`/snippets?${new URLSearchParams({ snippetId })}`, { method: 'PUT', headers: { 'Content-type': 'application/json' }, body: JSON.stringify(currentDisplay) @@ -174,7 +169,7 @@ const SnippetDisplay = ({ selectedSnippet, getSnippet }) => {