You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2022/01/13 09:49:43 UTC
[isis] branch master updated: ISIS-2905: move new-role and all-roles menu entries to RoleManager
This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git
The following commit(s) were added to refs/heads/master by this push:
new 78b4b20 ISIS-2905: move new-role and all-roles menu entries to RoleManager
78b4b20 is described below
commit 78b4b208da2c00fdfad006171ed00a87fe67fa8e
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Jan 13 10:49:32 2022 +0100
ISIS-2905: move new-role and all-roles menu entries to RoleManager
- also update 'locked user' icon
---
.../src/main/java/demoapp/dom/menubars.layout.xml | 3 +-
.../secman/applib/IsisModuleExtSecmanApplib.java | 14 +++--
.../man/ApplicationRoleManager.java} | 10 +--
.../ApplicationRoleManager.layout.fallback.xml} | 2 +-
.../mixins/ApplicationRoleManager_allRoles.java} | 18 +++---
.../man/mixins/ApplicationRoleManager_newRole.java | 67 +++++++++++++++++++++
.../applib/role/menu/ApplicationRoleMenu.java | 64 ++++++++------------
.../user/{app => man}/ApplicationUserManager.java | 2 +-
.../ApplicationUserManager.layout.fallback.xml | 0
.../mixins/ApplicationUserManager_allUsers.java | 4 +-
.../ApplicationUserManager_newDelegateUser.java | 6 +-
.../ApplicationUserManager_newLocalUser.java | 6 +-
...pplicationUserManager_newLocalUserAbstract.java | 2 +-
.../applib/user/menu/ApplicationUserMenu.java | 2 +-
.../resources/images/ApplicationRoleManager.png | Bin 0 -> 1287 bytes
.../resources/images/ApplicationUser-locked.png | Bin 1170 -> 7887 bytes
16 files changed, 128 insertions(+), 72 deletions(-)
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/menubars.layout.xml b/examples/demo/domain/src/main/java/demoapp/dom/menubars.layout.xml
index d28f18e..5e9494f 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/menubars.layout.xml
+++ b/examples/demo/domain/src/main/java/demoapp/dom/menubars.layout.xml
@@ -340,9 +340,8 @@ For latest we use: https://raw.githubusercontent.com/apache/isis/master/antora/s
</mb3:section>
<mb3:section>
<mb3:named>Roles</mb3:named>
+ <mb3:serviceAction objectType="isis.ext.secman.ApplicationRoleMenu" id="roleManager"/>
<mb3:serviceAction objectType="isis.ext.secman.ApplicationRoleMenu" id="findRoles"/>
- <mb3:serviceAction objectType="isis.ext.secman.ApplicationRoleMenu" id="newRole"/>
- <mb3:serviceAction objectType="isis.ext.secman.ApplicationRoleMenu" id="allRoles"/>
</mb3:section>
<mb3:section>
<mb3:named>Permissions</mb3:named>
diff --git a/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/IsisModuleExtSecmanApplib.java b/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/IsisModuleExtSecmanApplib.java
index 6e7fbc3..e9fa913 100644
--- a/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/IsisModuleExtSecmanApplib.java
+++ b/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/IsisModuleExtSecmanApplib.java
@@ -40,6 +40,8 @@ import org.apache.isis.extensions.secman.applib.role.dom.mixins.ApplicationRole_
import org.apache.isis.extensions.secman.applib.role.dom.mixins.ApplicationRole_removeUsers;
import org.apache.isis.extensions.secman.applib.role.dom.mixins.ApplicationRole_updateDescription;
import org.apache.isis.extensions.secman.applib.role.dom.mixins.ApplicationRole_updateName;
+import org.apache.isis.extensions.secman.applib.role.man.mixins.ApplicationRoleManager_allRoles;
+import org.apache.isis.extensions.secman.applib.role.man.mixins.ApplicationRoleManager_newRole;
import org.apache.isis.extensions.secman.applib.role.menu.ApplicationRoleMenu;
import org.apache.isis.extensions.secman.applib.seed.SeedSecurityModuleService;
import org.apache.isis.extensions.secman.applib.tenancy.dom.mixins.ApplicationTenancy_addChild;
@@ -50,10 +52,6 @@ import org.apache.isis.extensions.secman.applib.tenancy.dom.mixins.ApplicationTe
import org.apache.isis.extensions.secman.applib.tenancy.dom.mixins.ApplicationTenancy_updateName;
import org.apache.isis.extensions.secman.applib.tenancy.dom.mixins.ApplicationTenancy_users;
import org.apache.isis.extensions.secman.applib.tenancy.menu.ApplicationTenancyMenu;
-import org.apache.isis.extensions.secman.applib.user.app.ApplicationUserManager;
-import org.apache.isis.extensions.secman.applib.user.app.mixins.ApplicationUserManager_allUsers;
-import org.apache.isis.extensions.secman.applib.user.app.mixins.ApplicationUserManager_newDelegateUser;
-import org.apache.isis.extensions.secman.applib.user.app.mixins.ApplicationUserManager_newLocalUser;
import org.apache.isis.extensions.secman.applib.user.contributions.HasUsername_open;
import org.apache.isis.extensions.secman.applib.user.dom.mixins.ApplicationUser_addRole;
import org.apache.isis.extensions.secman.applib.user.dom.mixins.ApplicationUser_delete;
@@ -74,6 +72,10 @@ import org.apache.isis.extensions.secman.applib.user.dom.mixins.ApplicationUser_
import org.apache.isis.extensions.secman.applib.user.dom.mixins.perms.ApplicationUser_effectiveMemberPermissions;
import org.apache.isis.extensions.secman.applib.user.dom.mixins.perms.ApplicationUser_filterEffectiveMemberPermissions;
import org.apache.isis.extensions.secman.applib.user.dom.mixins.perms.UserPermissionViewModel;
+import org.apache.isis.extensions.secman.applib.user.man.ApplicationUserManager;
+import org.apache.isis.extensions.secman.applib.user.man.mixins.ApplicationUserManager_allUsers;
+import org.apache.isis.extensions.secman.applib.user.man.mixins.ApplicationUserManager_newDelegateUser;
+import org.apache.isis.extensions.secman.applib.user.man.mixins.ApplicationUserManager_newLocalUser;
import org.apache.isis.extensions.secman.applib.user.menu.ApplicationUserMenu;
import org.apache.isis.extensions.secman.applib.user.menu.MeService;
import org.apache.isis.testing.fixtures.applib.IsisModuleTestingFixturesApplib;
@@ -168,6 +170,10 @@ import org.apache.isis.testing.fixtures.applib.IsisModuleTestingFixturesApplib;
ApplicationUserManager_newDelegateUser.class,
ApplicationUserManager_newLocalUser.class,
+ // ApplicationRoleManager
+ ApplicationRoleManager_allRoles.class,
+ ApplicationRoleManager_newRole.class,
+
// other @Services
SeedSecurityModuleService.class,
diff --git a/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/user/app/ApplicationUserManager.java b/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/role/man/ApplicationRoleManager.java
similarity index 83%
copy from extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/user/app/ApplicationUserManager.java
copy to extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/role/man/ApplicationRoleManager.java
index 5b598b5..1f2cbd9 100644
--- a/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/user/app/ApplicationUserManager.java
+++ b/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/role/man/ApplicationRoleManager.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.extensions.secman.applib.user.app;
+package org.apache.isis.extensions.secman.applib.role.man;
import org.apache.isis.applib.annotation.DomainObject;
import org.apache.isis.applib.annotation.Nature;
@@ -25,14 +25,14 @@ import org.apache.isis.extensions.secman.applib.IsisModuleExtSecmanApplib;
@DomainObject(
nature = Nature.VIEW_MODEL,
- logicalTypeName = ApplicationUserManager.LOGICAL_TYPE_NAME
+ logicalTypeName = ApplicationRoleManager.LOGICAL_TYPE_NAME
)
-public class ApplicationUserManager {
+public class ApplicationRoleManager {
- public static final String LOGICAL_TYPE_NAME = IsisModuleExtSecmanApplib.NAMESPACE + ".ApplicationUserManager";
+ public static final String LOGICAL_TYPE_NAME = IsisModuleExtSecmanApplib.NAMESPACE + ".ApplicationRoleManager";
@ObjectSupport public String title() {
- return "Application User Manager";
+ return "Application Role Manager";
}
// behaviour provided by mixins
diff --git a/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/user/app/ApplicationUserManager.layout.fallback.xml b/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/role/man/ApplicationRoleManager.layout.fallback.xml
similarity index 98%
copy from extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/user/app/ApplicationUserManager.layout.fallback.xml
copy to extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/role/man/ApplicationRoleManager.layout.fallback.xml
index 767a179..6e7b4ee 100644
--- a/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/user/app/ApplicationUserManager.layout.fallback.xml
+++ b/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/role/man/ApplicationRoleManager.layout.fallback.xml
@@ -22,7 +22,7 @@
<bs3:row>
<bs3:col span="12">
<bs3:tabGroup unreferencedCollections="true">
- <bs3:tab name="All Users">
+ <bs3:tab name="All Roles">
<bs3:row>
<bs3:col span="12" size="MD" />
</bs3:row>
diff --git a/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/user/app/mixins/ApplicationUserManager_allUsers.java b/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/role/man/mixins/ApplicationRoleManager_allRoles.java
similarity index 65%
copy from extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/user/app/mixins/ApplicationUserManager_allUsers.java
copy to extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/role/man/mixins/ApplicationRoleManager_allRoles.java
index 176dd4c..d8dbaab 100644
--- a/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/user/app/mixins/ApplicationUserManager_allUsers.java
+++ b/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/role/man/mixins/ApplicationRoleManager_allRoles.java
@@ -16,31 +16,31 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.extensions.secman.applib.user.app.mixins;
+package org.apache.isis.extensions.secman.applib.role.man.mixins;
import java.util.Collection;
import javax.inject.Inject;
import org.apache.isis.applib.annotation.MemberSupport;
-import org.apache.isis.extensions.secman.applib.user.app.ApplicationUserManager;
-import org.apache.isis.extensions.secman.applib.user.dom.ApplicationUser;
-import org.apache.isis.extensions.secman.applib.user.dom.ApplicationUserRepository;
+import org.apache.isis.extensions.secman.applib.role.dom.ApplicationRole;
+import org.apache.isis.extensions.secman.applib.role.dom.ApplicationRoleRepository;
+import org.apache.isis.extensions.secman.applib.role.man.ApplicationRoleManager;
import lombok.RequiredArgsConstructor;
@org.apache.isis.applib.annotation.Collection
@RequiredArgsConstructor
-public class ApplicationUserManager_allUsers {
+public class ApplicationRoleManager_allRoles {
@SuppressWarnings("unused")
- private final ApplicationUserManager target;
+ private final ApplicationRoleManager target;
@Inject
- private ApplicationUserRepository applicationUserRepository;
+ private ApplicationRoleRepository applicationRoleRepository;
- @MemberSupport public Collection<ApplicationUser> coll() {
- return applicationUserRepository.allUsers();
+ @MemberSupport public Collection<ApplicationRole> coll() {
+ return applicationRoleRepository.allRoles();
}
}
diff --git a/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/role/man/mixins/ApplicationRoleManager_newRole.java b/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/role/man/mixins/ApplicationRoleManager_newRole.java
new file mode 100644
index 0000000..5c47fce
--- /dev/null
+++ b/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/role/man/mixins/ApplicationRoleManager_newRole.java
@@ -0,0 +1,67 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.isis.extensions.secman.applib.role.man.mixins;
+
+import javax.inject.Inject;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
+import org.apache.isis.applib.annotation.Optionality;
+import org.apache.isis.applib.annotation.Parameter;
+import org.apache.isis.applib.annotation.ParameterLayout;
+import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.extensions.secman.applib.IsisModuleExtSecmanApplib;
+import org.apache.isis.extensions.secman.applib.role.dom.ApplicationRole;
+import org.apache.isis.extensions.secman.applib.role.dom.ApplicationRoleRepository;
+import org.apache.isis.extensions.secman.applib.role.man.ApplicationRoleManager;
+import org.apache.isis.extensions.secman.applib.user.man.mixins.ApplicationUserManager_newLocalUser.DomainEvent;
+
+import lombok.RequiredArgsConstructor;
+
+@Action(
+ domainEvent = DomainEvent.class,
+ semantics = SemanticsOf.IDEMPOTENT
+)
+@ActionLayout(
+ associateWith = "allRoles",
+ sequence = "1"
+)
+@RequiredArgsConstructor
+public class ApplicationRoleManager_newRole {
+
+ public static class DomainEvent
+ extends IsisModuleExtSecmanApplib.ActionDomainEvent<ApplicationRoleManager_newRole> {}
+
+ @Inject private ApplicationRoleRepository applicationRoleRepository;
+
+ private final ApplicationRoleManager target;
+
+ @MemberSupport public ApplicationRoleManager act (
+ @Parameter(maxLength = ApplicationRole.Name.MAX_LENGTH)
+ @ParameterLayout(named="Name", typicalLength= ApplicationRole.Name.TYPICAL_LENGTH)
+ final String name,
+ @Parameter(maxLength = ApplicationRole.Description.MAX_LENGTH, optionality = Optionality.OPTIONAL)
+ @ParameterLayout(named="Description", typicalLength= ApplicationRole.Description.TYPICAL_LENGTH)
+ final String description) {
+ applicationRoleRepository.newRole(name, description);
+ return target;
+ }
+
+}
diff --git a/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/role/menu/ApplicationRoleMenu.java b/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/role/menu/ApplicationRoleMenu.java
index 18af54c..7deb1d5 100644
--- a/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/role/menu/ApplicationRoleMenu.java
+++ b/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/role/menu/ApplicationRoleMenu.java
@@ -29,14 +29,15 @@ import org.apache.isis.applib.annotation.DomainServiceLayout;
import org.apache.isis.applib.annotation.MemberSupport;
import org.apache.isis.applib.annotation.NatureOfService;
import org.apache.isis.applib.annotation.ObjectSupport;
-import org.apache.isis.applib.annotation.Optionality;
import org.apache.isis.applib.annotation.Parameter;
import org.apache.isis.applib.annotation.ParameterLayout;
import org.apache.isis.applib.annotation.PriorityPrecedence;
import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.services.factory.FactoryService;
import org.apache.isis.extensions.secman.applib.IsisModuleExtSecmanApplib;
import org.apache.isis.extensions.secman.applib.role.dom.ApplicationRole;
import org.apache.isis.extensions.secman.applib.role.dom.ApplicationRoleRepository;
+import org.apache.isis.extensions.secman.applib.role.man.ApplicationRoleManager;
import lombok.RequiredArgsConstructor;
@@ -57,6 +58,7 @@ public class ApplicationRoleMenu {
public static abstract class ActionDomainEvent<T> extends IsisModuleExtSecmanApplib.ActionDomainEvent<T> {}
private final ApplicationRoleRepository applicationRoleRepository;
+ private final FactoryService factory;
@ObjectSupport public String iconName() {
@@ -64,62 +66,44 @@ public class ApplicationRoleMenu {
}
+ // -- ROLE MANAGER
@Action(
- domainEvent = findRoles.ActionEvent.class,
- semantics = SemanticsOf.SAFE
- )
- @ActionLayout(sequence = "100.20.1")
- public class findRoles {
+ domainEvent = roleManager.ActionEvent.class,
+ semantics = SemanticsOf.IDEMPOTENT
+ )
+ @ActionLayout(
+ sequence = "100.20.1",
+ cssClassFa = "user-tag"
+ )
+ public class roleManager{
- public class ActionEvent extends ActionDomainEvent<findRoles> {}
+ public class ActionEvent extends ActionDomainEvent<roleManager> { }
- @MemberSupport public Collection<? extends ApplicationRole> act(
- @Parameter(maxLength = ApplicationRole.Name.MAX_LENGTH)
- @ParameterLayout(named = "Search", typicalLength = ApplicationRole.Name.TYPICAL_LENGTH)
- final String search) {
- return applicationRoleRepository.findNameContaining(search);
+ @MemberSupport public ApplicationRoleManager act(){
+ return factory.viewModel(new ApplicationRoleManager());
}
}
+ // -- FIND ROLES
@Action(
- domainEvent = newRole.ActionEvent.class,
- semantics = SemanticsOf.IDEMPOTENT
+ domainEvent = findRoles.ActionEvent.class,
+ semantics = SemanticsOf.SAFE
)
@ActionLayout(sequence = "100.20.2")
- public class newRole{
+ public class findRoles {
- public class ActionEvent extends ActionDomainEvent<newRole> {}
+ public class ActionEvent extends ActionDomainEvent<findRoles> {}
- @MemberSupport public ApplicationRole act (
+ @MemberSupport public Collection<? extends ApplicationRole> act(
@Parameter(maxLength = ApplicationRole.Name.MAX_LENGTH)
- @ParameterLayout(named="Name", typicalLength= ApplicationRole.Name.TYPICAL_LENGTH)
- final String name,
- @Parameter(maxLength = ApplicationRole.Description.MAX_LENGTH, optionality = Optionality.OPTIONAL)
- @ParameterLayout(named="Description", typicalLength= ApplicationRole.Description.TYPICAL_LENGTH)
- final String description) {
- return applicationRoleRepository.newRole(name, description);
- }
- }
-
-
-
- @Action(
- domainEvent = allRoles.ActionEvent.class,
- semantics = SemanticsOf.SAFE
- )
- @ActionLayout(sequence = "100.20.3")
- public class allRoles {
-
- public class ActionEvent extends ActionDomainEvent<allRoles> {}
-
- @MemberSupport public Collection<? extends ApplicationRole> act() {
- return applicationRoleRepository.allRoles();
+ @ParameterLayout(named = "Search", typicalLength = ApplicationRole.Name.TYPICAL_LENGTH)
+ final String search) {
+ return applicationRoleRepository.findNameContaining(search);
}
}
-
}
diff --git a/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/user/app/ApplicationUserManager.java b/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/user/man/ApplicationUserManager.java
similarity index 96%
rename from extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/user/app/ApplicationUserManager.java
rename to extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/user/man/ApplicationUserManager.java
index 5b598b5..770697b 100644
--- a/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/user/app/ApplicationUserManager.java
+++ b/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/user/man/ApplicationUserManager.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.extensions.secman.applib.user.app;
+package org.apache.isis.extensions.secman.applib.user.man;
import org.apache.isis.applib.annotation.DomainObject;
import org.apache.isis.applib.annotation.Nature;
diff --git a/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/user/app/ApplicationUserManager.layout.fallback.xml b/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/user/man/ApplicationUserManager.layout.fallback.xml
similarity index 100%
rename from extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/user/app/ApplicationUserManager.layout.fallback.xml
rename to extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/user/man/ApplicationUserManager.layout.fallback.xml
diff --git a/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/user/app/mixins/ApplicationUserManager_allUsers.java b/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/user/man/mixins/ApplicationUserManager_allUsers.java
similarity index 92%
rename from extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/user/app/mixins/ApplicationUserManager_allUsers.java
rename to extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/user/man/mixins/ApplicationUserManager_allUsers.java
index 176dd4c..d1ff880 100644
--- a/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/user/app/mixins/ApplicationUserManager_allUsers.java
+++ b/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/user/man/mixins/ApplicationUserManager_allUsers.java
@@ -16,16 +16,16 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.extensions.secman.applib.user.app.mixins;
+package org.apache.isis.extensions.secman.applib.user.man.mixins;
import java.util.Collection;
import javax.inject.Inject;
import org.apache.isis.applib.annotation.MemberSupport;
-import org.apache.isis.extensions.secman.applib.user.app.ApplicationUserManager;
import org.apache.isis.extensions.secman.applib.user.dom.ApplicationUser;
import org.apache.isis.extensions.secman.applib.user.dom.ApplicationUserRepository;
+import org.apache.isis.extensions.secman.applib.user.man.ApplicationUserManager;
import lombok.RequiredArgsConstructor;
diff --git a/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/user/app/mixins/ApplicationUserManager_newDelegateUser.java b/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/user/man/mixins/ApplicationUserManager_newDelegateUser.java
similarity index 95%
rename from extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/user/app/mixins/ApplicationUserManager_newDelegateUser.java
rename to extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/user/man/mixins/ApplicationUserManager_newDelegateUser.java
index 4d18d90..4475198 100644
--- a/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/user/app/mixins/ApplicationUserManager_newDelegateUser.java
+++ b/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/user/man/mixins/ApplicationUserManager_newDelegateUser.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.extensions.secman.applib.user.app.mixins;
+package org.apache.isis.extensions.secman.applib.user.man.mixins;
import javax.inject.Inject;
@@ -31,11 +31,11 @@ import org.apache.isis.core.config.IsisConfiguration;
import org.apache.isis.extensions.secman.applib.IsisModuleExtSecmanApplib;
import org.apache.isis.extensions.secman.applib.role.dom.ApplicationRole;
import org.apache.isis.extensions.secman.applib.role.dom.ApplicationRoleRepository;
-import org.apache.isis.extensions.secman.applib.user.app.ApplicationUserManager;
-import org.apache.isis.extensions.secman.applib.user.app.mixins.ApplicationUserManager_newDelegateUser.DomainEvent;
import org.apache.isis.extensions.secman.applib.user.dom.ApplicationUser;
import org.apache.isis.extensions.secman.applib.user.dom.ApplicationUserRepository;
import org.apache.isis.extensions.secman.applib.user.dom.ApplicationUserStatus;
+import org.apache.isis.extensions.secman.applib.user.man.ApplicationUserManager;
+import org.apache.isis.extensions.secman.applib.user.man.mixins.ApplicationUserManager_newDelegateUser.DomainEvent;
import lombok.RequiredArgsConstructor;
import lombok.val;
diff --git a/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/user/app/mixins/ApplicationUserManager_newLocalUser.java b/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/user/man/mixins/ApplicationUserManager_newLocalUser.java
similarity index 96%
rename from extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/user/app/mixins/ApplicationUserManager_newLocalUser.java
rename to extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/user/man/mixins/ApplicationUserManager_newLocalUser.java
index cce5665..5e9a105 100644
--- a/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/user/app/mixins/ApplicationUserManager_newLocalUser.java
+++ b/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/user/man/mixins/ApplicationUserManager_newLocalUser.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.extensions.secman.applib.user.app.mixins;
+package org.apache.isis.extensions.secman.applib.user.man.mixins;
import java.util.Objects;
@@ -35,12 +35,12 @@ import org.apache.isis.core.config.IsisConfiguration;
import org.apache.isis.extensions.secman.applib.IsisModuleExtSecmanApplib;
import org.apache.isis.extensions.secman.applib.role.dom.ApplicationRole;
import org.apache.isis.extensions.secman.applib.role.dom.ApplicationRoleRepository;
-import org.apache.isis.extensions.secman.applib.user.app.ApplicationUserManager;
-import org.apache.isis.extensions.secman.applib.user.app.mixins.ApplicationUserManager_newLocalUser.DomainEvent;
import org.apache.isis.extensions.secman.applib.user.dom.ApplicationUser;
import org.apache.isis.extensions.secman.applib.user.dom.ApplicationUserRepository;
import org.apache.isis.extensions.secman.applib.user.dom.ApplicationUserStatus;
import org.apache.isis.extensions.secman.applib.user.dom.mixins.ApplicationUser_updateEmailAddress;
+import org.apache.isis.extensions.secman.applib.user.man.ApplicationUserManager;
+import org.apache.isis.extensions.secman.applib.user.man.mixins.ApplicationUserManager_newLocalUser.DomainEvent;
import lombok.RequiredArgsConstructor;
import lombok.val;
diff --git a/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/user/app/mixins/ApplicationUserManager_newLocalUserAbstract.java b/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/user/man/mixins/ApplicationUserManager_newLocalUserAbstract.java
similarity index 95%
rename from extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/user/app/mixins/ApplicationUserManager_newLocalUserAbstract.java
rename to extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/user/man/mixins/ApplicationUserManager_newLocalUserAbstract.java
index 5f7c0e6..cc78510 100644
--- a/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/user/app/mixins/ApplicationUserManager_newLocalUserAbstract.java
+++ b/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/user/man/mixins/ApplicationUserManager_newLocalUserAbstract.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.extensions.secman.applib.user.app.mixins;
+package org.apache.isis.extensions.secman.applib.user.man.mixins;
/**
* @apiNote This mixin requires concrete implementations associated with JPA and JDO,
diff --git a/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/user/menu/ApplicationUserMenu.java b/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/user/menu/ApplicationUserMenu.java
index 39cf2ad..b444dd9 100644
--- a/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/user/menu/ApplicationUserMenu.java
+++ b/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/user/menu/ApplicationUserMenu.java
@@ -34,9 +34,9 @@ import org.apache.isis.applib.annotation.PriorityPrecedence;
import org.apache.isis.applib.annotation.SemanticsOf;
import org.apache.isis.applib.services.factory.FactoryService;
import org.apache.isis.extensions.secman.applib.IsisModuleExtSecmanApplib;
-import org.apache.isis.extensions.secman.applib.user.app.ApplicationUserManager;
import org.apache.isis.extensions.secman.applib.user.dom.ApplicationUser;
import org.apache.isis.extensions.secman.applib.user.dom.ApplicationUserRepository;
+import org.apache.isis.extensions.secman.applib.user.man.ApplicationUserManager;
import lombok.RequiredArgsConstructor;
diff --git a/extensions/security/secman/integration/src/main/resources/images/ApplicationRoleManager.png b/extensions/security/secman/integration/src/main/resources/images/ApplicationRoleManager.png
new file mode 100644
index 0000000..9cd459a
Binary files /dev/null and b/extensions/security/secman/integration/src/main/resources/images/ApplicationRoleManager.png differ
diff --git a/extensions/security/secman/integration/src/main/resources/images/ApplicationUser-locked.png b/extensions/security/secman/integration/src/main/resources/images/ApplicationUser-locked.png
index 94e8aac..8fd5bf5 100644
Binary files a/extensions/security/secman/integration/src/main/resources/images/ApplicationUser-locked.png and b/extensions/security/secman/integration/src/main/resources/images/ApplicationUser-locked.png differ