Yair Zaslavsky has uploaded a new change for review.

Change subject: aaa: Add support to principal field in ui,rest-api, and 
built-in extension
......................................................................

aaa: Add support to principal field in ui,rest-api, and built-in extension

Change-Id: I5ba5d75449afd1ecdf75e7b335b4ab5cb32d10ce
Bug-Url: https://bugzilla.redhat.com/1120720
Toppic: AAA
Signed-off-by: Yair Zaslavsky <yzasl...@redhat.com>
---
M 
backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/AuthzUtils.java
A 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetDirectoryUserByPrincipalQuery.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/aaa/DirectoryUtils.java
M 
backend/manager/modules/builtin-extensions/src/main/java/org/ovirt/engine/extensions/aaa/builtin/internal/InternalAuthz.java
M 
backend/manager/modules/builtin-extensions/src/main/java/org/ovirt/engine/extensions/aaa/builtin/kerberosldap/KerberosLdapAuthz.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/aaa/DirectoryUser.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/aaa/DbUser.java
A 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/GetDirectoryUserByPrincipalParameters.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java
M 
backend/manager/modules/restapi/interface/definition/src/main/resources/api.xsd
M 
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/aaa/BackendUsersResource.java
M 
backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/UserMapper.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/configure/SystemPermissionView.java
13 files changed, 104 insertions(+), 12 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/40/32340/1

diff --git 
a/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/AuthzUtils.java
 
b/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/AuthzUtils.java
index 14ccaa7..2b8cfbf 100644
--- 
a/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/AuthzUtils.java
+++ 
b/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/AuthzUtils.java
@@ -35,15 +35,23 @@
     }
 
     public static ExtMap fetchPrincipalRecord(final ExtensionProxy extension, 
ExtMap authRecord) {
+        return fetchPrincipalRecordImpl(extension, 
Authn.InvokeKeys.AUTH_RECORD, authRecord);
+    }
+
+    public static ExtMap fetchPrincipalRecord(final ExtensionProxy extension, 
String principal) {
+        return fetchPrincipalRecordImpl(extension, Authz.InvokeKeys.PRINCIPAL, 
principal);
+    }
+
+    private static ExtMap fetchPrincipalRecordImpl(final ExtensionProxy 
extension, ExtKey key, Object value) {
         ExtMap ret = null;
         ExtMap output = extension.invoke(new ExtMap().mput(
                 Base.InvokeKeys.COMMAND,
                 Authz.InvokeCommands.FETCH_PRINCIPAL_RECORD
                 ).mput(
-                        Authn.InvokeKeys.AUTH_RECORD,
-                        authRecord
+                        key,
+                        value
                 ));
-        if (output.<Integer>get(Authz.InvokeKeys.STATUS) == 
Authz.Status.SUCCESS) {
+        if (output.<Integer> get(Authz.InvokeKeys.STATUS) == 
Authz.Status.SUCCESS) {
             ret = output.<ExtMap> get(Authz.InvokeKeys.PRINCIPAL_RECORD);
         }
         return ret;
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetDirectoryUserByPrincipalQuery.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetDirectoryUserByPrincipalQuery.java
new file mode 100644
index 0000000..1304754
--- /dev/null
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetDirectoryUserByPrincipalQuery.java
@@ -0,0 +1,34 @@
+package org.ovirt.engine.core.bll;
+
+import org.ovirt.engine.core.aaa.AuthzUtils;
+import org.ovirt.engine.core.bll.aaa.DirectoryUtils;
+import org.ovirt.engine.core.bll.context.EngineContext;
+import 
org.ovirt.engine.core.common.queries.GetDirectoryUserByPrincipalParameters;
+import org.ovirt.engine.core.utils.extensionsmgr.EngineExtensionsManager;
+
+public class GetDirectoryUserByPrincipalQuery<P extends 
GetDirectoryUserByPrincipalParameters> extends QueriesCommandBase<P> {
+
+    public GetDirectoryUserByPrincipalQuery(P parameters, EngineContext 
engineContext) {
+        super(parameters, engineContext);
+    }
+
+    public GetDirectoryUserByPrincipalQuery(P parameters) {
+        this(parameters, null);
+    }
+
+    @Override
+    protected void executeQueryCommand() {
+        getQueryReturnValue().setReturnValue(
+                DirectoryUtils.mapPrincipalRecordToDirectoryUser(
+                        getParameters().getAuthz(),
+                        AuthzUtils.fetchPrincipalRecord(
+                                
EngineExtensionsManager.getInstance().getExtensionByName(
+                                        getParameters().getAuthz()
+                                        ),
+                                getParameters().getPrincnipal()
+                        )
+                )
+        );
+    }
+
+}
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/aaa/DirectoryUtils.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/aaa/DirectoryUtils.java
index 08cf1a2..9c891de 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/aaa/DirectoryUtils.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/aaa/DirectoryUtils.java
@@ -157,6 +157,7 @@
             directoryUser.setLastName(principalRecord.<String> 
get(Authz.PrincipalRecord.LAST_NAME));
             directoryUser.setEmail(principalRecord.<String> 
get(Authz.PrincipalRecord.EMAIL));
             directoryUser.setTitle(principalRecord.<String> 
get(Authz.PrincipalRecord.TITLE));
+            directoryUser.setPrincipal(principalRecord.<String> 
get(Authz.PrincipalRecord.PRINCIPAL));
             List<DirectoryGroup> directoryGroups = new 
ArrayList<DirectoryGroup>();
             List<ExtMap> groups = principalRecord.<List<ExtMap>> 
get(Authz.PrincipalRecord.GROUPS);
             if (groups != null) {
diff --git 
a/backend/manager/modules/builtin-extensions/src/main/java/org/ovirt/engine/extensions/aaa/builtin/internal/InternalAuthz.java
 
b/backend/manager/modules/builtin-extensions/src/main/java/org/ovirt/engine/extensions/aaa/builtin/internal/InternalAuthz.java
index 44f33d1..f36cf14 100644
--- 
a/backend/manager/modules/builtin-extensions/src/main/java/org/ovirt/engine/extensions/aaa/builtin/internal/InternalAuthz.java
+++ 
b/backend/manager/modules/builtin-extensions/src/main/java/org/ovirt/engine/extensions/aaa/builtin/internal/InternalAuthz.java
@@ -76,7 +76,8 @@
     }
 
     private void doFetchPrincipalRecord(ExtMap input, ExtMap output) {
-        String principal = input.<ExtMap> 
get(Authn.InvokeKeys.AUTH_RECORD).get(Authn.AuthRecord.PRINCIPAL);
+        ExtMap authRecord = input.<ExtMap> get(Authn.InvokeKeys.AUTH_RECORD);
+        String principal = authRecord != null ? 
authRecord.<String>get(Authn.AuthRecord.PRINCIPAL) : input.<String> 
get(Authz.InvokeKeys.PRINCIPAL);
         if (principal.equals(adminUser.<String> 
get(Authz.PrincipalRecord.NAME))) {
             output.put(Authz.InvokeKeys.PRINCIPAL_RECORD, adminUser);
         }
@@ -125,6 +126,8 @@
                 ).mput(
                         Authz.PrincipalRecord.ID,
                         configuration.getProperty("config.authz.user.id")
+                ).mput(Authz.PrincipalRecord.PRINCIPAL,
+                        userName
                 );
 
     }
diff --git 
a/backend/manager/modules/builtin-extensions/src/main/java/org/ovirt/engine/extensions/aaa/builtin/kerberosldap/KerberosLdapAuthz.java
 
b/backend/manager/modules/builtin-extensions/src/main/java/org/ovirt/engine/extensions/aaa/builtin/kerberosldap/KerberosLdapAuthz.java
index 6b0929a..01a5758 100644
--- 
a/backend/manager/modules/builtin-extensions/src/main/java/org/ovirt/engine/extensions/aaa/builtin/kerberosldap/KerberosLdapAuthz.java
+++ 
b/backend/manager/modules/builtin-extensions/src/main/java/org/ovirt/engine/extensions/aaa/builtin/kerberosldap/KerberosLdapAuthz.java
@@ -177,11 +177,12 @@
     }
 
     private void doFetchPrincipalRecord(ExtMap input, ExtMap output) {
+        ExtMap authRecord = input.<ExtMap> get(Authn.InvokeKeys.AUTH_RECORD);
         LdapReturnValueBase ldapResult =
                 broker.runAdAction(AdActionType.GetAdUserByUserName, new 
LdapSearchByUserNameParameters(configuration,
                         null,
-                        getDirectoryName(),
-                        input.<ExtMap> 
get(Authn.InvokeKeys.AUTH_RECORD).<String> get(Authn.AuthRecord.PRINCIPAL)));
+                        getDirectoryName(), authRecord != null ? 
authRecord.<String> get(Authn.AuthRecord.PRINCIPAL)
+                                : input.<String> 
get(Authz.InvokeKeys.PRINCIPAL)));
         output.mput(
                 Authz.InvokeKeys.PRINCIPAL_RECORD,
                 mapLdapUser(((LdapUser) ldapResult.getReturnValue()))
@@ -275,6 +276,9 @@
                 ).mput(
                         Authz.PrincipalRecord.TITLE,
                         user.getTitle()
+                ).mput(
+                        Authz.PrincipalRecord.PRINCIPAL,
+                        user.getUserName()
                 );
         if (user.getGroups() != null) {
             List<ExtMap> groups = new ArrayList<>();
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/aaa/DirectoryUser.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/aaa/DirectoryUser.java
index 9f5961d..8b14f16 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/aaa/DirectoryUser.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/aaa/DirectoryUser.java
@@ -11,6 +11,7 @@
     private String title;
     private String email;
     private String department;
+    private String principal;
 
     // Flag indicating if this user has the administrator role:
     private boolean isAdmin;
@@ -68,6 +69,14 @@
         this.title = title;
     }
 
+    public String getPrincipal() {
+        return principal;
+    }
+
+    public void setPrincipal(String principal) {
+        this.principal = principal;
+    }
+
     @Override
     public int hashCode() {
         final int prime = 31;
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/aaa/DbUser.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/aaa/DbUser.java
index 7e8beec..d62a68d 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/aaa/DbUser.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/aaa/DbUser.java
@@ -87,7 +87,7 @@
         externalId = directoryUser.getId();
         domain = directoryUser.getDirectoryName();
         namespace = directoryUser.getNamespace();
-        loginName = directoryUser.getName();
+        loginName = directoryUser.getPrincipal() != null ? 
directoryUser.getPrincipal() : directoryUser.getName();
         firstName = directoryUser.getFirstName();
         lastName = directoryUser.getLastName();
         department = directoryUser.getDepartment();
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/GetDirectoryUserByPrincipalParameters.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/GetDirectoryUserByPrincipalParameters.java
new file mode 100644
index 0000000..1a84c7f
--- /dev/null
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/GetDirectoryUserByPrincipalParameters.java
@@ -0,0 +1,26 @@
+package org.ovirt.engine.core.common.queries;
+
+public class GetDirectoryUserByPrincipalParameters extends 
VdcQueryParametersBase {
+
+    private static final long serialVersionUID = 4178594464331010016L;
+
+    private String principal;
+    private String authz;
+
+    public GetDirectoryUserByPrincipalParameters() {
+    }
+
+    public GetDirectoryUserByPrincipalParameters(String authz, String 
principal) {
+        this.principal = principal;
+        this.authz = authz;
+    }
+
+    public String getPrincnipal() {
+        return principal;
+    }
+
+    public String getAuthz() {
+        return authz;
+    }
+
+}
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java
index 132859e..1778391 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java
@@ -157,6 +157,7 @@
     GetDirectoryUserById(VdcQueryAuthType.User),
     GetDirectoryGroupById(VdcQueryAuthType.User),
     GetAvailableNamespaces(VdcQueryAuthType.User),
+    GetDirectoryUserByPrincipal(VdcQueryAuthType.User),
 
     // Groups queries:
     GetAllDbGroups(VdcQueryAuthType.User),
diff --git 
a/backend/manager/modules/restapi/interface/definition/src/main/resources/api.xsd
 
b/backend/manager/modules/restapi/interface/definition/src/main/resources/api.xsd
index fd019a7..4162b2d 100644
--- 
a/backend/manager/modules/restapi/interface/definition/src/main/resources/api.xsd
+++ 
b/backend/manager/modules/restapi/interface/definition/src/main/resources/api.xsd
@@ -1912,6 +1912,7 @@
           <xs:element name="last_name" type="xs:string" minOccurs="0" 
maxOccurs="1"/>
           <!-- generally name@domain -->
           <xs:element name="user_name" type="xs:string" minOccurs="0" 
maxOccurs="1"/>
+          <xs:element name="principal" type="xs:string" minOccurs="0" 
maxOccurs="1"/>
           <xs:element name="password" type="xs:string" minOccurs="0" 
maxOccurs="1"/>
           <xs:element name="email" type="xs:string" minOccurs="0" 
maxOccurs="1"/>
           <!-- used only to represent the initial role assignments for a
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/aaa/BackendUsersResource.java
 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/aaa/BackendUsersResource.java
index a5fcb8b..fe0a8dd 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/aaa/BackendUsersResource.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/aaa/BackendUsersResource.java
@@ -27,6 +27,7 @@
 import org.ovirt.engine.core.common.businessentities.aaa.DbUser;
 import org.ovirt.engine.core.common.interfaces.SearchType;
 import org.ovirt.engine.core.common.queries.DirectoryIdQueryParameters;
+import 
org.ovirt.engine.core.common.queries.GetDirectoryUserByPrincipalParameters;
 import org.ovirt.engine.core.common.queries.IdQueryParameters;
 import org.ovirt.engine.core.common.queries.VdcQueryParametersBase;
 import org.ovirt.engine.core.common.queries.VdcQueryType;
@@ -209,8 +210,9 @@
             result = getUserById(directoryName, namespace, 
user.getDomainEntryId());
         } else if (user.isSetId()) {
             result = getUserById(directoryName, namespace, user.getId());
-        } else {
-            if (user.isSetUserName()) {
+        } else  if (user.isSetPrincipal()) {
+            result = getEntity(DirectoryUser.class, 
VdcQueryType.GetDirectoryUserByPrincipal, new 
GetDirectoryUserByPrincipalParameters(directoryName, user.getPrincipal()), 
user.getPrincipal());
+        } else if (user.isSetUserName()) {
                 result = getEntity(
                         DirectoryUser.class,
                         SearchType.DirectoryUser,
@@ -220,8 +222,6 @@
                                 directoryName)
                         );
             }
-
-        }
         return result;
     }
 
diff --git 
a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/UserMapper.java
 
b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/UserMapper.java
index 76d7a15..172f83a 100644
--- 
a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/UserMapper.java
+++ 
b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/UserMapper.java
@@ -21,6 +21,7 @@
         User model = template != null ? template : new User();
         model.setName(entity.getFirstName());
         model.setUserName(entity.getLoginName() + "@" + entity.getDomain());
+        model.setPrincipal(entity.getLoginName());
         model.setId(entity.getId().toString());
         model.setLastName(entity.getLastName());
         model.setEmail(entity.getEmail());
@@ -52,6 +53,7 @@
         model.setLastName(entity.getLastName());
         model.setEmail(entity.getEmail());
         model.setDepartment(entity.getDepartment());
+        model.setPrincipal(entity.getPrincipal());
         model.setNamespace(entity.getNamespace());
         if (entity.getGroups() != null) {
             model.setGroups(new Groups());
@@ -72,7 +74,9 @@
     @Mapping(from = User.class, to = DbUser.class)
     public static DbUser map(User model, DbUser template) {
         DbUser entity = template != null? template: new DbUser();
-        if (model.isSetName()) {
+        if (model.isSetPrincipal()) {
+            entity.setLoginName(model.getPrincipal());
+        } else if (model.isSetName()) {
             entity.setLoginName(model.getName());
         }
         if (model.isSetId()) {
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/configure/SystemPermissionView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/configure/SystemPermissionView.java
index 37d7002..f74793b 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/configure/SystemPermissionView.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/configure/SystemPermissionView.java
@@ -69,6 +69,7 @@
                 getTableHeaderlessResources(), getTableResources(), eventBus, 
clientStorage);
 
         content.add(table);
+        table.enableColumnResizing();
 
         table.addColumn(new PermissionTypeColumn(), constants.empty(), 
"30px"); //$NON-NLS-1$
 


-- 
To view, visit http://gerrit.ovirt.org/32340
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I5ba5d75449afd1ecdf75e7b335b4ab5cb32d10ce
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: ovirt-engine-3.5
Gerrit-Owner: Yair Zaslavsky <yzasl...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to