chore: fix auth status checks

This commit is contained in:
Steven 2023-12-06 23:03:24 +08:00
parent fa6693a7ae
commit 33dda9bf87
5 changed files with 65 additions and 10 deletions

View File

@ -14,6 +14,9 @@ func (s *APIV2Service) GetAuthStatus(ctx context.Context, _ *apiv2pb.GetAuthStat
if err != nil {
return nil, status.Errorf(codes.Unauthenticated, "failed to get current user: %v", err)
}
if user == nil {
return nil, status.Errorf(codes.Unauthenticated, "user not found")
}
return &apiv2pb.GetAuthStatusResponse{
User: convertUserFromStore(user),
}, nil

View File

@ -21,7 +21,7 @@ import { useTranslate } from "@/utils/i18n";
const DailyReview = () => {
const t = useTranslate();
const memoStore = useMemoStore();
const user = useCurrentUser();
const currentUser = useCurrentUser();
const currentDateStamp = getDateStampByDate(getNormalizedDateString()) as number;
const [selectedDateStamp, setSelectedDateStamp] = useState<number>(currentDateStamp as number);
const [showDatePicker, toggleShowDatePicker] = useToggle(false);
@ -31,7 +31,7 @@ const DailyReview = () => {
const selectedDateStampWithOffset = selectedDateStamp;
return (
m.rowStatus === "NORMAL" &&
m.creatorUsername === extractUsernameFromName(user.name) &&
m.creatorUsername === extractUsernameFromName(currentUser.name) &&
displayTimestamp >= selectedDateStampWithOffset &&
displayTimestamp < selectedDateStampWithOffset + DAILY_TIMESTAMP
);

View File

@ -27,10 +27,10 @@ const MemoDetail = () => {
const t = useTranslate();
const params = useParams();
const navigateTo = useNavigateTo();
const currentUser = useCurrentUser();
const globalStore = useGlobalStore();
const memoStore = useMemoStore();
const userV1Store = useUserV1Store();
const currentUser = useCurrentUser();
const [creator, setCreator] = useState<User>();
const { systemStatus } = globalStore.state;
const memoId = Number(params.memoId);
@ -101,7 +101,7 @@ const MemoDetail = () => {
};
const disableOption = (v: string) => {
const isAdminOrHost = currentUser.role === User_Role.ADMIN || currentUser.role === User_Role.HOST;
const isAdminOrHost = currentUser?.role === User_Role.ADMIN || currentUser?.role === User_Role.HOST;
if (v === "PUBLIC" && !isAdminOrHost) {
return systemStatus.disablePublicMemos;

View File

@ -0,0 +1,27 @@
import { useEffect } from "react";
import useCurrentUser from "@/hooks/useCurrentUser";
import useNavigateTo from "@/hooks/useNavigateTo";
interface Props {
children: React.ReactNode;
}
const AuthStatusProvider = (props: Props) => {
const navigateTo = useNavigateTo();
const currentUser = useCurrentUser();
useEffect(() => {
if (!currentUser) {
// If not logged in, redirect to explore page by default.
navigateTo("/explore");
}
}, []);
if (!currentUser) {
return null;
}
return <>{props.children}</>;
};
export default AuthStatusProvider;

View File

@ -2,6 +2,7 @@ import { lazy } from "react";
import { createBrowserRouter } from "react-router-dom";
import App from "@/App";
import { initialGlobalState } from "@/store/module";
import AuthStatusProvider from "./AuthStatusProvider";
const Root = lazy(() => import("@/layouts/Root"));
const SignIn = lazy(() => import("@/pages/SignIn"));
@ -52,27 +53,51 @@ const router = createBrowserRouter([
children: [
{
path: "",
element: <Home />,
element: (
<AuthStatusProvider>
<Home />
</AuthStatusProvider>
),
},
{
path: "review",
element: <DailyReview />,
element: (
<AuthStatusProvider>
<DailyReview />
</AuthStatusProvider>
),
},
{
path: "resources",
element: <Resources />,
element: (
<AuthStatusProvider>
<Resources />
</AuthStatusProvider>
),
},
{
path: "inbox",
element: <Inboxes />,
element: (
<AuthStatusProvider>
<Inboxes />
</AuthStatusProvider>
),
},
{
path: "archived",
element: <Archived />,
element: (
<AuthStatusProvider>
<Archived />
</AuthStatusProvider>
),
},
{
path: "setting",
element: <Setting />,
element: (
<AuthStatusProvider>
<Setting />
</AuthStatusProvider>
),
},
{
path: "explore",