Пример #1
0
 def test_demo_registration(self):
     self.config.include('arche_2fa.app.demo')
     from arche_2fa.models import get_registered_2fas
     from arche.api import Root
     context = Root()
     request = testing.DummyRequest()
     res = dict(get_registered_2fas(context, request))
     self.assertIn('demo', res)
Пример #2
0
def type_2fa_widget(node, kw):
    context = kw['context']
    request = kw['request']
    values = []
    values.extend([(name, obj.title) for (name, obj) in get_registered_2fas(context, request)])
    if len(values) != 1: #Insert at either 0 length or anything with more than one choice.
        values.insert(0, ('', _("<Select>")))
    return deform.widget.SelectWidget(values = values)
Пример #3
0
 def __call__(self, node, value):
     type_2fa = self.request.GET.get('type_2fa', None)
     methods = dict(get_registered_2fas(self.context, self.request))
     if type_2fa not in methods:
         msg = _("authentication_method_invalid",
                 default = "The authentication method is invalid.")
         raise colander.Invalid(node, msg)
     if not methods[type_2fa].validate(value):
         raise colander.Invalid(node, _("Invalid code"))
Пример #4
0
def insert_2fa_node(schema, event):
    """ Inject the 2fa node in the schema, or abort if something seems fishy.
    """
    methods = dict(get_registered_2fas(event.context, event.request))
    type_2fa = event.request.GET.get('type_2fa', None)
    if type_2fa not in methods:
        raise HTTPForbidden()
    schema.add(colander.SchemaNode(colander.String(),
                                   name = '2fa_code',
                                   title = _("two_factor_auth_code_title",
                                             default = "Two factor authentication code"),
                                   validator = login_2fa_validator))
    if 'email_or_userid' in schema:
        schema['email_or_userid'].widget = deform.widget.HiddenWidget()
        schema['email_or_userid'].default = event.request.GET.get('userid', '')
Пример #5
0
 def methods(self):
     return dict(get_registered_2fas(self.context, self.request))
Пример #6
0
def registered_2fa_names_validator(node, kw):
    context = kw['context']
    request = kw['request']
    return colander.OneOf(dict(get_registered_2fas(context, request)).keys())