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')
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('/')
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)
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('/')
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('/')
def edit(self, *route, **req_data): if route and route[-1] == 'done': return redirect_to('/content/files') return render_fileset_view(edit=True)
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')
def test_redirect_root(self): request = zoom.request.Request({}) response = zoom.redirect_to('/').render(request) self.assertEqual(response.headers['Location'], '<dz:abs_site_url>')
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>')
def handler(request, handle, *rest): """impersonation handler""" if request.path == '/stop-impersonation': stop_impersonating() return zoom.redirect_to('/').render(request) return handle(request, *rest)