Просмотр исходного кода

fix: authorize coach learning workflows

彭峰 1 месяц назад
Родитель
Сommit
7d5038fde2

+ 2 - 1
projects/xiaoshu-mobile/src/app/features/learning/learning-page.component.ts

@@ -1002,7 +1002,8 @@ export class LearningPageComponent implements OnInit, OnDestroy {
         }
         this.nodes.set(rows);
       },
-      error: () => this.error.set(this.isCatalogPage ? '词库暂时无法加载,请稍后重试' : '学习单元暂时无法加载,请稍后重试'),
+      error: (error: ApiError) => this.error.set(error.message
+        || (this.isCatalogPage ? '词库暂时无法加载,请稍后重试' : '学习单元暂时无法加载,请稍后重试')),
     });
   }
 

+ 2 - 1
scripts/deploy-admin-functions.mjs

@@ -2540,7 +2540,8 @@ async function createGuestbook(input,current) {
 }
 async function authorizeRequestedUser(current, requestedId) {
   const targetId = number(requestedId || ownLegacyId(current)); if (!targetId) fail(400, '缺少用户 ID'); if (isAdminUser(current) || targetId === ownLegacyId(current)) return targetId;
-  const fields = await fieldsOf('_User'); const target = await findByLegacyId('_User', fields, targetId, ['legacyUserId','userid','num']); const agent = target && target.get('agent'); if (!target || !agent || agent.id !== current.id) fail(403, '无权查看该学员的业务记录'); return targetId;
+  const fields = await fieldsOf('_User'); const target = await findByLegacyId('_User', fields, targetId, ['legacyUserId','userid','num']); const agent = target && target.get('agent'); if (target && agent && agent.id === current.id) return targetId;
+  return appLearningTarget(current, targetId);
 }
 async function authorizeBusinessRow(current, row, subjectFields, actorFields = []) {
   if (isAdminUser(current)) return; const ownId = ownLegacyId(current); const allIds = subjectFields.concat(actorFields).map((name) => number(row[name] ?? row[name.toLowerCase()] ?? row[name.toUpperCase()])).filter(Boolean); if (allIds.includes(ownId)) return;