diff --git a/.cdsrc.json b/.cdsrc.json index d7bd9b1f..e69009c5 100644 --- a/.cdsrc.json +++ b/.cdsrc.json @@ -4,5 +4,8 @@ "extensibility": true, "toggles": true }, - "profile": "with-mtx-sidecar" + "profile": "with-mtx-sidecar", + "cdsc": { + "draftUserDescription": true + } } 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..fe3635b9 --- /dev/null +++ b/srv/src/main/java/my/bookshop/handlers/UserDescriptionHandler.java @@ -0,0 +1,34 @@ +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.draft.DraftService; +import com.sap.cds.services.handler.EventHandler; +import com.sap.cds.services.handler.annotations.Before; +import com.sap.cds.services.handler.annotations.ServiceName; +import com.sap.cds.services.request.UserInfo; +import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +@Component +@ServiceName(value = "*", type = DraftService.class) +public class UserDescriptionHandler implements EventHandler { + + @Autowired private UserInfo userInfo; + + @Before + protected void addDraftFields(DraftCreateEventContext context, List entries) { + CdsDataProcessor.Filter filter = + (path, element, type) -> "InProcessByUserDescription".equals(element.getName()); + CdsDataProcessor.Generator generator = (path, element, isNull) -> description(); + CdsDataProcessor.create().addGenerator(filter, generator).process(entries, context.getTarget()); + } + + private String description() { + return userInfo.getAdditionalAttribute("given_name") + + " " + + userInfo.getAdditionalAttribute("family_name"); + } +} diff --git a/srv/src/main/resources/application.yaml b/srv/src/main/resources/application.yaml index 5f9dac1d..824aa60d 100644 --- a/srv/src/main/resources/application.yaml +++ b/srv/src/main/resources/application.yaml @@ -17,9 +17,22 @@ cds: password: admin roles: - admin + additional: + given_name: Paul + family_name: Müller attributes: businessPartner: - "10401010" + minad: + password: minad + roles: + - admin + additional: + given_name: Emma + family_name: Maier + attributes: + businessPartner: + - "1000020" user: password: user server.servlet.encoding: