Skip to content

Commit 40d59fc

Browse files
committed
chore: fix user role checks
1 parent 7a9f619 commit 40d59fc

File tree

3 files changed

+9
-3
lines changed

3 files changed

+9
-3
lines changed

Diff for: web/src/components/MemoContent/index.tsx

+2-1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import useCurrentUser from "@/hooks/useCurrentUser";
44
import { useMemoStore } from "@/store/v1";
55
import { Node, NodeType } from "@/types/proto/api/v1/markdown_service";
66
import { useTranslate } from "@/utils/i18n";
7+
import { isSuperUser } from "@/utils/user";
78
import Renderer from "./Renderer";
89
import { RendererContext } from "./types";
910

@@ -33,7 +34,7 @@ const MemoContent: React.FC<Props> = (props: Props) => {
3334
const memoContentContainerRef = useRef<HTMLDivElement>(null);
3435
const [showCompactMode, setShowCompactMode] = useState<boolean>(false);
3536
const memo = memoName ? memoStore.getMemoByName(memoName) : null;
36-
const allowEdit = !props.readonly && memo && currentUser?.name === memo.creator;
37+
const allowEdit = !props.readonly && memo && (currentUser?.name === memo.creator || isSuperUser(currentUser));
3738

3839
// Initial compact mode.
3940
useEffect(() => {

Diff for: web/src/components/MemoView.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@ import useNavigateTo from "@/hooks/useNavigateTo";
88
import { useUserStore, useWorkspaceSettingStore } from "@/store/v1";
99
import { MemoRelation_Type } from "@/types/proto/api/v1/memo_relation_service";
1010
import { Memo, Visibility } from "@/types/proto/api/v1/memo_service";
11-
import { User_Role } from "@/types/proto/api/v1/user_service";
1211
import { WorkspaceMemoRelatedSetting } from "@/types/proto/api/v1/workspace_setting_service";
1312
import { WorkspaceSettingKey } from "@/types/proto/store/workspace_setting";
1413
import { useTranslate } from "@/utils/i18n";
1514
import { convertVisibilityToString } from "@/utils/memo";
15+
import { isSuperUser } from "@/utils/user";
1616
import MemoActionMenu from "./MemoActionMenu";
1717
import MemoContent from "./MemoContent";
1818
import MemoEditor from "./MemoEditor";
@@ -54,7 +54,7 @@ const MemoView: React.FC<Props> = (props: Props) => {
5454
(relation) => relation.type === MemoRelation_Type.COMMENT && relation.relatedMemo === memo.name,
5555
).length;
5656
const relativeTimeFormat = Date.now() - memo.displayTime!.getTime() > 1000 * 60 * 60 * 24 ? "datetime" : "auto";
57-
const readonly = memo.creator !== user?.name && user.role === User_Role.USER;
57+
const readonly = memo.creator !== user?.name || isSuperUser(user);
5858
const isInMemoDetailPage = location.pathname.startsWith(`/m/${memo.uid}`);
5959

6060
// Initial related data: creator.

Diff for: web/src/utils/user.ts

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import { User, User_Role } from "@/types/proto/api/v1/user_service";
2+
3+
export const isSuperUser = (user: User) => {
4+
return user.role === User_Role.ADMIN || user.role === User_Role.HOST;
5+
};

0 commit comments

Comments
 (0)