10 # FOR A PARTICULAR PURPOSE. |
10 # FOR A PARTICULAR PURPOSE. |
11 # |
11 # |
12 |
12 |
13 __docformat__ = 'restructuredtext' |
13 __docformat__ = 'restructuredtext' |
14 |
14 |
|
15 |
15 # import standard library |
16 # import standard library |
16 |
17 |
17 # import interfaces |
18 # import interfaces |
|
19 from pyams_form.interfaces.form import IFormHelp |
18 from pyams_security.interfaces import IAdminAuthenticationPlugin, ISecurityManager |
20 from pyams_security.interfaces import IAdminAuthenticationPlugin, ISecurityManager |
19 from pyams_skin.interfaces import IContentHelp |
|
20 from pyams_skin.interfaces.viewlet import IToolbarAddingMenu |
21 from pyams_skin.interfaces.viewlet import IToolbarAddingMenu |
21 from pyams_skin.layer import IPyAMSLayer |
22 from pyams_skin.layer import IPyAMSLayer |
|
23 from pyams_utils.interfaces import VIEW_SYSTEM_PERMISSION, MANAGE_SYSTEM_PERMISSION |
22 from z3c.form.interfaces import DISPLAY_MODE, IDataExtractedEvent |
24 from z3c.form.interfaces import DISPLAY_MODE, IDataExtractedEvent |
23 from zope.component.interfaces import ISite |
25 from zope.component.interfaces import ISite |
24 |
26 |
25 # import packages |
27 # import packages |
26 from pyams_form.form import AJAXAddForm, AJAXEditForm |
28 from pyams_form.form import AJAXAddForm, AJAXEditForm |
|
29 from pyams_form.help import FormHelp |
27 from pyams_pagelet.pagelet import pagelet_config |
30 from pyams_pagelet.pagelet import pagelet_config |
28 from pyams_security.plugin.admin import AdminAuthenticationPlugin |
31 from pyams_security.plugin.admin import AdminAuthenticationPlugin |
29 from pyams_security.zmi.utility import SecurityManagerPluginsTable |
32 from pyams_security.zmi.utility import SecurityManagerPluginsTable |
30 from pyams_skin.help import ContentHelp |
|
31 from pyams_skin.viewlet.toolbar import ToolbarMenuItem |
33 from pyams_skin.viewlet.toolbar import ToolbarMenuItem |
32 from pyams_utils.adapter import adapter_config |
34 from pyams_utils.adapter import adapter_config |
33 from pyams_utils.registry import query_utility |
35 from pyams_utils.registry import query_utility |
34 from pyams_viewlet.viewlet import viewlet_config |
36 from pyams_viewlet.viewlet import viewlet_config |
35 from pyams_zmi.form import AdminDialogEditForm, AdminDialogAddForm |
37 from pyams_zmi.form import AdminDialogEditForm, AdminDialogAddForm |
43 from pyams_security import _ |
45 from pyams_security import _ |
44 |
46 |
45 |
47 |
46 @viewlet_config(name='add-admin-authentication.menu', context=ISite, layer=IAdminLayer, |
48 @viewlet_config(name='add-admin-authentication.menu', context=ISite, layer=IAdminLayer, |
47 view=SecurityManagerPluginsTable, manager=IToolbarAddingMenu, |
49 view=SecurityManagerPluginsTable, manager=IToolbarAddingMenu, |
48 permission='system.manage', weight=1) |
50 permission=MANAGE_SYSTEM_PERMISSION, weight=1) |
49 class AdminAuthenticationAddMenu(ToolbarMenuItem): |
51 class AdminAuthenticationAddMenu(ToolbarMenuItem): |
50 """Admin authentication add menu""" |
52 """Admin authentication add menu""" |
51 |
53 |
52 label = _("Add admin authentication...") |
54 label = _("Add admin authentication...") |
53 label_css_class = 'fa fa-fw fa-support' |
55 label_css_class = 'fa fa-fw fa-support' |
54 url = 'add-admin-authentication.html' |
56 url = 'add-admin-authentication.html' |
55 modal_target = True |
57 modal_target = True |
56 |
58 |
57 |
59 |
58 @pagelet_config(name='add-admin-authentication.html', context=ISite, layer=IPyAMSLayer, |
60 @pagelet_config(name='add-admin-authentication.html', context=ISite, layer=IPyAMSLayer, |
59 permission='system.manage') |
61 permission=MANAGE_SYSTEM_PERMISSION) |
60 class AdminAuthenticationAddForm(AdminDialogAddForm): |
62 class AdminAuthenticationAddForm(AdminDialogAddForm): |
61 """Admin authentication plug-in add form""" |
63 """Admin authentication plug-in add form""" |
62 |
64 |
63 title = _("System security manager") |
65 title = _("System security manager") |
64 legend = _("Add administration authentication plug-in") |
66 legend = _("Add administration authentication plug-in") |
65 icon_css_class = 'fa fa-fw fa-support' |
67 icon_css_class = 'fa fa-fw fa-support' |
66 |
68 |
67 fields = field.Fields(IAdminAuthenticationPlugin).omit('__name__', '__parent__') |
69 fields = field.Fields(IAdminAuthenticationPlugin).omit('__name__', '__parent__') |
68 autocomplete = 'off' |
70 autocomplete = 'off' |
69 ajax_handler = 'add-admin-authentication.json' |
71 ajax_handler = 'add-admin-authentication.json' |
70 edit_permission = 'system.manage' |
72 edit_permission = MANAGE_SYSTEM_PERMISSION |
71 |
73 |
72 def create(self, data): |
74 def create(self, data): |
73 return AdminAuthenticationPlugin() |
75 return AdminAuthenticationPlugin() |
74 |
76 |
75 def add(self, plugin): |
77 def add(self, plugin): |
88 if prefix in manager: |
90 if prefix in manager: |
89 event.form.widgets.errors += (Invalid(_("Specified prefix is already used!")),) |
91 event.form.widgets.errors += (Invalid(_("Specified prefix is already used!")),) |
90 |
92 |
91 |
93 |
92 @view_config(name='add-admin-authentication.json', context=ISite, request_type=IPyAMSLayer, |
94 @view_config(name='add-admin-authentication.json', context=ISite, request_type=IPyAMSLayer, |
93 permission='system.manage', renderer='json', xhr=True) |
95 permission=MANAGE_SYSTEM_PERMISSION, renderer='json', xhr=True) |
94 class AdminAuthenticationAJAXAddForm(AJAXAddForm, AdminAuthenticationAddForm): |
96 class AdminAuthenticationAJAXAddForm(AJAXAddForm, AdminAuthenticationAddForm): |
95 """Admin authentication plug-in add form, AJAX handler""" |
97 """Admin authentication plug-in add form, AJAX handler""" |
96 |
98 |
97 |
99 |
98 @pagelet_config(name='properties.html', context=IAdminAuthenticationPlugin, layer=IPyAMSLayer, |
100 @pagelet_config(name='properties.html', context=IAdminAuthenticationPlugin, layer=IPyAMSLayer, |
99 permission='system.view') |
101 permission=VIEW_SYSTEM_PERMISSION) |
100 class AdminAuthenticationEditForm(AdminDialogEditForm): |
102 class AdminAuthenticationEditForm(AdminDialogEditForm): |
101 """Admin authentication plug-in edit form""" |
103 """Admin authentication plug-in edit form""" |
102 |
104 |
103 @property |
105 @property |
104 def title(self): |
106 def title(self): |
108 icon_css_class = 'fa fa-fw fa-support' |
110 icon_css_class = 'fa fa-fw fa-support' |
109 |
111 |
110 fields = field.Fields(IAdminAuthenticationPlugin).omit('__name__', '__parent__') |
112 fields = field.Fields(IAdminAuthenticationPlugin).omit('__name__', '__parent__') |
111 autocomplete = 'off' |
113 autocomplete = 'off' |
112 ajax_handler = 'properties.json' |
114 ajax_handler = 'properties.json' |
113 edit_permission = 'system.manage' |
115 edit_permission = MANAGE_SYSTEM_PERMISSION |
114 |
116 |
115 def updateWidgets(self, prefix=None): |
117 def updateWidgets(self, prefix=None): |
116 super(AdminAuthenticationEditForm, self).updateWidgets() |
118 super(AdminAuthenticationEditForm, self).updateWidgets() |
117 self.widgets['prefix'].mode = DISPLAY_MODE |
119 self.widgets['prefix'].mode = DISPLAY_MODE |
118 |
120 |
119 |
121 |
120 @view_config(name='properties.json', context=IAdminAuthenticationPlugin, request_type=IPyAMSLayer, |
122 @view_config(name='properties.json', context=IAdminAuthenticationPlugin, request_type=IPyAMSLayer, |
121 permission='system.manage', renderer='json', xhr=True) |
123 permission=MANAGE_SYSTEM_PERMISSION, renderer='json', xhr=True) |
122 class AdminAuthenticationAJAXEditForm(AJAXEditForm, AdminAuthenticationEditForm): |
124 class AdminAuthenticationAJAXEditForm(AJAXEditForm, AdminAuthenticationEditForm): |
123 """Admin authentication plug-in edit form, AJAX handler""" |
125 """Admin authentication plug-in edit form, AJAX handler""" |
124 |
126 |
125 |
127 |
126 @adapter_config(context=(IAdminAuthenticationPlugin, IAdminLayer, AdminAuthenticationEditForm), provides=IContentHelp) |
128 @adapter_config(context=(IAdminAuthenticationPlugin, IAdminLayer, AdminAuthenticationEditForm), provides=IFormHelp) |
127 class AdminAuthenticationHelpAdapter(ContentHelp): |
129 class AdminAuthenticationHelpAdapter(FormHelp): |
128 """Admin authentication edit form help adapter""" |
130 """Admin authentication edit form help adapter""" |
129 |
131 |
130 header = _("WARNING") |
132 header = _("WARNING") |
131 status = 'danger' |
133 status = 'danger' |
132 message = _("""Before disabling plug-in, please verify that you have other administration access!""") |
134 message = _("""Before disabling plug-in, please verify that you have other administration access!""") |