Projet

Général

Profil

0004-qommon.ident.idp-allow-customizable-rules-to-set-is_.patch

Benjamin Dauvergne, 21 octobre 2013 16:58

Télécharger (2,74 ko)

Voir les différences:

Subject: [PATCH 4/6] qommon.ident.idp: allow customizable rules to set
 is_admin flag from SAML 2 attributes

 wcs/qommon/ident/idp.ptl |   15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)
wcs/qommon/ident/idp.ptl
286 286
        form.add(FileWidget, 'clientcertificate', title = _('Client Key and Certificate'))
287 287
        form.add(CheckboxWidget, 'hide', title = _('Hide this provider from user lists'),
288 288
                required = False, value = instance.get('hide'))
289
        form.add(WidgetDict, 'admin-regexp',
290
                value = instance.get('admin-regexp', {
291
                    'local-admin': r'^true$',
292
                }),
293
                title=_('Administrator attribute matching rules'),
294
                element_value_type=RegexStringWidget,
295
                hint=_('First row match attribute names, second is regexp for matching attribute value. If no rule is given, admin flag is never set.'))
296
        options = cls.user_fields_options()
289 297
        form.add_submit('submit', _('Submit'))
290 298
        return form
291 299

  
......
293 301
        get_response().breadcrumb.append(('new', _('New')))
294 302
        form = self.get_form()
295 303

  
296
        if not form.is_submitted() or form.has_errors():
304
        if not ('submit' in get_request().form and form.is_submitted()) or form.has_errors():
297 305
            admin_html_top('settings', title = _('New Identity Provider'))
298 306
            '<h2>%s</h2>' % _('New Identity Provider')
299 307
            form.render()
......
351 359
            'cacertchain': cacertchain_fn,
352 360
            'clientcertificate': clientcertificate_fn,
353 361
        }
354
        cfg_idp[key_provider_id]['hide'] = form.get_widget('hide').parse()
362
        for key in ('hide', 'admin-regexp'):
363
            cfg_idp[key_provider_id][key] = form.get_widget(key).parse()
355 364
        idp = cfg_idp[key_provider_id]
356 365
        p = lasso.Provider(lasso.PROVIDER_ROLE_IDP,
357 366
                misc.get_abs_path(idp['metadata']),
......
570 579
    def edit [html] (self):
571 580
        form = AdminIDPDir.get_form(self.idp)
572 581

  
573
        if not form.is_submitted() or form.has_errors():
582
        if not ('submit' in get_request().form and form.is_submitted()) or form.has_errors():
574 583
            admin_html_top('settings', title = _('Edit Identity Provider'))
575 584
            '<h2>%s</h2>' % _('Edit Identity Provider')
576 585
            form.render()
577
-