17 # import interfaces |
17 # import interfaces |
18 from pyams_security.interfaces import IAdminAuthenticationPlugin, ISecurityManager |
18 from pyams_security.interfaces import IAdminAuthenticationPlugin, ISecurityManager |
19 from pyams_security.zmi.interfaces import ISecurityManagerToolbarAddingMenu |
19 from pyams_security.zmi.interfaces import ISecurityManagerToolbarAddingMenu |
20 from pyams_skin.interfaces import IContentHelp |
20 from pyams_skin.interfaces import IContentHelp |
21 from pyams_skin.layer import IPyAMSLayer |
21 from pyams_skin.layer import IPyAMSLayer |
22 from z3c.form.interfaces import DISPLAY_MODE |
22 from z3c.form.interfaces import DISPLAY_MODE, IDataExtractedEvent |
23 from zope.component.interfaces import ISite |
23 from zope.component.interfaces import ISite |
24 |
24 |
25 # import packages |
25 # import packages |
26 from pyams_form.form import AJAXAddForm, AJAXEditForm |
26 from pyams_form.form import AJAXAddForm, AJAXEditForm |
27 from pyams_pagelet.pagelet import pagelet_config |
27 from pyams_pagelet.pagelet import pagelet_config |
32 from pyams_utils.adapter import adapter_config |
32 from pyams_utils.adapter import adapter_config |
33 from pyams_utils.registry import query_utility |
33 from pyams_utils.registry import query_utility |
34 from pyams_viewlet.viewlet import viewlet_config |
34 from pyams_viewlet.viewlet import viewlet_config |
35 from pyams_zmi.form import AdminDialogEditForm, AdminDialogAddForm |
35 from pyams_zmi.form import AdminDialogEditForm, AdminDialogAddForm |
36 from pyams_zmi.layer import IAdminLayer |
36 from pyams_zmi.layer import IAdminLayer |
|
37 from pyramid.events import subscriber |
37 from pyramid.url import resource_url |
38 from pyramid.url import resource_url |
38 from pyramid.view import view_config |
39 from pyramid.view import view_config |
39 from z3c.form import field |
40 from z3c.form import field |
|
41 from zope.interface import Invalid |
40 |
42 |
41 from pyams_security import _ |
43 from pyams_security import _ |
42 |
44 |
43 |
45 |
44 @viewlet_config(name='add-admin-authentication.menu', context=ISite, layer=IAdminLayer, |
46 @viewlet_config(name='add-admin-authentication.menu', context=ISite, layer=IAdminLayer, |
73 context = query_utility(ISecurityManager) |
75 context = query_utility(ISecurityManager) |
74 context[plugin.prefix] = plugin |
76 context[plugin.prefix] = plugin |
75 |
77 |
76 def nextURL(self): |
78 def nextURL(self): |
77 return resource_url(self.context, self.request, 'security-manager.html') |
79 return resource_url(self.context, self.request, 'security-manager.html') |
|
80 |
|
81 |
|
82 @subscriber(IDataExtractedEvent, form_selector=AdminAuthenticationAddForm) |
|
83 def handle_new_admin_folder_data_extraction(event): |
|
84 """Handle new admin authentication plug-in form data extraction""" |
|
85 manager = query_utility(ISecurityManager) |
|
86 prefix = event.data.get('prefix') |
|
87 if prefix in manager: |
|
88 event.form.widgets.errors += (Invalid(_("Specified prefix is already used!")),) |
78 |
89 |
79 |
90 |
80 @view_config(name='add_admin_authentication.json', context=ISite, request_type=IPyAMSLayer, |
91 @view_config(name='add_admin_authentication.json', context=ISite, request_type=IPyAMSLayer, |
81 permission='system.manage', renderer='json', xhr=True) |
92 permission='system.manage', renderer='json', xhr=True) |
82 class AdminAuthenticationAJAXAddForm(AJAXAddForm, AdminAuthenticationAddForm): |
93 class AdminAuthenticationAJAXAddForm(AJAXAddForm, AdminAuthenticationAddForm): |