• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

zopefoundation / Products.PluggableAuthService / 5235276870

pending completion
5235276870

push

github

web-flow
Drop support for Python 2.7, 3.5, 3.6. (#116)

* Drop zserver extra in setup.py. Thus dropping FTP support.
* Drop support for Zope < 5.
Co-authored-by: Jens Vagelpohl <jens@plyp.com>

1288 of 1745 branches covered (73.81%)

Branch coverage included in aggregate %.

127 of 127 new or added lines in 30 files covered. (100.0%)

9619 of 10349 relevant lines covered (92.95%)

0.93 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

97.85
/src/Products/PluggableAuthService/__init__.py
1
##############################################################################
2
#
3
# Copyright (c) 2001 Zope Foundation and Contributors
4
#
5
# This software is subject to the provisions of the Zope Public License,
6
# Version 2.1 (ZPL).  A copy of the ZPL should accompany this
7
# distribution.
8
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
9
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
10
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
11
# FOR A PARTICULAR PURPOSE.
12
#
13
##############################################################################
14
""" PluggableAuthService product initialization.
1✔
15
"""
16
from AccessControl.Permissions import manage_users as ManageUsers
1✔
17
from App.Management import Navigation
1✔
18

19
from Products.GenericSetup import BASE
1✔
20
from Products.GenericSetup import profile_registry
1✔
21
from Products.GenericSetup.tool import SetupTool
1✔
22

23
from . import PluggableAuthService
1✔
24
from .interfaces.authservice import IPluggableAuthService
1✔
25
from .permissions import ManageGroups
1✔
26
from .PluggableAuthService import registerMultiPlugin
1✔
27
from .plugins import ChallengeProtocolChooser as CPC
1✔
28
from .plugins import CookieAuthHelper as CAH
1✔
29
from .plugins import DelegatingMultiPlugin as DMP
1✔
30
from .plugins import DomainAuthHelper as DAH
1✔
31
from .plugins import DynamicGroupsPlugin as DGP
1✔
32
from .plugins import HTTPBasicAuthHelper as HBAH
1✔
33
from .plugins import InlineAuthHelper as IAH
1✔
34
from .plugins import LocalRolePlugin
1✔
35
from .plugins import NotCompetentHelper as NCH
1✔
36
from .plugins import RecursiveGroupsPlugin as RGP
1✔
37
from .plugins import RequestTypeSniffer as RTS
1✔
38
from .plugins import ScriptablePlugin
1✔
39
from .plugins import SearchPrincipalsPlugin as SPP
1✔
40
from .plugins import SessionAuthHelper as SAH
1✔
41
from .plugins import ZODBGroupManager
1✔
42
from .plugins import ZODBRoleManager
1✔
43
from .plugins import ZODBUserManager
1✔
44

45

46
registerMultiPlugin(HBAH.HTTPBasicAuthHelper.meta_type)
1✔
47
registerMultiPlugin(IAH.InlineAuthHelper.meta_type)
1✔
48
registerMultiPlugin(DAH.DomainAuthHelper.meta_type)
1✔
49
registerMultiPlugin(SAH.SessionAuthHelper.meta_type)
1✔
50
registerMultiPlugin(CAH.CookieAuthHelper.meta_type)
1✔
51
registerMultiPlugin(ScriptablePlugin.ScriptablePlugin.meta_type)
1✔
52
registerMultiPlugin(ZODBGroupManager.ZODBGroupManager.meta_type)
1✔
53
registerMultiPlugin(ZODBUserManager.ZODBUserManager.meta_type)
1✔
54
registerMultiPlugin(ZODBRoleManager.ZODBRoleManager.meta_type)
1✔
55
registerMultiPlugin(LocalRolePlugin.LocalRolePlugin.meta_type)
1✔
56
registerMultiPlugin(DMP.DelegatingMultiPlugin.meta_type)
1✔
57
registerMultiPlugin(SPP.SearchPrincipalsPlugin.meta_type)
1✔
58
registerMultiPlugin(RGP.RecursiveGroupsPlugin.meta_type)
1✔
59
registerMultiPlugin(DGP.DynamicGroupsPlugin.meta_type)
1✔
60
registerMultiPlugin(CPC.ChallengeProtocolChooser.meta_type)
1✔
61
registerMultiPlugin(RTS.RequestTypeSniffer.meta_type)
1✔
62
registerMultiPlugin(NCH.NotCompetent_byRoles.meta_type)
1✔
63
registerMultiPlugin(SetupTool.meta_type)
1✔
64

65

66
# monkey patch Zope to cause zmi logout to be PAS-aware
67
zope_manage_zmi_logout = Navigation.manage_zmi_logout
1✔
68

69

70
def manage_zmi_logout(self, REQUEST, RESPONSE):
1✔
71
    """Logout current user"""
72
    # keep despite doubt that it will work
73
    p = getattr(REQUEST, '_logout_path', None)
1✔
74
    if p is not None:
1!
75
        return self.restrictedTraverse(p)
×
76

77
    from AccessControl import getSecurityManager
1✔
78
    user = getSecurityManager().getUser()
1✔
79
    if user is None or 'Authenticated' not in user.getRoles():
1✔
80
        return 'You are not/no longer logged in'
1✔
81

82
    acl_users = user.aq_parent
1✔
83

84
    if IPluggableAuthService.providedBy(acl_users):
1✔
85
        return acl_users.logout(REQUEST)
1✔
86
    else:
87
        return zope_manage_zmi_logout(self, REQUEST, RESPONSE)
1✔
88

89

90
Navigation.manage_zmi_logout = manage_zmi_logout
1✔
91

92

93
def initialize(context):
1✔
94

95
    context.registerClass(PluggableAuthService.PluggableAuthService,
1✔
96
                          permission=ManageUsers,
97
                          constructors=(
98
                              PluggableAuthService.addPluggableAuthService,),
99
                          icon='www/PluggableAuthService.png')
100

101
    context.registerClass(HBAH.HTTPBasicAuthHelper,
1✔
102
                          permission=ManageUsers,
103
                          constructors=(HBAH.manage_addHTTPBasicAuthHelperForm,
104
                                        HBAH.addHTTPBasicAuthHelper),
105
                          visibility=None,
106
                          icon='plugins/www/HTTPBasicAuthHelper.png')
107

108
    context.registerClass(IAH.InlineAuthHelper, permission=ManageUsers,
1✔
109
                          constructors=(IAH.manage_addInlineAuthHelperForm,
110
                                        IAH.addInlineAuthHelper),
111
                          visibility=None,
112
                          icon='plugins/www/InlineAuthHelper.png')
113

114
    context.registerClass(CAH.CookieAuthHelper, permission=ManageUsers,
1✔
115
                          constructors=(CAH.manage_addCookieAuthHelperForm,
116
                                        CAH.addCookieAuthHelper),
117
                          visibility=None,
118
                          icon='plugins/www/CookieAuthHelper.gif')
119

120
    context.registerClass(DAH.DomainAuthHelper, permission=ManageUsers,
1✔
121
                          constructors=(DAH.manage_addDomainAuthHelperForm,
122
                                        DAH.manage_addDomainAuthHelper),
123
                          visibility=None,
124
                          icon='plugins/www/DomainAuthHelper.png')
125

126
    context.registerClass(SAH.SessionAuthHelper, permission=ManageUsers,
1✔
127
                          constructors=(SAH.manage_addSessionAuthHelperForm,
128
                                        SAH.manage_addSessionAuthHelper),
129
                          visibility=None,
130
                          icon='plugins/www/SessionAuthHelper.gif')
131

132
    context.registerClass(ScriptablePlugin.ScriptablePlugin,
1✔
133
                          permission=ManageUsers,
134
                          constructors=(
135
                              ScriptablePlugin.manage_addScriptablePluginForm,
136
                              ScriptablePlugin.addScriptablePlugin),
137
                          visibility=None,
138
                          icon='plugins/www/ScriptablePlugin.png')
139

140
    context.registerClass(ZODBGroupManager.ZODBGroupManager,
1✔
141
                          permission=ManageGroups,
142
                          constructors=(
143
                              ZODBGroupManager.manage_addZODBGroupManagerForm,
144
                              ZODBGroupManager.addZODBGroupManager),
145
                          visibility=None,
146
                          icon='plugins/www/ZODBGroupManager.gif')
147

148
    context.registerClass(ZODBUserManager.ZODBUserManager,
1✔
149
                          permission=ManageUsers,
150
                          constructors=(
151
                              ZODBUserManager.manage_addZODBUserManagerForm,
152
                              ZODBUserManager.addZODBUserManager),
153
                          visibility=None,
154
                          icon='plugins/www/ZODBUserManager.gif')
155

156
    context.registerClass(ZODBRoleManager.ZODBRoleManager,
1✔
157
                          permission=ManageUsers,
158
                          constructors=(
159
                              ZODBRoleManager.manage_addZODBRoleManagerForm,
160
                              ZODBRoleManager.addZODBRoleManager),
161
                          visibility=None,
162
                          icon='plugins/www/ZODBRoleManager.gif')
163

164
    context.registerClass(LocalRolePlugin.LocalRolePlugin,
1✔
165
                          permission=ManageUsers,
166
                          constructors=(
167
                              LocalRolePlugin.manage_addLocalRolePluginForm,
168
                              LocalRolePlugin.addLocalRolePlugin),
169
                          visibility=None,
170
                          icon='plugins/www/ZODBRoleManager.gif')
171

172
    context.registerClass(DMP.DelegatingMultiPlugin, permission=ManageUsers,
1✔
173
                          constructors=(
174
                              DMP.manage_addDelegatingMultiPluginForm,
175
                              DMP.manage_addDelegatingMultiPlugin),
176
                          visibility=None,
177
                          icon='plugins/www/DelegatingMultiPlugin.png')
178

179
    context.registerClass(SPP.SearchPrincipalsPlugin, permission=ManageUsers,
1✔
180
                          constructors=(SPP.addSearchPrincipalsPluginForm,
181
                                        SPP.addSearchPrincipalsPlugin),
182
                          visibility=None,
183
                          icon='plugins/www/DelegatingMultiPlugin.png')
184

185
    context.registerClass(RGP.RecursiveGroupsPlugin, permission=ManageUsers,
1✔
186
                          constructors=(
187
                              RGP.manage_addRecursiveGroupsPluginForm,
188
                              RGP.addRecursiveGroupsPlugin),
189
                          visibility=None,
190
                          icon='plugins/www/RecursiveGroupsPlugin.png')
191

192
    context.registerClass(DGP.DynamicGroupsPlugin, permission=ManageUsers,
1✔
193
                          constructors=(DGP.manage_addDynamicGroupsPluginForm,
194
                                        DGP.addDynamicGroupsPlugin),
195
                          visibility=None,
196
                          icon='plugins/www/DynamicGroupsPlugin.png')
197

198
    context.registerClass(CPC.ChallengeProtocolChooser, permission=ManageUsers,
1✔
199
                          constructors=(
200
                              CPC.manage_addChallengeProtocolChooserForm,
201
                              CPC.addChallengeProtocolChooserPlugin),
202
                          visibility=None,
203
                          icon='plugins/www/DelegatingMultiPlugin.png')
204

205
    context.registerClass(RTS.RequestTypeSniffer, permission=ManageUsers,
1✔
206
                          constructors=(RTS.manage_addRequestTypeSnifferForm,
207
                                        RTS.addRequestTypeSnifferPlugin),
208
                          visibility=None,
209
                          icon='plugins/www/DelegatingMultiPlugin.png')
210

211
    context.registerClass(NCH.NotCompetent_byRoles, permission=ManageUsers,
1✔
212
                          constructors=(NCH.manage_addNotCompetent_byRolesForm,
213
                                        NCH.manage_addNotCompetent_byRoles),
214
                          visibility=None)
215

216
    context.registerClass(PluggableAuthService.PluggableAuthService,
1✔
217
                          meta_type='Configured PAS', permission=ManageUsers,
218
                          constructors=(
219
                              PluggableAuthService.addConfiguredPASForm,
220
                              PluggableAuthService.addConfiguredPAS),
221
                          icon='www/PluggableAuthService.png')
222

223
    try:
1✔
224
        profile_registry.getProfileInfo('PluggableAuthService:simple')
1✔
225
    except KeyError:
1✔
226
        # not yet registered
227
        profile_registry.registerProfile('simple',
1✔
228
                                         'Simple PAS Content Profile',
229
                                         'Content for a simple PAS.',
230
                                         'profiles/simple',
231
                                         'PluggableAuthService',
232
                                         BASE, IPluggableAuthService)
233

234
    try:
1✔
235
        profile_registry.getProfileInfo('PluggableAuthService:empty')
1✔
236
    except KeyError:
1✔
237
        # not yet registered
238
        profile_registry.registerProfile('empty', 'Empty PAS Content Profile',
1✔
239
                                         'Content for an empty PAS '
240
                                         '(plugins registry only).',
241
                                         'profiles/empty',
242
                                         'PluggableAuthService',
243
                                         BASE, IPluggableAuthService)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc