You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
1.6 KiB
40 lines
1.6 KiB
package echomeet
|
|
|
|
import (
|
|
"yunyan/comm"
|
|
"yunyan/pb"
|
|
)
|
|
|
|
/*
|
|
按 id 操作会议记录的接口,统一在这里取会话 uid 并做归属校验。
|
|
|
|
在此之前 getrecord / getrecords / modifyrecords / delrecords / readrecord /
|
|
summary / starttask / uprecord 八个接口**全部只按 id 查库**,没有一处比对
|
|
record.Uid 与会话 uid(starttask 用了 GetUserId(),但只拿去扣算力和查 VIP)。
|
|
后果是任何登录用户改一个 id 就能读别人纪要全文、删改别人的记录、
|
|
给别人的记录发起总结(扣自己的算力,但覆盖对方 summary 并触发对方的拾忆抽取)。
|
|
|
|
写法照 memory 模块(每个接口 requireUID + rec.Uid != uid)。
|
|
回调接口 BackCall / AliBackCall 是第三方来的、没有 session,不在此列。
|
|
*/
|
|
|
|
// requireUID 取会话 uid。所有按 id 操作记录的接口第一步。
|
|
func requireUID(session comm.IUserSession) (string, *pb.ErrorData) {
|
|
uid := session.GetUserId()
|
|
if uid == "" {
|
|
return "", &pb.ErrorData{Code: pb.ErrorCode_NoLogin, Message: pb.ErrorCode_NoLogin.String()}
|
|
}
|
|
return uid, nil
|
|
}
|
|
|
|
// recordErr 把 model 层的查询错误转成对外错误。
|
|
//
|
|
// ⚠️ 「不存在」与「不是你的」回同一个错误码同一句话:分开回等于给出一个
|
|
// 探测他人记录 id 的接口。DBError 也正是改动前记录真的不存在时客户端拿到的码,
|
|
// 这样合法用户看到的行为没有任何变化。
|
|
func recordErr(err error) *pb.ErrorData {
|
|
if err == ErrRecordNotFound {
|
|
return &pb.ErrorData{Code: pb.ErrorCode_DBError, Message: ErrRecordNotFound.Error()}
|
|
}
|
|
return &pb.ErrorData{Code: pb.ErrorCode_DBError, Message: err.Error()}
|
|
}
|
|
|