cap-user-info 0.1.1 → 0.1.2

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.
Files changed (2) hide show
  1. package/dist/handlers.js +21 -10
  2. package/package.json +1 -1
package/dist/handlers.js CHANGED
@@ -7,16 +7,19 @@ exports.hasUserTrackedAspect = hasUserTrackedAspect;
7
7
  exports.registerHandlers = registerHandlers;
8
8
  const cds_1 = __importDefault(require("@sap/cds"));
9
9
  const UPSERTED_FLAG = Symbol.for("cap-user-info.upserted-this-tx");
10
+ const userInfoLogger = cds_1.default.log("cap.userinfo");
10
11
  function hasUserTrackedAspect(entity) {
11
- const els = entity?.elements;
12
- if (!els)
12
+ const entieies = entity?.elements;
13
+ if (!entieies)
13
14
  return false;
14
- return Boolean(els._toCreatedUserInfo && els._toModifiedUserInfo);
15
+ return Boolean(entieies._toCreatedUserInfo && entieies._toModifiedUserInfo);
15
16
  }
16
17
  async function upsertUserInfo(req) {
17
18
  const user = req.user;
18
- if (!user?.id || user.is("system-user") || user._is_anonymous)
19
+ if (!user?.id || user.is("system-user") || user._is_anonymous) {
20
+ userInfoLogger.debug(`Skipping user info upsert for system or anonymous user: ${user?.id}`);
19
21
  return;
22
+ }
20
23
  const ctx = cds_1.default.context;
21
24
  if (ctx && ctx[UPSERTED_FLAG])
22
25
  return;
@@ -25,21 +28,29 @@ async function upsertUserInfo(req) {
25
28
  const { UserInfo } = cds_1.default.entities("cap.userinfo");
26
29
  let attr = user.attr ?? {};
27
30
  if (Object.keys(attr).length === 0) {
31
+ userInfoLogger.debug(`User ${user.id} has no attr property, using dummy values for user info upsert`);
28
32
  attr.email = "Dummy@example.com";
29
33
  attr.givenName = user.id || "FirstName";
30
34
  attr.familyName = "LastName";
31
35
  }
32
- await UPSERT.into(UserInfo).entries({
33
- ID: user.id,
34
- Email: attr.email,
35
- GivenName: attr.givenName,
36
- FamilyName: attr.familyName,
37
- });
36
+ userInfoLogger.debug(`Upserting user info for user ${user.id}: ${JSON.stringify(attr)}`);
37
+ try {
38
+ await UPSERT.into(UserInfo).entries({
39
+ ID: user.id,
40
+ Email: attr.email,
41
+ GivenName: attr.givenName,
42
+ FamilyName: attr.familyName,
43
+ });
44
+ }
45
+ catch (error) {
46
+ userInfoLogger.error(`Failed to upsert user info for user ${user.id}: ${error.message}`);
47
+ }
38
48
  }
39
49
  function registerHandlers(srv) {
40
50
  const tracked = [...srv.entities].filter(hasUserTrackedAspect);
41
51
  if (tracked.length === 0)
42
52
  return;
53
+ userInfoLogger.debug(`Registering user info handlers for entities: ${tracked.map((e) => e.name).join(", ")}`);
43
54
  srv.after(["CREATE", "UPDATE"], tracked, async (_data, req) => {
44
55
  await upsertUserInfo(req);
45
56
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cap-user-info",
3
- "version": "0.1.1",
3
+ "version": "0.1.2",
4
4
  "description": "CDS plugin: track created/modified user details on managed entities",
5
5
  "main": "cds-plugin.js",
6
6
  "repository": {