From 1b167b60f17e1377731371262cb8165d5109a827 Mon Sep 17 00:00:00 2001 From: JustIceO7 Date: Tue, 11 Feb 2025 23:08:26 +0000 Subject: [PATCH] FEAT: OAuth now redirects to last URL signed in UPDATE: Created the page to display lists of categories --- frontend/src/App.tsx | 2 ++ frontend/src/components/Auth/OAuth.tsx | 3 ++- frontend/src/pages/CategoriesPage.tsx | 11 +++++++++++ web_server/blueprints/oauth.py | 8 +++++--- web_server/database/app.db | Bin 159744 -> 159744 bytes 5 files changed, 20 insertions(+), 4 deletions(-) create mode 100644 frontend/src/pages/CategoriesPage.tsx diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 7786faf..52147d1 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -8,6 +8,7 @@ import NotFoundPage from "./pages/NotFoundPage"; import UserPage from "./pages/UserPage"; import ResetPasswordPage from "./pages/ResetPasswordPage"; import CategoryPage from "./pages/CategoryPage"; +import CategoriesPage from "./pages/CategoriesPage"; function App() { const [isLoggedIn, setIsLoggedIn] = useState(false); @@ -44,6 +45,7 @@ function App() { } /> }> }> + }> } /> diff --git a/frontend/src/components/Auth/OAuth.tsx b/frontend/src/components/Auth/OAuth.tsx index 7f89aff..a9c71d8 100644 --- a/frontend/src/components/Auth/OAuth.tsx +++ b/frontend/src/components/Auth/OAuth.tsx @@ -3,7 +3,8 @@ import { useEffect } from "react"; export default function GoogleLogin() { const handleLoginClick = (e: React.MouseEvent) => { e.preventDefault(); - window.location.href = "/api/login/google"; + const nextUrl = encodeURIComponent(window.location.href); + window.location.href = `/api/login/google?next=${nextUrl}`; }; return ( diff --git a/frontend/src/pages/CategoriesPage.tsx b/frontend/src/pages/CategoriesPage.tsx new file mode 100644 index 0000000..b212061 --- /dev/null +++ b/frontend/src/pages/CategoriesPage.tsx @@ -0,0 +1,11 @@ +import React from 'react'; + +const CategoriesPage: React.FC = () => { + return ( +
+

Categories Page

+
+ ); +}; + +export default CategoriesPage; diff --git a/web_server/blueprints/oauth.py b/web_server/blueprints/oauth.py index 11821dd..a40057d 100644 --- a/web_server/blueprints/oauth.py +++ b/web_server/blueprints/oauth.py @@ -1,5 +1,5 @@ from authlib.integrations.flask_client import OAuth, OAuthError -from flask import Blueprint, jsonify, session, redirect +from flask import Blueprint, jsonify, session, redirect, request from blueprints.user import get_session_info_email from database.database import Database from secrets import token_hex, token_urlsafe @@ -31,6 +31,8 @@ def login_google(): """ # Creates nonce to be sent session["nonce"] = token_urlsafe(16) + session["origin"] = request.args.get("next") + return google.authorize_redirect( 'http://127.0.0.1:8080/api/google_auth', nonce=session['nonce'] @@ -82,12 +84,12 @@ def google_auth(): ) user_data = get_session_info_email(user_email) + origin = session.pop("origin", "http://127.0.0.1:8080/") session.clear() session["username"] = user_data["username"] session["user_id"] = user_data["user_id"] - # TODO: redirect back to original page user started on, or other pages based on success failure of login - return redirect("http://127.0.0.1:8080/") + return redirect(origin) except OAuthError as e: return jsonify({ diff --git a/web_server/database/app.db b/web_server/database/app.db index b848ec4ea1107114b4a103eefd17af2658fb73e3..11b7e4e28c2a00b569807a9e666253379931cbaa 100644 GIT binary patch delta 262 zcmV+h0r~!b;0b`>36L8RT>t<8CjbBd7XSbN0ssI5d66tL0bQ|RsXq(l58DsX562Jn z54y7vAgK?Ny-zs-2DA514ZsEr0~`Pku9plD0UEa?5CO>u0t_v;?-&6-0|XAz0x`ES z90A@#0Rp!XPyz4{wr~Lf5Ge}!01yRM01uoGG7hv3K@HIjWeS1{5($k75D1zGC&^lh6qS zlN=3;DIi2eMnP3fR3Il*XlZjGb#rBMAY^Z4b0BVSbRcM9c4Z)8AVO(xE+>36L8RSpWb4CjbBd7XSbN0ssI5cabbJ0a>wNsXq(#59JTr577_D z54y7vAgK?Ny-zs-0kii{4ZsKu0~`Pkt_&@g3J?Jrw-;Dtw;=t`P^Z)<=