Beispiel #1
0
    def login_button(self, **data):
        """login button control"""
        logger = logging.getLogger(__name__)
        logger.debug('login_button called')

        site = zoom.system.request.site

        username = data.get('username')
        password = data.get('password')
        remember_me = bool(data.get('remember_me'))

        if username and password:
            user = site.users.first(username=username, status='A')
            if user:
                if user.login(zoom.system.request, password, remember_me):
                    logger.info('user %s sucesfully logged in', username)
                    logger.debug(data)
                    if 'original_url' in data:
                        logger.debug('redirecting to %r', data['original_url'])
                        return zoom.redirect_to(data['original_url'])
                    return zoom.redirect_to('/')

            logger.debug('failed login attempt for user %s', username)
            error('incorrect username or password')

        elif username:
            error('password missing')

        else:
            error('username missing')
Beispiel #2
0
def app():
    as_api = os.environ.get('HTTP_ACCEPT', '') == 'application/json'

    if not user.is_authenticated:
        if as_api:
            return '{"message": "not logged in"}'
        else:
            warning('You are not logged in')
    else:

        # save these because they are about to get wiped out
        username = user.username
        user_id = user.id

        user.logout()

        if as_api:
            logger.info('user %(username)s successfully logged out via api' %
                        locals())
            return '{}'
        else:
            msg = '<a href="/users/%(user_id)s">%(username)s</a> logged out' % locals(
            )
            logger.activity('session', msg)
            logger.info('user %(username)s successfully logged out' % locals())
    return redirect_to('/')
Beispiel #3
0
    def index(self, q='', *args, **kwargs):
        """collection landing page"""

        c = self.collection
        user = c.user

        if c.request.route[-1:] == ['index']:
            return zoom.redirect_to('/'+'/'.join(c.request.route[:-1]), **kwargs)

        actions = user.can('create', c) and ['New'] or []

        if q:
            title = 'Selected ' + c.title
            records = c.search(q)
        else:
            title = c.title
            records = c.store.find(type='U')

        authorized = (i for i in records if user.can('read', i))
        items = sorted(authorized, key=c.order)
        num_items = len(items)

        if num_items != 1:
            footer_name = c.title.lower()
        else:
            footer_name = c.item_title.lower()

        if q:
            footer = '{:,} {} found in search of {:,} {}'.format(
                num_items,
                footer_name,
                len(c.store),
                c.title.lower(),
            )
        else:
            footer = '%s %s' % (len(items), footer_name)

        admin_ids = [item.admin_group_id for item in items]
        admin_lookup = {
            group.group_id: zoom.link_to(group.name, 'groups', group.group_id)
            for group in zoom.system.site.groups
            if group.group_id in admin_ids
        }

        for item in items:
            item.administrators = admin_lookup.get(item.admin_group_id, '')

        content = zoom.browse(
            [c.model(i) for i in items],
            labels=c.get_labels(),
            columns=c.get_columns(),
            footer=footer
        )

        return zoom.page(content, title=title, actions=actions, search=q)
Beispiel #4
0
def app():
    if not user.is_authenticated:
        warning('You are not logged in')
    else:
        username = user.username
        user_id = user.id
        user.logout()
        logger.info('user %(username)s successfully logged out' % locals())
        msg = '<a href="/users/%(user_id)s">%(username)s</a> logged out' % locals()
        logger.activity('session', msg)
    return redirect_to('/')
Beispiel #5
0
def app():
    as_api = os.environ.get('HTTP_ACCEPT','') == 'application/json'

    if not user.is_authenticated:
        if as_api:
            return '{"message": "not logged in"}'
        else:
            warning('You are not logged in')
    else:

        # save these because they are about to get wiped out
        username = user.username
        user_id = user.id

        user.logout()

        if as_api:
            logger.info('user %(username)s successfully logged out via api' % locals())
            return '{}'
        else:
            msg = '<a href="/users/%(user_id)s">%(username)s</a> logged out' % locals()
            logger.activity('session', msg)
            logger.info('user %(username)s successfully logged out' % locals())
    return redirect_to('/')
Beispiel #6
0
    def edit(self, *route, **req_data):
        if route and route[-1] == 'done':
            return redirect_to('/content/files')

        return render_fileset_view(edit=True)
Beispiel #7
0
 def test_redirect_root_with_params(self):
     request = zoom.request.Request({})
     response = zoom.redirect_to('/', one=1, two=2).render(request)
     self.assertEqual(response.headers['Location'],
                      '<dz:abs_site_url>/?one=1&two=2')
Beispiel #8
0
 def test_redirect_root(self):
     request = zoom.request.Request({})
     response = zoom.redirect_to('/').render(request)
     self.assertEqual(response.headers['Location'], '<dz:abs_site_url>')
Beispiel #9
0
 def test_redirect_nowhere(self):
     zoom.system.providers = [{}]
     request = zoom.request.Request({})
     response = zoom.redirect_to().render(request)
     self.assertEqual(response.headers['Location'],
                      '<dz:abs_site_url><dz:request_path>')
Beispiel #10
0
def handler(request, handle, *rest):
    """impersonation handler"""
    if request.path == '/stop-impersonation':
        stop_impersonating()
        return zoom.redirect_to('/').render(request)
    return handle(request, *rest)