def login(request): """ login(request) No return value Function called from route_url('apex_login', request) """ title = _('You need to login') came_from = get_came_from(request) if 'local' not in apex_settings('provider_exclude', []): if asbool(apex_settings('use_recaptcha_on_login')): if apex_settings('recaptcha_public_key') and apex_settings( 'recaptcha_private_key'): LoginForm.captcha = RecaptchaField( public_key=apex_settings('recaptcha_public_key'), private_key=apex_settings('recaptcha_private_key'), ) form = LoginForm( request.POST, captcha={'ip_address': request.environ['REMOTE_ADDR']}) else: form = LoginForm(request.POST) else: form = None velruse_forms = generate_velruse_forms(request, came_from) if request.method == 'POST' and form.validate(): user = AuthUser.get_by_username(form.data.get('username')) if user: headers = apex_remember(request, user.id) return HTTPFound(location=came_from, headers=headers) return {'title': title, 'form': form, 'velruse_forms': velruse_forms, \ 'form_url': request.route_url('apex_login'), 'action': 'login'}
def login(request): """ login(request) No return value Function called from route_url('apex_login', request) """ title = _('You need to login') came_from = get_came_from(request) if not apex_settings('exclude_local'): if asbool(apex_settings('use_recaptcha_on_login')): if apex_settings('recaptcha_public_key') and apex_settings('recaptcha_private_key'): LoginForm.captcha = RecaptchaField( public_key=apex_settings('recaptcha_public_key'), private_key=apex_settings('recaptcha_private_key'), ) form = LoginForm(request.POST, captcha={'ip_address': request.environ['REMOTE_ADDR']}) else: form = LoginForm(request.POST) else: form = None velruse_forms = generate_velruse_forms(request, came_from) if request.method == 'POST' and form.validate(): user = AuthUser.get_by_login(form.data.get('login')) if user: headers = apex_remember(request, user) return HTTPFound(location=came_from, headers=headers) return {'title': title, 'form': form, 'velruse_forms': velruse_forms, \ 'form_url': request.route_url('apex_login'), 'action': 'login'}
def register(request): """ register(request): no return value, called with route_url('apex_register', request) """ title = _('Register') came_from = request.params.get('came_from', \ route_url(apex_settings('came_from_route'), request)) velruse_forms = generate_velruse_forms(request, came_from) #This fixes the issue with RegisterForm throwing an UnboundLocalError if apex_settings('register_form_class'): RegisterForm = get_module(apex_settings('register_form_class')) else: from apex.forms import RegisterForm if not apex_settings('exclude_local'): if asbool(apex_settings('use_recaptcha_on_register')): if apex_settings('recaptcha_public_key') and apex_settings('recaptcha_private_key'): RegisterForm.captcha = RecaptchaField( public_key=apex_settings('recaptcha_public_key'), private_key=apex_settings('recaptcha_private_key'), ) form = RegisterForm(request.POST, captcha={'ip_address': request.environ['REMOTE_ADDR']}) else: form = None if request.method == 'POST' and form.validate(): user = form.save() headers = apex_remember(request, user) return HTTPFound(location=came_from, headers=headers) return {'title': title, 'form': form, 'velruse_forms': velruse_forms, \ 'action': 'register'}
def register(request): """ register(request): no return value, called with route_url('apex_register', request) """ title = _('Register') came_from = request.params.get('came_from', \ route_url(apex_settings('came_from_route'), request)) velruse_forms = generate_velruse_forms(request, came_from) #This fixes the issue with RegisterForm throwing an UnboundLocalError if apex_settings('register_form_class'): RegisterForm = get_module(apex_settings('register_form_class')) else: from apex.forms import RegisterForm if 'local' not in apex_settings('provider_exclude', []): if asbool(apex_settings('use_recaptcha_on_register')): if apex_settings('recaptcha_public_key') and apex_settings('recaptcha_private_key'): RegisterForm.captcha = RecaptchaField( public_key=apex_settings('recaptcha_public_key'), private_key=apex_settings('recaptcha_private_key'), ) form = RegisterForm(request.POST, captcha={'ip_address': request.environ['REMOTE_ADDR']}) else: form = None if request.method == 'POST' and form.validate(): user = form.save() need_verif = apex_settings('need_mail_verification') response = HTTPFound(location=came_from) if need_verif: try: DBSession.add(user) except: pass begin_activation_email_process(request, user) user.active = 'N' DBSession.flush() flash(_('User sucessfully created, ' 'please verify your account by clicking ' 'on the link in the mail you just received from us !'), 'success') response = HTTPFound(location=came_from) else: transaction.commit() headers = apex_remember(request, user.id, internal_user=True) response = HTTPFound(location=came_from, headers=headers) return response return {'title': title, 'form': form, 'velruse_forms': velruse_forms, 'action': 'register'}
def register(request): """ register(request): no return value, called with route_url('apex_register', request) """ title = _('Register') came_from = request.params.get('came_from', \ route_url(apex_settings('came_from_route'), request)) velruse_forms = generate_velruse_forms(request, came_from) #This fixes the issue with RegisterForm throwing an UnboundLocalError if apex_settings('register_form_class'): RegisterForm = get_module(apex_settings('register_form_class')) else: from apex.forms import RegisterForm if not apex_settings('exclude_local'): if asbool(apex_settings('use_recaptcha_on_register')): if apex_settings('recaptcha_public_key') and \ apex_settings('recaptcha_private_key'): RegisterForm.captcha = RecaptchaField( public_key=apex_settings('recaptcha_public_key'), private_key=apex_settings('recaptcha_private_key'), ) form = RegisterForm(request.POST, captcha={'ip_address': \ request.environ['REMOTE_ADDR']}) else: form = None if request.method == 'POST' and form.validate(): if not asbool(apex_settings('email_validate')): user = form.save() headers = apex_remember(request, user.id) return HTTPFound(location=came_from, headers=headers) # email activation required. user = form.save() timestamp = time.time()+3600 key = '%s:%s:%d' % (str(user.id), \ apex_settings('auth_secret'), timestamp) hmac_key = hmac.new(key, user.email).hexdigest()[0:10] time_key = base64.urlsafe_b64encode('%d' % timestamp) email_hash = '%s%s' % (hmac_key, time_key) apex_email_activate(request, user.id, user.email, email_hash) flash(_('Account activation email sent.')) return HTTPFound(location=route_url('apex_login', request)) return {'title': title, 'form': form, 'velruse_forms': velruse_forms, \ 'action': 'register'}
def login(request): """ login(request) No return value Function called from route_url('apex_login', request) """ title = _('You need to login') came_from = get_came_from(request) if apex_settings('login_form_class'): LoginForm = get_module(apex_settings('login_form_class')) else: from apex.forms import LoginForm if not apex_settings('exclude_local'): if asbool(apex_settings('use_recaptcha_on_login')): if apex_settings('recaptcha_public_key') and \ apex_settings('recaptcha_private_key'): LoginForm.captcha = RecaptchaField( public_key=apex_settings('recaptcha_public_key'), private_key=apex_settings('recaptcha_private_key'), ) form = LoginForm(request.POST, captcha={'ip_address': \ request.environ['REMOTE_ADDR']}) else: form = LoginForm(request.POST) else: form = None velruse_forms = generate_velruse_forms(request, came_from) if request.method == 'POST' and form.validate(): user = AuthUser.get_by_login(form.data.get('login')) if user: headers = apex_remember(request, user, \ max_age=apex_settings('max_cookie_age', None)) return HTTPFound(location=came_from, headers=headers) return {'title': title, 'form': form, 'velruse_forms': velruse_forms, \ 'form_url': request.route_url('apex_login'), 'action': 'login'}
def add_auth(request): title = _('Add another Authentication method') came_from = request.params.get('came_from', \ route_url(apex_settings('came_from_route'), request)) auth_id = authenticated_userid(request) request.session['id'] = auth_id auth_providers = apex_id_providers(auth_id) exclude = set([]) if not apex_settings('allow_duplicate_providers'): exclude = set([x.split('.')[0] for x in auth_providers]) velruse_forms = generate_velruse_forms(request, came_from, exclude) #This fixes the issue with RegisterForm throwing an UnboundLocalError if apex_settings('auth_form_class'): AddAuthForm = get_module(apex_settings('auth_form_class')) else: from apex.forms import AddAuthForm form = None if not apex_settings('exclude_local') and 'local' not in exclude: if not asbool(apex_settings('use_recaptcha_on_auth')): if apex_settings('recaptcha_public_key') and \ apex_settings('recaptcha_private_key'): AddAuthForm.captcha = RecaptchaField( public_key=apex_settings('recaptcha_public_key'), private_key=apex_settings('recaptcha_private_key'), ) form = AddAuthForm(request.POST, captcha={'ip_address': \ request.environ['REMOTE_ADDR']}) if request.method == 'POST' and form.validate(): form.save(auth_id) return HTTPFound(location=came_from) return {'title': title, 'form': form, 'velruse_forms': velruse_forms, \ 'action': 'add_auth'}
def register(request): """ register(request): no return value, called with route_url('apex_register', request) """ title = _('Register') came_from = request.params.get('came_from', \ route_url(apex_settings('came_from_route'), request)) velruse_forms = generate_velruse_forms(request, came_from) #This fixes the issue with RegisterForm throwing an UnboundLocalError if apex_settings('register_form_class'): RegisterForm = get_module(apex_settings('register_form_class')) else: from apex.forms import RegisterForm if 'local' not in apex_settings('provider_exclude', []): if asbool(apex_settings('use_recaptcha_on_register')): if apex_settings('recaptcha_public_key') and apex_settings( 'recaptcha_private_key'): RegisterForm.captcha = RecaptchaField( public_key=apex_settings('recaptcha_public_key'), private_key=apex_settings('recaptcha_private_key'), ) form = RegisterForm( request.POST, captcha={'ip_address': request.environ['REMOTE_ADDR']}) else: form = None if request.method == 'POST' and form.validate(): user = form.save() headers = apex_remember(request, user.id) return HTTPFound(location=came_from, headers=headers) return {'title': title, 'form': form, 'velruse_forms': velruse_forms, \ 'action': 'register'}
def login(request): """ login(request) No return value Function called from route_url('apex_login', request) """ if request.user: if 'came_from' in request.params: return HTTPFound(location=request.params['came_from']) title = _('You need to login') came_from = get_came_from(request) velruse_forms = generate_velruse_forms(request, came_from) providers = get_providers() use_captcha = asbool(apex_settings('use_recaptcha_on_login')) if 'local' not in apex_settings('provider_exclude', []): if use_captcha: if apex_settings('recaptcha_public_key') and apex_settings('recaptcha_private_key'): LoginForm.captcha = RecaptchaField( public_key=apex_settings('recaptcha_public_key'), private_key=apex_settings('recaptcha_private_key'), ) form = LoginForm(request.POST, captcha={'ip_address': request.environ['REMOTE_ADDR']}) else: form = None for vform in velruse_forms: if getattr(vform, 'velruse_login', None): vform.action = vform.velruse_login # allow to include this as a portlet inside other pages if (request.method == 'POST' and (request.route_url('apex_login') in request.url)): local_status = form.validate() username = form.data.get('username') password = form.data.get('password') user = search_user(username) if local_status and user: if user.active == 'Y': headers = apex_remember(request, user.id, internal_user=True) return HTTPFound(location=came_from, headers=headers) else: stop = False if use_captcha: if 'captcha' in form.errors: stop = True form.came_from.data = came_from form.data['came_from'] = came_from if not stop: end_point='%s?%s' % ( request.route_url('apex_callback'), urlencode(dict( csrf_token=request.session.get_csrf_token(), came_from=came_from, )) ) # try ldap auth if present on velruse # idea is to let the browser to the request with # an autosubmitted form if 'velruse.providers.ldapprovider' in providers: response = AUTOSUBMITED_VELRUSE_LDAP_FORM%( providers['velruse.providers.ldapprovider']['login'], end_point, username, password) return Response(response) if not came_from: came_from = request.url form.came_from.data = came_from return {'title': title, 'form': form, 'velruse_forms': velruse_forms, 'form_url': request.route_url('apex_login'), 'action': 'login'}
def register(request): """ register(request): no return value, called with route_url('apex_register', request) """ title = _('Register') came_from = request.params.get('came_from', \ route_url(apex_settings('came_from_route'), request)) velruse_forms = generate_velruse_forms(request, came_from) #This fixes the issue with RegisterForm throwing an UnboundLocalError if apex_settings('register_form_class'): RegisterForm = get_module(apex_settings('register_form_class')) else: from apex.forms import RegisterForm if 'local' not in apex_settings('provider_exclude', []): if asbool(apex_settings('use_recaptcha_on_register')): if apex_settings('recaptcha_public_key') and apex_settings( 'recaptcha_private_key'): RegisterForm.captcha = RecaptchaField( public_key=apex_settings('recaptcha_public_key'), private_key=apex_settings('recaptcha_private_key'), ) form = RegisterForm( request.POST, captcha={'ip_address': request.environ['REMOTE_ADDR']}) else: form = None if request.method == 'POST' and form.validate(): user = form.save() need_verif = apex_settings('need_mail_verification') response = HTTPFound(location=came_from) if need_verif: try: DBSession.add(user) except: pass begin_activation_email_process(request, user) user.active = 'N' DBSession.flush() flash( _('User sucessfully created, ' 'please verify your account by clicking ' 'on the link in the mail you just received from us !'), 'success') response = HTTPFound(location=came_from) else: transaction.commit() headers = apex_remember(request, user.id, internal_user=True) response = HTTPFound(location=came_from, headers=headers) return response return { 'title': title, 'form': form, 'velruse_forms': velruse_forms, 'action': 'register' }
def login(request): """ login(request) No return value Function called from route_url('apex_login', request) """ if request.user: if 'came_from' in request.params: return HTTPFound(location=request.params['came_from']) title = _('You need to login') came_from = get_came_from(request) velruse_forms = generate_velruse_forms(request, came_from) providers = get_providers() use_captcha = asbool(apex_settings('use_recaptcha_on_login')) if 'local' not in apex_settings('provider_exclude', []): if use_captcha: if apex_settings('recaptcha_public_key') and apex_settings( 'recaptcha_private_key'): LoginForm.captcha = RecaptchaField( public_key=apex_settings('recaptcha_public_key'), private_key=apex_settings('recaptcha_private_key'), ) form = LoginForm( request.POST, captcha={'ip_address': request.environ['REMOTE_ADDR']}) else: form = None for vform in velruse_forms: if getattr(vform, 'velruse_login', None): vform.action = vform.velruse_login # allow to include this as a portlet inside other pages if (request.method == 'POST' and (request.route_url('apex_login') in request.url)): local_status = form.validate() username = form.data.get('username') password = form.data.get('password') user = search_user(username) if local_status and user: if user.active == 'Y': headers = apex_remember(request, user.id, internal_user=True) return HTTPFound(location=came_from, headers=headers) else: stop = False if use_captcha: if 'captcha' in form.errors: stop = True form.came_from.data = came_from form.data['came_from'] = came_from if not stop: end_point = '%s?%s' % ( request.route_url('apex_callback'), urlencode( dict( csrf_token=request.session.get_csrf_token(), came_from=came_from, ))) # try ldap auth if present on velruse # idea is to let the browser to the request with # an autosubmitted form if 'velruse.providers.ldapprovider' in providers: response = AUTOSUBMITED_VELRUSE_LDAP_FORM % ( providers['velruse.providers.ldapprovider']['login'], end_point, username, password) return Response(response) if not came_from: came_from = request.url form.came_from.data = came_from return { 'title': title, 'form': form, 'velruse_forms': velruse_forms, 'form_url': request.route_url('apex_login'), 'action': 'login' }