@cloudbase/framework-plugin-low-code 0.7.7 → 0.7.8-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../src/builder/core/generate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAe5C,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAkBnD,wBAAsB,eAAe,CACnC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,kBAAkB,EAC3B,cAAc,kCAA2B,EACzC,YAAY,6BAAsB,EAClC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,SAAS,EAAE,EAC1B,UAAU,EAAE,WAAW,EACvB,OAAO,qBAAwB,EAC/B,aAAa,qBAAiB,EAC9B,SAAS;iBACM,OAAO;eACT,GAAG;aAIf,EACD,MAAM,EAAE,MAAM,iBA6Gf;AACD,wBAAsB,mBAAmB,CACvC,YAAY,oBAAa,EACzB,WAAW,EAAE,MAAM,EACnB,MAAM,KAAA,iBASP"}
1
+ {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../src/builder/core/generate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAe5C,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAkBnD,wBAAsB,eAAe,CACnC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,kBAAkB,EAC3B,cAAc,kCAA2B,EACzC,YAAY,6BAAsB,EAClC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,SAAS,EAAE,EAC1B,UAAU,EAAE,WAAW,EACvB,OAAO,qBAAwB,EAC/B,aAAa,qBAAiB,EAC9B,SAAS;iBACM,OAAO;eACT,GAAG;aAIf,EACD,MAAM,EAAE,MAAM,iBA8Gf;AACD,wBAAsB,mBAAmB,CACvC,YAAY,oBAAa,EACzB,WAAW,EAAE,MAAM,EACnB,MAAM,KAAA,iBASP"}
@@ -53,6 +53,7 @@ function runGenerateCore(appBuildDir, appData, subAppDataList = [], dependencies
53
53
  }
54
54
  });
55
55
  yield Promise.all(allAppDataList.map((data) => __awaiter(this, void 0, void 0, function* () {
56
+ var _a;
56
57
  const { pageInstanceList, rootPath = '' } = data;
57
58
  const appName = rootPath ? 'Sub app ' + rootPath : 'Main app';
58
59
  console.log(chalk_1.default.blue.bold('Generating files for ' + appName));
@@ -68,6 +69,7 @@ function runGenerateCore(appBuildDir, appData, subAppDataList = [], dependencies
68
69
  appConfig: (0, util_1.JsonToStringWithVariableName)({
69
70
  id: appKey,
70
71
  envId: appData.envId,
72
+ clientId: (_a = appData.extra) === null || _a === void 0 ? void 0 : _a.clientId,
71
73
  staticResourceDomain: domain || '',
72
74
  envVersion: deployMode === types_1.DEPLOY_MODE.UPLOAD ? 'production' : 'preview',
73
75
  pages: pageInstanceList
@@ -214,14 +214,7 @@ function translateStyleByHandler(style = {}, handler) {
214
214
  setStyleValue(result, key, value);
215
215
  }
216
216
  else if (value !== undefined && value !== null) {
217
- try {
218
-
219
217
  setStyleValue(result, key, handler(value));
220
- }catch(e){
221
- console.log(style,key,value)
222
- console.log(e)
223
- throw e
224
- }
225
218
  }
226
219
  return result;
227
220
  }, {});
@@ -264,7 +257,6 @@ function toREM(cssLen) {
264
257
  return calPxToREM(cssLen);
265
258
  }
266
259
  else {
267
- console.log(cssLen)
268
260
  throw new Error('cssLen type error');
269
261
  }
270
262
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cloudbase/framework-plugin-low-code",
3
- "version": "0.7.7",
3
+ "version": "0.7.8-beta.0",
4
4
  "description": "云开发 Tencent CloudBase Framework Low Code Plugin,将低码配置生成完整项目并一键部署云开发资源。",
5
5
  "author": "yhsunshining@gmail.com",
6
6
  "homepage": "https://github.com/TencentCloudBase/cloudbase-framework#readme",
@@ -218,29 +218,44 @@ export async function checkAnonymous() {
218
218
  return isAnonymous;
219
219
  }
220
220
 
221
+ let loginConfig;
222
+ export async function getLoginConfig() {
223
+ if (loginConfig !== undefined) {
224
+ return loginConfig;
225
+ }
226
+ const { staticResourceDomain, id } = app.__internal__.getConfig();
227
+ const url = `https://${staticResourceDomain}/${id}/login.config.json?t=${Date.now()}`;
228
+ try {
229
+ let response = await fetch(url);
230
+ loginConfig = await response.json();
231
+ } catch (e) {
232
+ loginConfig = {};
233
+ console.error(`加载登录配置${url}失败`, e);
234
+ }
235
+ return loginConfig;
236
+ }
237
+
221
238
  /**
222
239
  * 检查页面权限
223
240
  **/
224
241
  export async function checkAuth(app, appId, $page) {
225
242
  <% if (isAdminPortal || isXPage) { %>return true;<% } %>
226
- const loginPage = findLoginPage(app);
227
- if (loginPage?.id === $page.id) {
228
- return true
229
- }
230
- app.showNavigationBarLoading();
243
+ app.showNavigationBarLoading();
244
+ const loginConfig = await getLoginConfig();
231
245
  const requestList = [getAccessPermission(app, appId, $page.id)];
232
- // 暂时先认为有登录页则自定义登录功能开启且生效
233
- if (loginPage) {
246
+ // 登录配置内有web登录项则认为开启web登录
247
+ if (loginConfig.web?.length > 0) {
234
248
  requestList.push(getAuthConfig(app));
235
249
  requestList.push(checkAnonymous());
250
+ requestList.push(getLoginConfig()); // 提前并行加载
236
251
  }
237
252
  const [isAccess, authConfig, isAnonymous] = await Promise.all(requestList);
238
253
  app.hideNavigationBarLoading();
239
254
 
240
- if (loginPage && isAnonymous) {
255
+ if (loginConfig.web?.length > 0 && isAnonymous) {
241
256
  if (authConfig.NeedLogin || (!isAccess && authConfig.RejectStrategy === 'to_login')) {
242
257
  redirectToLogin($page);
243
- return isAccess;
258
+ return false;
244
259
  }
245
260
  }
246
261
 
@@ -253,25 +268,22 @@ export async function checkAuth(app, appId, $page) {
253
268
  return isAccess;
254
269
  }
255
270
 
256
- export function redirectToLogin(currentPage) {
271
+ export async function redirectToLogin(currentPage) {
257
272
  // 去登录则清空权限缓存。
258
273
  _AUTH_CACHE_MAP = {};
259
274
  const app = window.app;
260
- const loginPage = findLoginPage(app);
261
- if (!currentPage) {
262
- currentPage = app.utils.getCurrentPage() || {};
263
- }
264
- if (loginPage?.id === currentPage.id) {
265
- return true
266
- }
267
- if (loginPage) {
275
+
276
+ const loginConfig = await getLoginConfig();
277
+ if (loginConfig.web?.length > 0) {
278
+ const { staticResourceDomain, envId, id, clientId } = app.__internal__.getConfig();
279
+ const url = `${location.origin}/__auth/?redirect_uri=${encodeURIComponent(
280
+ location.href,
281
+ )}&app_id=${id}&env_id=${envId}&client_id=${clientId}&s_domain=${staticResourceDomain}`;
268
282
  app.redirectTo({
269
- pageId: loginPage.id,
270
- params: {
271
- sourcePageId: currentPage.id,
272
- sourcePageParams: currentPage.dataset.params
273
- }
274
- })
283
+ mode: 'web',
284
+ params: {},
285
+ url,
286
+ });
275
287
  } else {
276
288
  app.showToast({
277
289
  title: '用户未登录',
@@ -12,7 +12,7 @@ import attachFastClick from 'fastclick'
12
12
  import { initWebConfig } from 'handlers/lifecycle'
13
13
  const AppConfig = require('../webpack/miniprogram.config')
14
14
  import { app } from './app/global-api'
15
- import { redirectToLogin, findLoginPage, getAuthConfig, checkAnonymous } from './handlers/utils'
15
+ import { redirectToLogin, getAuthConfig, checkAnonymous, getLoginConfig } from './handlers/utils'
16
16
  // app 中注册配置页面以及app的全局配置miniprogram.config,h5里分app以及web页分别处理,使用process.env.isApp 区分判断
17
17
  if (process.env.isApp) {
18
18
  initWebConfig(app, AppConfig);
@@ -26,8 +26,7 @@ setConfig({
26
26
  },
27
27
  beforeCallFunction: async (params) => {
28
28
  try{
29
- const loginPage = findLoginPage();
30
-
29
+ const loginConfig = await getLoginConfig();
31
30
  let skip = false;
32
31
  switch (params?.data?.methodName) {
33
32
  case 'callWedaApi': {
@@ -39,7 +38,7 @@ setConfig({
39
38
  }
40
39
 
41
40
  // 后续做过滤处理
42
- if (!loginPage || (params?.data?.mode === 'c' && skip)) {
41
+ if (!(loginConfig.web?.length > 0) || (params?.data?.mode === 'c' && skip)) {
43
42
  return params;
44
43
  }
45
44
  const { accessToken } = await getAccessToken();
@@ -60,8 +59,8 @@ setConfig({
60
59
  },
61
60
  async afterCallFunction(params, error, res) {
62
61
  if(params?.data?.params?.action != 'DescribeRuntimeResourceStrategy' && ['InnerError.AuthFailure','InvalidAccessToken'].includes(res?.result?.code)) {
63
- const loginPage = findLoginPage();
64
- if (loginPage) {
62
+ const loginConfig = await getLoginConfig();
63
+ if (loginConfig.web?.length > 0) {
65
64
  const authConfig = await getAuthConfig();
66
65
  const isAnonymous = await checkAnonymous();
67
66
  if (isAnonymous && authConfig.RejectStrategy == 'to_login') {