diff --git a/package.json b/package.json index 8bb22a26..a171b687 100644 --- a/package.json +++ b/package.json @@ -9,5 +9,10 @@ }, "workspaces": [ "mtx/sidecar" - ] -} + ], + "cds": { + "cdsc": { + "draftUserDescription": true + } + } +} \ No newline at end of file diff --git a/srv/src/main/java/my/bookshop/handlers/UserDescriptionHandler.java b/srv/src/main/java/my/bookshop/handlers/UserDescriptionHandler.java new file mode 100644 index 00000000..92ac73a3 --- /dev/null +++ b/srv/src/main/java/my/bookshop/handlers/UserDescriptionHandler.java @@ -0,0 +1,31 @@ +package my.bookshop.handlers; + +import com.sap.cds.CdsData; +import com.sap.cds.CdsDataProcessor; +import com.sap.cds.services.draft.DraftCreateEventContext; +import com.sap.cds.services.handler.EventHandler; +import com.sap.cds.services.handler.annotations.On; +import com.sap.cds.services.request.UserInfo; +import java.util.List; +import org.springframework.stereotype.Component; + +@Component +public class UserDescriptionHandler implements EventHandler { + + @On(service = "*") + protected void addDraftFields(DraftCreateEventContext context, List entries) { + CdsDataProcessor.Filter filter = + (path, element, type) -> + switch (element.getName()) { + case "InProcessByUserDescription" -> true; + default -> false; + }; + + UserInfo userInfo = context.getUserInfo(); + CdsDataProcessor.Generator generator = + (path, element, isNull) -> userInfo.getAdditionalAttribute("nickname"); + CdsDataProcessor dataProcessor = CdsDataProcessor.create().addGenerator(filter, generator); + + dataProcessor.process(entries, context.getTarget()); + } +} diff --git a/srv/src/main/resources/application.yaml b/srv/src/main/resources/application.yaml index 5f9dac1d..de70a02b 100644 --- a/srv/src/main/resources/application.yaml +++ b/srv/src/main/resources/application.yaml @@ -17,11 +17,21 @@ cds: password: admin roles: - admin + additional: + nickname: Chief Books Administrator attributes: businessPartner: - "10401010" + minad: + password: minad + roles: + - admin + additional: + nickname: Controller of Books user: password: user + additional: + nickname: Some user server.servlet.encoding: charset: UTF-8 force: true