def start(self, context, request, appstruct, **kw):
        login = appstruct['email']
        adapter = request.registry.queryMultiAdapter(
            (context, request),
            IUserLocator
            )
        if adapter is None:
            adapter = DefaultUserLocator(context, request)

        user = adapter.get_user_by_email(login)
        if user is not None:
            principals = find_service(user, 'principals')
            reset = principals.add_reset(user)
            reseturl = request.resource_url(reset)
            email = user.email
            site = get_site_folder(True)
            localizer = request.localizer
            mail_template = site.get_mail_template('reset_password')
            subject = mail_template['subject']
            message = mail_template['template'].format(
                person=user,
                user_title=localizer.translate(
                    _(getattr(user, 'user_title', ''))),
                reseturl=reseturl,
                lac_title=request.root.title)
            alert('email', [site.get_site_sender()], [email],
                  {'subject': subject, 'body': message})

        return {}
Beispiel #2
0
def persona_login(context, request):
    check_csrf_token(request)
    email = verify_persona_assertion(request)
    root = root_factory(request)
    adapter = request.registry.queryMultiAdapter(
        (root, request), IUserLocator)
    if adapter is None:
        adapter = DefaultUserLocator(root, request)
    user = adapter.get_user_by_email(email)
    if user is None:
        registry = request.registry
        username = '******' % email
        principals = find_service(root, 'principals')
        user = principals.add_user(username, registry=registry)
        user.email = email
        performer = registry.content.create('Performer')
        root['performers'][username] = performer
        performer.user = user
        set_acl(performer, [(Allow, user.__oid__, ['yss.edit-profile'])])
        location = request.resource_url(performer, 'edit.html')
        performer.title = email
        performer.email = email
        performer.photo_url = persona_gravatar_photo(request, email)
        performer.age = colander.null
        performer.sex = user.favorite_genre = None
        location = request.resource_url(performer, 'edit.html')
    else:
        location = request.resource_url(root['performers'][user.__name__])
    headers = remember(request, get_oid(user))
    request.response.headers.extend(headers)
    return {'redirect': location, 'success': True}
Beispiel #3
0
    def start(self, context, request, appstruct, **kw):
        login = appstruct['email']
        adapter = request.registry.queryMultiAdapter(
                    (context, request),
                    IUserLocator
                    )
        if adapter is None:
            adapter = DefaultUserLocator(context, request)

        user = adapter.get_user_by_email(login)
        if user is not None:
            principals = find_service(user, 'principals')
            reset = principals.add_reset(user)
            reseturl = request.resource_url(reset)
            if not user.email:
                raise ValueError('User does not possess a valid email address.')

            subject = RESETPW_SUBJECT.format(novaideo_title=request.root.title)
            localizer = request.localizer
            message = RESETPW_MESSAGE.format(
                recipient_title=localizer.translate(_(getattr(user, 'user_title',''))),
                recipient_first_name=getattr(user, 'first_name', user.name),
                recipient_last_name=getattr(user, 'last_name',''),
                reseturl=reseturl,
                novaideo_title=request.root.title
                 )
            mailer_send(subject=subject, 
                recipients=[user.email], 
                body=message)

        return {}
    def start(self, context, request, appstruct, **kw):
        login = appstruct['email']
        adapter = request.registry.queryMultiAdapter((context, request),
                                                     IUserLocator)
        if adapter is None:
            adapter = DefaultUserLocator(context, request)

        user = adapter.get_user_by_email(login)
        if user is not None:
            principals = find_service(user, 'principals')
            reset = principals.add_reset(user)
            reseturl = request.resource_url(reset)
            email = user.email
            site = get_site_folder(True)
            localizer = request.localizer
            mail_template = site.get_mail_template('reset_password')
            subject = mail_template['subject']
            message = mail_template['template'].format(
                person=user,
                user_title=localizer.translate(
                    _(getattr(user, 'user_title', ''))),
                reseturl=reseturl,
                lac_title=request.root.title)
            alert('email', [site.get_site_sender()], [email], {
                'subject': subject,
                'body': message
            })

        return {}
    def _login_validator(node, value):
        adapter = request.registry.queryMultiAdapter((context, request),
                                                     IUserLocator)
        if adapter is None:
            adapter = DefaultUserLocator(context, request)

        user = adapter.get_user_by_email(value)
        if user is None:
            raise colander.Invalid(node, 'No such user %s' % value)
    def _login_validator(node, value):
        adapter = request.registry.queryMultiAdapter(
            (context, request),
            IUserLocator
            )
        if adapter is None:
            adapter = DefaultUserLocator(context, request)

        user = adapter.get_user_by_email(value)
        if user is None:
            raise colander.Invalid(node, 'No such user %s' % value)
Beispiel #7
0
def email_validator(node, kw):
    context = node.bindings['context']
    request = node.bindings['request']
    adapter = request.registry.queryMultiAdapter(
        (context, request),
        IUserLocator
        )
    if adapter is None:
        adapter = DefaultUserLocator(context, request)
    user = adapter.get_user_by_email(kw)
    if user and user is not context:
        raise colander.Invalid(node,
                _('${email} email address already in use',
                  mapping={'email': kw}))
Beispiel #8
0
    def check_user(self):
        login = self.params('email')
        password = self.params('password')
        context = self.context
        request = self.request
        adapter = request.registry.queryMultiAdapter((context, request),
                                                     IUserLocator)
        if adapter is None:
            adapter = DefaultUserLocator(context, request)
        user = adapter.get_user_by_email(login)
        if user and user.check_password(password) and \
           (has_role(user=user, role=('Admin', )) or \
           'active' in getattr(user, 'state', [])):
            return {'check': True}

        return {'check': False}
Beispiel #9
0
def email_validator(node, kw):
    context = node.bindings['context']
    request = node.bindings['request']
    root = getSite()
    adapter = request.registry.queryMultiAdapter(
        (context, request),
        IUserLocator
        )
    if adapter is None:
        adapter = DefaultUserLocator(context, request)
    user = adapter.get_user_by_email(kw)
    preregistrations = [pr for pr in root.preregistrations
                        if getattr(pr, 'email', '') == kw]
    if (user and user is not context) or preregistrations:
        raise colander.Invalid(node,
                _('${email} email address already in use',
                  mapping={'email': kw}))
Beispiel #10
0
    def check_user(self):
        login = self.params('email')
        password = self.params('password')
        context = self.context
        request = self.request
        adapter = request.registry.queryMultiAdapter(
            (context, request),
            IUserLocator
            )
        if adapter is None:
            adapter = DefaultUserLocator(context, request)
        user = adapter.get_user_by_email(login)
        if user and user.check_password(password) and \
           (has_role(user=user, role=('Admin', )) or \
           'active' in getattr(user, 'state', [])):
            return {'check': True}

        return {'check': False}
Beispiel #11
0
def validate_user(context, request, appstruct):
    login = appstruct.get('login')
    password = appstruct.get('password')
    adapter = request.registry.queryMultiAdapter((context, request),
                                                 IUserLocator)
    if adapter is None:
        adapter = DefaultUserLocator(context, request)

    user = adapter.get_user_by_email(login)
    valid = user and user.check_password(password) and \
                (has_role(user=user, role=('Admin', )) or \
                 'active' in getattr(user, 'state', []))
    headers = None
    if user and valid:
        request.session.pop('lac.came_from', None)
        headers = remember(request, get_oid(user))
        request.registry.notify(LoggedIn(login, user, context, request))

    return user, valid, headers
Beispiel #12
0
    def persons_contacted(self):
        """ Return all contacted persons"""

        request = get_current_request()
        adapter = request.registry.queryMultiAdapter(
                (self, request),
                IUserLocator
                )
        if adapter is None:
            adapter = DefaultUserLocator(self, request)

        result = []
        for email in self._email_persons_contacted:
            user = adapter.get_user_by_email(email)
            if user is not None:
                result.append(user)
            else:
                result.append(email.split('@')[0].split('+')[0])

        return set(result)
Beispiel #13
0
def validate_user(context, request, appstruct):
    login = appstruct.get('login')
    password = appstruct.get('password')
    adapter = request.registry.queryMultiAdapter(
        (context, request),
        IUserLocator
        )
    if adapter is None:
        adapter = DefaultUserLocator(context, request)

    user = adapter.get_user_by_email(login)
    valid = user and user.check_password(password) and \
                (has_role(user=user, role=('Admin', )) or \
                 'active' in getattr(user, 'state', []))
    headers = None
    if user and valid:
        request.session.pop('lac.came_from', None)
        headers = remember(request, get_oid(user))
        request.registry.notify(LoggedIn(
            login, user, context, request))

    return user, valid, headers