0.6 rust重构01
This commit is contained in:
@@ -2,6 +2,7 @@ import { mutation, query } from "./_generated/server";
|
||||
import { v } from "convex/values";
|
||||
import { getAuthUserId } from "@convex-dev/auth/server";
|
||||
import { nowIso } from "./_utils/time";
|
||||
import { requireCanonicalOwnedDocument } from "./_utils/documentRecord";
|
||||
|
||||
type Permission = "read" | "edit";
|
||||
|
||||
@@ -11,16 +12,6 @@ async function requireUserId(ctx: any): Promise<string> {
|
||||
return String(userId);
|
||||
}
|
||||
|
||||
async function requireOwnedDocument(ctx: any, documentId: string, userId: string) {
|
||||
const doc = await ctx.db
|
||||
.query("documents")
|
||||
.withIndex("by_document_id", (q: any) => q.eq("id", documentId))
|
||||
.first();
|
||||
if (!doc) throw new Error("页面不存在");
|
||||
if (doc.user_id !== userId) throw new Error("无权限");
|
||||
return doc;
|
||||
}
|
||||
|
||||
async function requireGroup(ctx: any, groupId: string) {
|
||||
const group = await ctx.db
|
||||
.query("groups")
|
||||
@@ -43,7 +34,7 @@ export const listByDocument = query({
|
||||
args: { documentId: v.string() },
|
||||
handler: async (ctx, args) => {
|
||||
const userId = await requireUserId(ctx);
|
||||
const doc = await requireOwnedDocument(ctx, args.documentId, userId);
|
||||
const doc = await requireCanonicalOwnedDocument(ctx, args.documentId, userId);
|
||||
|
||||
const shares = await ctx.db
|
||||
.query("document_group_shares")
|
||||
@@ -94,7 +85,7 @@ export const upsert = mutation({
|
||||
},
|
||||
handler: async (ctx, args) => {
|
||||
const userId = await requireUserId(ctx);
|
||||
const doc = await requireOwnedDocument(ctx, args.documentId, userId);
|
||||
const doc = await requireCanonicalOwnedDocument(ctx, args.documentId, userId);
|
||||
const group = await requireGroup(ctx, args.groupId);
|
||||
if (group.workspace_id !== doc.workspace_id) throw new Error("群组不属于当前工作空间");
|
||||
await requireGroupMember(ctx, args.groupId, userId);
|
||||
@@ -178,7 +169,7 @@ export const remove = mutation({
|
||||
args: { documentId: v.string(), groupId: v.string() },
|
||||
handler: async (ctx, args) => {
|
||||
const userId = await requireUserId(ctx);
|
||||
const doc = await requireOwnedDocument(ctx, args.documentId, userId);
|
||||
const doc = await requireCanonicalOwnedDocument(ctx, args.documentId, userId);
|
||||
|
||||
const existingShare = await ctx.db
|
||||
.query("document_group_shares")
|
||||
|
||||
Reference in New Issue
Block a user