Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
E
erp5_rtl_support
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Romain Courteaud
erp5_rtl_support
Commits
8c3aa9e7
Commit
8c3aa9e7
authored
Jul 18, 2011
by
Ivan Tyagov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ILoginAccountProvider implementation.
parent
5d4862dc
Changes
4
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
559 additions
and
1 deletion
+559
-1
product/ERP5/Document/Person.py
product/ERP5/Document/Person.py
+2
-1
product/ERP5/interfaces/login_account_provider.py
product/ERP5/interfaces/login_account_provider.py
+63
-0
product/ERP5/mixin/login_account_provider.py
product/ERP5/mixin/login_account_provider.py
+86
-0
product/ERP5/tests/testAuthenticationPolicy.py
product/ERP5/tests/testAuthenticationPolicy.py
+408
-0
No files found.
product/ERP5/Document/Person.py
View file @
8c3aa9e7
...
...
@@ -33,6 +33,7 @@ from Products.ERP5Type import Permissions, PropertySheet, interfaces
from
Products.ERP5Type.XMLObject
import
XMLObject
from
Products.ERP5.mixin.encrypted_password
import
EncryptedPasswordMixin
from
Products.ERP5Type.TransactionalVariable
import
getTransactionalVariable
from
Products.ERP5.mixin.login_account_provider
import
LoginAccountProviderMixin
try
:
from
Products
import
PluggableAuthService
...
...
@@ -41,7 +42,7 @@ except ImportError:
PluggableAuthService
=
None
#class Person(Node, XMLObject):
class
Person
(
EncryptedPasswordMixin
,
XMLObject
):
class
Person
(
LoginAccountProviderMixin
,
EncryptedPasswordMixin
,
XMLObject
):
"""
An Person object holds the information about
an person (ex. you, me, someone in the company,
...
...
product/ERP5/interfaces/login_account_provider.py
0 → 100644
View file @
8c3aa9e7
# -*- coding: utf-8 -*-
##############################################################################
#
# Copyright (c) 2011 Nexedi SA and Contributors. All Rights Reserved.
# Ivan Tyagov <ivan@nexedi.com>
#
# WARNING: This program as such is intended to be used by professional
# programmers who take the whole responsability of assessing all potential
# consequences resulting from its eventual inadequacies and bugs
# End users who are looking for a ready-to-use solution with commercial
# garantees and support are strongly adviced to contract a Free Software
# Service Company
#
# This program is Free Software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#
##############################################################################
from
zope.interface
import
Interface
class
ILoginAccountProvider
(
Interface
):
"""
Documents which implement the ILoginAccountProvider interface are considered as
providers of ERP5 login accounts.
"""
def
notifyLoginFailure
(
**
kw
):
"""
Notify an authentication failure.
"""
def
isLoginBlocked
(
**
kw
):
"""
Is this login blocked?
"""
def
isPasswordExpired
(
**
kw
):
"""
Is password expired?
"""
def
isPasswordValid
(
password
,
**
kw
):
"""
Is password valid?
"""
def
isPasswordAlreadyUsed
(
self
,
password
):
"""
Return if password has already been used.
"""
\ No newline at end of file
product/ERP5/mixin/login_account_provider.py
0 → 100644
View file @
8c3aa9e7
# -*- coding: utf-8 -*-
##############################################################################
#
# Copyright (c) 2011 Nexedi SA and Contributors. All Rights Reserved.
# Ivan Tyagov <ivan@nexedi.com>
#
# WARNING: This program as such is intended to be used by professional
# programmers who take the whole responsability of assessing all potential
# consequences resulting from its eventual inadequacies and bugs
# End users who are looking for a ready-to-use solution with commercial
# garantees and support are strongly adviced to contract a Free Software
# Service Company
#
# This program is Free Software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#
##############################################################################
from
Products.ERP5Type
import
Permissions
from
AccessControl.AuthEncoding
import
pw_validate
from
AccessControl
import
ClassSecurityInfo
class
LoginAccountProviderMixin
:
"""
This class provides a generic implementation of ILoginAccountProvider.
"""
# Declarative security
security
=
ClassSecurityInfo
()
security
.
declareProtected
(
Permissions
.
SetOwnPassword
,
'notifyLoginFailure'
)
def
notifyLoginFailure
(
self
,
**
kw
):
"""
Notify an authentication failure.
"""
method
=
self
.
_getTypeBasedMethod
(
'notifyLoginFailure'
)
return
method
(
**
kw
)
security
.
declareProtected
(
Permissions
.
SetOwnPassword
,
'isLoginBlocked'
)
def
isLoginBlocked
(
self
,
**
kw
):
"""
Is this login blocked?
"""
method
=
self
.
_getTypeBasedMethod
(
'isLoginBlocked'
)
return
method
(
**
kw
)
security
.
declareProtected
(
Permissions
.
SetOwnPassword
,
'isPasswordExpired'
)
def
isPasswordExpired
(
self
,
**
kw
):
"""
Is password expired?
"""
method
=
self
.
_getTypeBasedMethod
(
'isPasswordExpired'
)
return
method
(
**
kw
)
security
.
declareProtected
(
Permissions
.
SetOwnPassword
,
'isPasswordValid'
)
def
isPasswordValid
(
self
,
password
,
**
kw
):
"""
Is password valid?
"""
method
=
self
.
_getTypeBasedMethod
(
'isPasswordValid'
)
return
method
(
password
,
**
kw
)
security
.
declareProtected
(
Permissions
.
SetOwnPassword
,
'isPasswordAlreadyUsed'
)
def
isPasswordAlreadyUsed
(
self
,
password
):
"""
Return if password has already been used.
"""
preferred_number_of_last_password_to_check
=
self
.
portal_preferences
.
getPreferredNumberOfLastPasswordToCheck
()
password_list
=
self
.
getLastChangedPasswordValueList
()
+
[
self
.
getPassword
()]
password_list
.
reverse
()
for
encoded_password
in
password_list
[:
preferred_number_of_last_password_to_check
]:
if
pw_validate
(
encoded_password
,
password
):
return
True
return
False
\ No newline at end of file
product/ERP5/tests/testAuthenticationPolicy.py
0 → 100644
View file @
8c3aa9e7
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment