You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@causeway.apache.org by ah...@apache.org on 2024/06/15 05:29:29 UTC

(causeway) branch v3 updated (a9b3d73b28 -> 8561173354)

This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a change to branch v3
in repository https://gitbox.apache.org/repos/asf/causeway.git


    from a9b3d73b28 Merge remote-tracking branch 'origin/master' into v3
     add ce26179636 CAUSEWAY-3774: adds IfHiddenPolicy as config option
     add 7c4caf6683 CAUSEWAY-3774: adds IfHiddenPolicy as config option
     add 60c0b42d21 CAUSEWAY-3774: moves responsibility to create visibilityContexts into usabilityContexts
     add d86262d20e CAUSEWAY-3774: adds in disabling advisor
     add c3c909abc7 CAUSEWAY-3774: wip on docs
     add d44819442c CAUSEWAY-3774: adds troubleshooting section, regen config .adoc
     add b71001ec88 CAUSEWAY-3774: docs
     add 94b5938b55 CAUSEWAY-3774: docs
     add 8a8ceb4a00 CAUSEWAY-3774: docs
     add c31548ae7e Merge pull request #2487 from apache/CAUSEWAY-3774
     add 4b9064fd6b CAUSEWAY-3722: backport fix
     add 36bdb37b62 Merge branch 'maintenance-branch'
     add 06f5d77426 CAUSEWAY-3774: adds IfHiddenPolicy as config option
     add bb28164178 CAUSEWAY-3774: adds IfHiddenPolicy as config option
     add 8b82be5fbc CAUSEWAY-3774: moves responsibility to create visibilityContexts into usabilityContexts
     add 86989d4d67 CAUSEWAY-3774: adds in disabling advisor
     add 86afd0d9d6 CAUSEWAY-3774: wip on docs
     add ed4f80fb12 CAUSEWAY-3774: adds troubleshooting section, regen config .adoc
     add 5f06029baf CAUSEWAY-3774: docs
     add d75f395101 CAUSEWAY-3774: docs
     add 50df124aa3 CAUSEWAY-3774: docs
     add 3739643836 Merge branch 'maintenance-branch'
     add e057c3c91c CAUSEWAY-3778: reworks ApplicationUserAutoCreationService
     add 16957e546b CAUSEWAY-3778: check if principal is OidcUser
     add b58dab7bfc CAUSEWAY-3778: now honours autoCreatePolicy
     add 3fa1f2d76d Merge pull request #2488 from apache/CAUSEWAY-3778
     add 29d4f86220 CAUSEWAY-3778: reworks ApplicationUserAutoCreationService
     add bb52fd20c8 CAUSEWAY-3778: check if principal is OidcUser
     add 0ae133c40e CAUSEWAY-3778: now honours autoCreatePolicy
     add ee44523bb1 Merge branch 'maintenance-branch'
     add fd3255af90 CAUSEWAY-3774: refactoring: factor out a new type PrototypingAttributes
     new 8561173354 merge master into v3

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../index/services/i18n/TranslationService.adoc    |  11 ++
 .../services/publishing/log/PageRenderLogger.adoc  |   3 +
 .../publishing/spi/PageRenderSubscriber.adoc       |  35 +++++-
 .../services/search/CollectionSearchService.adoc   |  64 +++++++++++
 .../changetracking/EntityChangeTrackerDefault.adoc |  11 ++
 .../troubleshooting-visibility-and-usability.adoc  |  25 ++++
 .../userguide/modules/btb/partials/module-nav.adoc |   1 +
 .../services/wrapper/events/VisibilityEvent.java   |   2 +-
 core/adoc/modules/_overview/pages/about.adoc       |  28 ++++-
 core/config/generateConfigDocs.groovy              |   9 +-
 .../section-hooks/causeway.prototyping~post.adoc   |   0
 .../section-hooks/causeway.prototyping~pre.adoc    |   2 +-
 .../adoc/modules/config/pages/sections/Other.adoc  |  24 ----
 .../adoc/modules/config/pages/sections/_nav.adoc   |   3 +-
 .../causeway.core.meta-model.validator.adoc        |   2 +-
 .../config/pages/sections/causeway.extensions.adoc |  10 ++
 .../sections/causeway.persistence.commons.adoc     |  11 ++
 .../{Other.adoc => causeway.prototyping.adoc}      |  33 +++---
 .../core/config/CausewayConfiguration.java         | 127 ++++++++++++++++-----
 .../causeway/core/metamodel/consent/Consent.java   |   6 +
 .../causeway/core/metamodel/consent/VetoUtil.java  |  12 ++
 .../interactions/ActionArgUsabilityContext.java    |  10 +-
 .../interactions/ActionArgVisibilityContext.java   |   6 +-
 .../interactions/ActionUsabilityContext.java       |  10 +-
 .../interactions/ActionVisibilityContext.java      |   5 +-
 .../interactions/CollectionUsabilityContext.java   |  10 +-
 .../interactions/CollectionVisibilityContext.java  |   5 +-
 .../metamodel/interactions/InteractionUtils.java   | 117 +++++++++++++++----
 .../interactions/ObjectVisibilityContext.java      |  25 +++-
 .../interactions/PropertyUsabilityContext.java     |  10 +-
 .../interactions/PropertyVisibilityContext.java    |   5 +-
 .../interactions/PrototypingAttributes.java        |  80 +++++++++++++
 .../metamodel/interactions/UsabilityContext.java   |  10 +-
 .../metamodel/interactions/VisibilityContext.java  |   8 +-
 .../core/metamodel/object/MmVisibilityUtils.java   |   8 +-
 .../authorization/AuthorizationFacet.java          |   9 +-
 .../navigation/NavigationFacetFromHiddenType.java  |   3 +-
 .../specloader/specimpl/ObjectActionDefault.java   |   6 +-
 .../specimpl/ObjectActionParameterAbstract.java    |   7 +-
 .../specimpl/OneToManyAssociationDefault.java      |   8 +-
 .../specimpl/OneToOneAssociationDefault.java       |   6 +-
 .../tabular/interactive/DataTableInteractive.java  |   8 +-
 .../dom/ApplicationUserAutoCreationService.java    |  60 +++++++---
 43 files changed, 674 insertions(+), 161 deletions(-)
 create mode 100644 antora/components/refguide-index/modules/applib/pages/index/services/search/CollectionSearchService.adoc
 create mode 100644 antora/components/userguide/modules/btb/pages/troubleshooting-visibility-and-usability.adoc
 copy antora/components/setupguide/modules/ROOT/nav.adoc => core/config/src/main/adoc/modules/config/pages/section-hooks/causeway.prototyping~post.adoc (100%)
 copy antora/components/conguide/modules/agilej/nav.adoc => core/config/src/main/adoc/modules/config/pages/section-hooks/causeway.prototyping~pre.adoc (87%)
 copy core/config/src/main/adoc/modules/config/pages/sections/{Other.adoc => causeway.prototyping.adoc} (56%)
 create mode 100644 core/metamodel/src/main/java/org/apache/causeway/core/metamodel/consent/VetoUtil.java
 create mode 100644 core/metamodel/src/main/java/org/apache/causeway/core/metamodel/interactions/PrototypingAttributes.java


(causeway) 01/01: merge master into v3

Posted by ah...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch v3
in repository https://gitbox.apache.org/repos/asf/causeway.git

commit 8561173354e5e85d773bb783eb5a8cc9ac0219ff
Merge: a9b3d73b28 fd3255af90
Author: Andi Huber <ah...@apache.org>
AuthorDate: Sat Jun 15 07:29:25 2024 +0200

    merge master into v3

 .../index/services/i18n/TranslationService.adoc    |  11 ++
 .../services/publishing/log/PageRenderLogger.adoc  |   3 +
 .../publishing/spi/PageRenderSubscriber.adoc       |  35 +++++-
 .../services/search/CollectionSearchService.adoc   |  64 +++++++++++
 .../changetracking/EntityChangeTrackerDefault.adoc |  11 ++
 .../troubleshooting-visibility-and-usability.adoc  |  25 ++++
 .../userguide/modules/btb/partials/module-nav.adoc |   1 +
 .../services/wrapper/events/VisibilityEvent.java   |   2 +-
 core/adoc/modules/_overview/pages/about.adoc       |  28 ++++-
 core/config/generateConfigDocs.groovy              |   9 +-
 .../section-hooks/causeway.prototyping~post.adoc   |  17 +--
 .../section-hooks/causeway.prototyping~pre.adoc    |  18 +--
 .../adoc/modules/config/pages/sections/Other.adoc  |  24 ----
 .../adoc/modules/config/pages/sections/_nav.adoc   |   3 +-
 .../causeway.core.meta-model.validator.adoc        |   2 +-
 .../config/pages/sections/causeway.extensions.adoc |  10 ++
 .../sections/causeway.persistence.commons.adoc     |  11 ++
 .../{Other.adoc => causeway.prototyping.adoc}      |  33 +++---
 .../core/config/CausewayConfiguration.java         | 127 ++++++++++++++++-----
 .../causeway/core/metamodel/consent/Consent.java   |   6 +
 .../causeway/core/metamodel/consent/VetoUtil.java  |  12 ++
 .../interactions/ActionArgUsabilityContext.java    |  10 +-
 .../interactions/ActionArgVisibilityContext.java   |   6 +-
 .../interactions/ActionUsabilityContext.java       |  10 +-
 .../interactions/ActionVisibilityContext.java      |   5 +-
 .../interactions/CollectionUsabilityContext.java   |  10 +-
 .../interactions/CollectionVisibilityContext.java  |   5 +-
 .../metamodel/interactions/InteractionUtils.java   | 117 +++++++++++++++----
 .../interactions/ObjectVisibilityContext.java      |  25 +++-
 .../interactions/PropertyUsabilityContext.java     |  10 +-
 .../interactions/PropertyVisibilityContext.java    |   5 +-
 .../interactions/PrototypingAttributes.java        |  80 +++++++++++++
 .../metamodel/interactions/UsabilityContext.java   |  10 +-
 .../metamodel/interactions/VisibilityContext.java  |   8 +-
 .../core/metamodel/object/MmVisibilityUtils.java   |   8 +-
 .../authorization/AuthorizationFacet.java          |   9 +-
 .../navigation/NavigationFacetFromHiddenType.java  |   3 +-
 .../specloader/specimpl/ObjectActionDefault.java   |   6 +-
 .../specimpl/ObjectActionParameterAbstract.java    |   7 +-
 .../specimpl/OneToManyAssociationDefault.java      |   8 +-
 .../specimpl/OneToOneAssociationDefault.java       |   6 +-
 .../tabular/interactive/DataTableInteractive.java  |   8 +-
 .../dom/ApplicationUserAutoCreationService.java    |  60 +++++++---
 43 files changed, 676 insertions(+), 192 deletions(-)

diff --cc extensions/security/secman/delegated-springoauth2/src/main/java/org/apache/causeway/extensions/secman/delegated/springoauth2/dom/ApplicationUserAutoCreationService.java
index 735e770a9d,9d505983dc..396a7638e2
--- a/extensions/security/secman/delegated-springoauth2/src/main/java/org/apache/causeway/extensions/secman/delegated/springoauth2/dom/ApplicationUserAutoCreationService.java
+++ b/extensions/security/secman/delegated-springoauth2/src/main/java/org/apache/causeway/extensions/secman/delegated/springoauth2/dom/ApplicationUserAutoCreationService.java
@@@ -22,16 -22,19 +22,18 @@@ package org.apache.causeway.extensions.
  
  import java.util.Collection;
  import java.util.List;
- import java.util.Optional;
  
 -import javax.annotation.Priority;
 -import javax.inject.Inject;
 -
 -import org.apache.causeway.applib.annotation.PriorityPrecedence;
++import jakarta.annotation.Priority;
 +import jakarta.inject.Inject;
  
- import org.springframework.context.ApplicationListener;
+ import org.springframework.context.event.EventListener;
+ import org.springframework.core.annotation.Order;
  import org.springframework.lang.Nullable;
  import org.springframework.security.authentication.event.InteractiveAuthenticationSuccessEvent;
- import org.springframework.security.oauth2.core.oidc.user.DefaultOidcUser;
+ import org.springframework.security.oauth2.core.oidc.user.OidcUser;
  import org.springframework.stereotype.Service;
  
++import org.apache.causeway.applib.annotation.PriorityPrecedence;
  import org.apache.causeway.applib.services.factory.FactoryService;
  import org.apache.causeway.applib.services.iactnlayer.InteractionService;
  import org.apache.causeway.core.config.CausewayConfiguration;
@@@ -64,17 -78,30 +77,30 @@@ public class ApplicationUserAutoCreatio
              return;
          }
  
-         val oidcUser = (DefaultOidcUser) principal;
-         val username = oidcUser.getIdToken().getPreferredUsername();
-         val email = oidcUser.getIdToken().getEmail();
+         val oidcUser = (OidcUser) principal;
+         val username = oidcUser.getPreferredUsername();
+         val email = oidcUser.getEmail();
+ 
+         val secmanConfig = causewayConfiguration.getExtensions().getSecman().getDelegatedUsers();
+         switch (secmanConfig.getAutoCreatePolicy()) {
+             case DO_NOT_AUTO_CREATE:
+                 break;
+             case AUTO_CREATE_AS_LOCKED:
+                 create(username, email, secmanConfig.getInitialRoleNames(), ApplicationUserStatus.LOCKED);
+                 break;
+             case AUTO_CREATE_AS_UNLOCKED:
+                 create(username, email, secmanConfig.getInitialRoleNames(), ApplicationUserStatus.UNLOCKED);
+                 break;
+         }
+     }
+ 
 -    private void create(String username, String email, List<String> initialRoleNames, ApplicationUserStatus userStatus) {
++    private void create(final String username, final String email, final List<String> initialRoleNames, final ApplicationUserStatus userStatus) {
          interactionService.runAnonymous(() -> {
-             Optional<ApplicationUser> userIfAny = applicationUserRepository.findByUsername(username);
+             val userIfAny = applicationUserRepository.findByUsername(username);
              if (userIfAny.isEmpty()) {
-                 val status = ApplicationUserStatus.UNLOCKED;  // locking not supported for spring delegated accounts
-                 val applicationUser = applicationUserRepository.newDelegateUser(username, status);
+                 val applicationUser = applicationUserRepository.newDelegateUser(username, userStatus);
                  factoryService.mixin(ApplicationUser_updateEmailAddress.class, applicationUser).act(email);
  
-                 val initialRoleNames = causewayConfiguration.getExtensions().getSecman().getDelegatedUsers().getInitialRoleNames();
                  if (notEmpty(initialRoleNames)) {
                      for (String initialRoleName : initialRoleNames) {
                          addRoleIfExists(applicationUser, initialRoleName);
@@@ -84,17 -111,17 +110,17 @@@
          });
      }
  
--    private void addRoleIfExists(ApplicationUser applicationUser, String initialRoleName) {
++    private void addRoleIfExists(final ApplicationUser applicationUser, final String initialRoleName) {
          applicationRoleRepository.findByName(initialRoleName).ifPresent(role -> {
              factoryService.mixin(ApplicationUser_addRole.class, applicationUser).act(role);
          });
      }
  
--    private static boolean notEmpty(List<String> initialRoleNames) {
++    private static boolean notEmpty(final List<String> initialRoleNames) {
          return !isEmpty(initialRoleNames);
      }
  
--    private static boolean isEmpty(@Nullable Collection<?> collection) {
++    private static boolean isEmpty(@Nullable final Collection<?> collection) {
          return collection == null || collection.isEmpty();
      }