Commit 535cd83f authored by Łukasz Nowak's avatar Łukasz Nowak

Treat differently human and machines.

Person does not have to be validated to be loggable user,
but Computer or Software Instance validation state is important,
so split to two queries.
parent e10efa31
...@@ -47,6 +47,7 @@ from Products.ERP5Security.ERP5GroupManager import ConsistencyError, NO_CACHE_MO ...@@ -47,6 +47,7 @@ from Products.ERP5Security.ERP5GroupManager import ConsistencyError, NO_CACHE_MO
from Products.ERP5Type.ERP5Type \ from Products.ERP5Type.ERP5Type \
import ERP5TYPE_SECURITY_GROUP_ID_GENERATION_SCRIPT import ERP5TYPE_SECURITY_GROUP_ID_GENERATION_SCRIPT
from Products.ERP5Type.Cache import CachingMethod from Products.ERP5Type.Cache import CachingMethod
from Products.ZSQLCatalog.SQLCatalog import Query, ComplexQuery
#Form for new plugin in ZMI #Form for new plugin in ZMI
manage_addVifibMachineAuthenticationPluginForm = PageTemplateFile( manage_addVifibMachineAuthenticationPluginForm = PageTemplateFile(
...@@ -70,11 +71,14 @@ def addVifibMachineAuthenticationPlugin(dispatcher, id, title=None, REQUEST=None ...@@ -70,11 +71,14 @@ def addVifibMachineAuthenticationPlugin(dispatcher, id, title=None, REQUEST=None
def getUserByLogin(portal, login): def getUserByLogin(portal, login):
if isinstance(login, basestring): if isinstance(login, basestring):
login = login, login = login,
result = portal.portal_catalog.unrestrictedSearchResults( machine_query = Query(portal_type=["Computer", "Software Instance"],
select_expression='reference',
portal_type=["Computer", "Software Instance", "Person"],
validation_state="validated", validation_state="validated",
reference=dict(query=login, key='ExactMatch')) reference=dict(query=login, key='ExactMatch'))
person_query = Query(portal_type=["Person"],
reference=dict(query=login, key='ExactMatch'))
result = portal.portal_catalog.unrestrictedSearchResults(
query=ComplexQuery(machine_query, person_query, operator="OR"),
select_expression='reference')
# XXX: Here, we filter catalog result list ALTHOUGH we did pass # XXX: Here, we filter catalog result list ALTHOUGH we did pass
# parameters to unrestrictedSearchResults to restrict result set. # parameters to unrestrictedSearchResults to restrict result set.
# This is done because the following values can match person with # This is done because the following values can match person with
...@@ -92,7 +96,6 @@ def getUserByLogin(portal, login): ...@@ -92,7 +96,6 @@ def getUserByLogin(portal, login):
# by default (feature). # by default (feature).
return [x.getObject() for x in result if x['reference'] in login] return [x.getObject() for x in result if x['reference'] in login]
class VifibMachineAuthenticationPlugin(BasePlugin): class VifibMachineAuthenticationPlugin(BasePlugin):
""" """
Plugin to authenicate as machines. Plugin to authenicate as machines.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment