Python pyramid.security.remember() Examples

The following are 15 code examples of pyramid.security.remember(). You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may also want to check out all available functions/classes of the module pyramid.security , or try the search function .
Example #1
Source File: views.py    From learning-python with MIT License 6 votes vote down vote up
def login_view(request):
    deform_static.need()

    search_path = ('myShop/templates/deform/',)
    renderer = deform.ZPTRendererFactory(search_path)
    schema = LoginFormSchema(validator=password_validator)
    form = deform.Form(schema, buttons=('submit',), renderer=renderer)

    if 'submit' in request.POST:
        try:
            appstruct = form.validate(request.POST.items())
        except deform.ValidationFailure, e:
            return {
                'title': 'login',
                'form': e.render()
            }

        user = appstruct['login']

        headers = remember(request, user.id)
        return HTTPFound(location='/', headers=headers) 
Example #2
Source File: views.py    From nefertari with Apache License 2.0 6 votes vote down vote up
def login(self, **params):
        self._json_params.update(params)
        next = self._query_params.get('next', '')
        if self.request.path in next:
            next = ''  # never use the login form itself as next

        unauthorized_url = self._query_params.get('unauthorized', None)
        success, user = self.Model.authenticate_by_password(
            self._json_params)

        if success:
            pk_field = user.pk_field()
            headers = remember(self.request, getattr(user, pk_field))
            if next:
                raise JHTTPFound(location=next, headers=headers)
            else:
                return JHTTPOk('Logged in', headers=headers)
        if user:
            if unauthorized_url:
                return JHTTPUnauthorized(location=unauthorized_url+'?error=1')

            raise JHTTPUnauthorized('Failed to Login.')
        else:
            raise JHTTPNotFound('User not found') 
Example #3
Source File: views.py    From nefertari with Apache License 2.0 6 votes vote down vote up
def register(self):
        """ Register a new user by POSTing all required data.

        User's `Authorization` header value is returned in `WWW-Authenticate`
        header.
        """
        user, created = self.Model.create_account(self._json_params)
        if user.api_key is None:
            raise JHTTPBadRequest('Failed to generate ApiKey for user')

        if not created:
            raise JHTTPConflict('Looks like you already have an account.')

        self.request._user = user
        headers = remember(self.request, user.username)
        return JHTTPOk('Registered', headers=headers) 
Example #4
Source File: views.py    From nefertari with Apache License 2.0 6 votes vote down vote up
def claim_token(self, **params):
        """Claim current token by POSTing 'login' and 'password'.

        User's `Authorization` header value is returned in `WWW-Authenticate`
        header.
        """
        self._json_params.update(params)
        success, self.user = self.Model.authenticate_by_password(
            self._json_params)

        if success:
            headers = remember(self.request, self.user.username)
            return JHTTPOk('Token claimed', headers=headers)
        if self.user:
            raise JHTTPUnauthorized('Wrong login or password')
        else:
            raise JHTTPNotFound('User not found') 
Example #5
Source File: __init__.py    From nova-ideo with GNU Affero General Public License v3.0 6 votes vote down vote up
def validate_user(context, request, appstruct):
    user = get_or_create_user(request, appstruct)
    valid = user and (has_role(user=user, role=('SiteAdmin', )) or
                      'active' in getattr(user, 'state', []))
    headers = None
    if valid:
        request.session.pop('novaideo.came_from', None)
        headers = remember(request, get_oid(user))
        request.registry.notify(
            LoggedIn(
                user.email, user,
                context, request))
        user.last_connection = datetime.datetime.now(tz=pytz.UTC)
        if hasattr(user, 'reindex'):
            user.reindex()

    return user, valid, headers 
Example #6
Source File: credentials.py    From pyvac with BSD 3-Clause "New" or "Revised" License 6 votes vote down vote up
def render(self):
        if not self.user.is_sudoer(self.session):
            log.info("user '%s' tried to access sudo but is not authorized" %
                     self.user.login)
            return HTTPFound(location=route_url('home', self.request))

        req = self.request
        if req.method == 'POST' and 'continue' in req.params:
            headers = None
            target_id = int(req.params.get('sudo', self.user.id))
            if target_id != self.user.id:
                target = User.by_id(self.session, target_id)
                if not target:
                    errors = ['Cannot find user with id %d' % target_id]
                    self.request.session.flash('error;%s' % ','.join(errors))

                log.info("user '%s' will sudo to user '%s'" %
                         (self.user.login, target.login))
                headers = remember(self.request, target.login)
            return HTTPFound(location=route_url('home', self.request),
                             headers=headers)

        return {'user': self.user} 
Example #7
Source File: test_integration.py    From pyramid_jwt with BSD 2-Clause "Simplified" License 5 votes vote down vote up
def login_cookie_view(request):
    headers = remember(request, 1)
    return Response(status=200, headers=headers, body="OK") 
Example #8
Source File: views.py    From nefertari with Apache License 2.0 5 votes vote down vote up
def register(self):
        """ Register new user by POSTing all required data. """
        user, created = self.Model.create_account(
            self._json_params)

        if not created:
            raise JHTTPConflict('Looks like you already have an account.')

        self.request._user = user
        pk_field = user.pk_field()
        headers = remember(self.request, getattr(user, pk_field))
        return JHTTPOk('Registered', headers=headers) 
Example #9
Source File: views.py    From nefertari with Apache License 2.0 5 votes vote down vote up
def reset_token(self, **params):
        """ Reset current token by POSTing 'login' and 'password'.

        User's `Authorization` header value is returned in `WWW-Authenticate`
        header.
        """
        response = self.claim_token(**params)
        if not self.user:
            return response

        self.user.api_key.reset_token()
        headers = remember(self.request, self.user.username)
        return JHTTPOk('Registered', headers=headers) 
Example #10
Source File: server.py    From channelstream with BSD 3-Clause "New" or "Revised" License 5 votes vote down vote up
def admin_sign_in(self):
        if self.request.method == "POST":
            admin_user = self.request.registry.settings["admin_user"]
            admin_secret = self.request.registry.settings["admin_secret"]
            username = self.request.POST.get("username", "").strip()
            password = self.request.POST.get("password", "").strip()
            if username == admin_user and password == admin_secret:
                headers = remember(self.request, admin_user)
                url = self.request.route_url("admin")
                return HTTPFound(url, headers=headers)
            else:
                # make potential brute forcing non-feasible
                gevent.sleep(0.5)
        return {} 
Example #11
Source File: viewsUser.py    From muesli with GNU General Public License v3.0 5 votes vote down vote up
def login(request):
    form = forms.FormValidator(forms.UserLogin())
    if request.method == 'POST' and form.validate(request.POST):
        user = request.db.query(models.User).filter_by(email=form['email'].strip(), password=sha1(form['password'].encode('utf-8')).hexdigest()).first()
        if user is not None:
            security.remember(request, user.id)
            request.user = user
            url = request.route_url('overview')
            return HTTPFound(location=url)
        request.session.flash('Benutzername oder Passwort sind falsch.', queue='errors')
    return {'form': form, 'user': security.authenticated_userid(request)} 
Example #12
Source File: see_invitation.py    From nova-ideo with GNU Affero General Public License v3.0 5 votes vote down vote up
def update(self):
        self.execute(None)
        try:
            navbars = generate_listing_menu(
                self.request, self.context,
                template=DEFAUL_LISTING_ACTIONS_TEMPLATE)
        except ObjectRemovedException:
            #Log in if the invitation is accepted
            if hasattr(self.context, 'person'):
                person = self.context.person
                headers = remember(self.request, get_oid(person))
                self.request.registry.notify(
                    LoggedIn(person.email, person,
                             self.context, self.request))
                root = getSite()
                return HTTPFound(
                    location=self.request.resource_url(root),
                    headers=headers)

            return HTTPFound(self.request.resource_url(getSite(), ''))

        user = get_current()
        values = {
            'invitation': self.context,
            'menu_body': navbars['menu_body'],
            'primary_menu_body': navbars['primary_menu_body'],
            'state': get_states_mapping(
                user, self.context, self.context.state[0]),}
        result = {}
        body = self.content(args=values, template=self.template)['body']
        item = self.adapt_item(body, self.viewid)
        item['messages'] = navbars['messages']
        item['isactive'] = navbars['isactive']
        result.update(navbars['resources'])
        result['coordinates'] = {self.coordinates: [item]}
        return result 
Example #13
Source File: behaviors.py    From nova-ideo with GNU Affero General Public License v3.0 5 votes vote down vote up
def redirect(self, context, request, **kw):
        person = kw['person']
        headers = remember(request, get_oid(person))
        request.registry.notify(LoggedIn(person.email, person,
                                         context, request))
        return HTTPFound(location=request.resource_url(context),
                         headers=headers) 
Example #14
Source File: views.py    From nova-ideo with GNU Affero General Public License v3.0 4 votes vote down vote up
def login(context, request):
    login_data = json.loads(request.body.decode())
    login = login_data.get('login', None)
    password = login_data.get('password', None)
    token = login_data.get('token', None)
    logged_user = None
    if token:
        logged_user = auth_user(token, request)

    if login and password:
        novaideo_catalog = find_catalog('novaideo')
        dace_catalog = find_catalog('dace')
        identifier_index = novaideo_catalog['identifier']
        object_provides_index = dace_catalog['object_provides']
        query = object_provides_index.any([IPerson.__identifier__]) &\
            identifier_index.any([login])
        users = list(query.execute().all())
        user = users[0] if users else None
        valid_check = user and user.check_password(password)
        if valid_check and \
           (has_role(user=user, role=('SiteAdmin', )) or \
           'active' in getattr(user, 'state', [])):
            logged_user = user
            if getattr(logged_user, 'api_token', None) is None:
                logged_user.api_token = uuid.uuid4().hex

    if logged_user:
        headers = remember(request, get_oid(logged_user))
        request.registry.notify(LoggedIn(login, logged_user, context, request))
        logged_user.last_connection = datetime.datetime.now(tz=pytz.UTC)
        request.response.headerlist.extend(headers)
        if hasattr(logged_user, 'reindex'):
            logged_user.reindex()

        return {
            'status': True,
            'token': logged_user.api_token
        }

    return {
        'status': False,
        'token': None
    } 
Example #15
Source File: credentials.py    From pyvac with BSD 3-Clause "New" or "Revised" License 4 votes vote down vote up
def render(self):

        login_url = resource_url(self.request.context, self.request, 'login')
        referrer = self.request.url
        # never use the login form itself as came_from
        if referrer == login_url:
            referrer = '/'
        came_from = self.request.params.get('came_from', referrer)
        if came_from == '/':
            came_from = '/home'

        login = self.request.params.get('login', '')
        if 'submit' in self.request.params:
            password = self.request.params.get('password', '')
            if password:
                settings = self.request.registry.settings
                ldap = False
                if 'pyvac.use_ldap' in settings:
                    ldap = asbool(settings.get('pyvac.use_ldap'))

                try:
                    if login in self.blacklist_users:
                        raise INVALID_CREDENTIALS
                    user = User.by_credentials(self.session, login,
                                               password, ldap)
                    if user is not None:
                        log.info('login %r succeed' % user.login)
                        headers = remember(self.request, user.login)

                        # check for available users for sudo
                        sudoers = Sudoer.alias(self.session, user)
                        if sudoers:
                            location = route_url('sudo', self.request)
                            return HTTPFound(location=location,
                                             headers=headers)

                        return HTTPFound(location=came_from,
                                         headers=headers)
                    else:
                        msg = 'Invalid credentials.'
                        self.request.session.flash('error;%s' % msg)
                except SERVER_DOWN:
                    msg = 'Cannot reach ldap server.'
                    self.request.session.flash('error;%s' % msg)
                except INVALID_CREDENTIALS:
                    msg = 'Invalid credentials.'
                    self.request.session.flash('error;%s' % msg)
                except UnknownLdapUser:
                    msg = 'Unknown ldap user %s' % login
                    self.request.session.flash('error;%s' % msg)

        return {'came_from': came_from,
                'csrf_token': self.request.session.get_csrf_token(),
                }