src/pyams_security/zmi/plugin/admin.py
changeset 54 59683c264d94
parent 28 028799699e8a
child 117 bab0e0098c8e
equal deleted inserted replaced
53:68678e37a77a 54:59683c264d94
    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!""")