def auth_settings(request, id): user_ = get_object_or_404(User, id=id) if not (request.user.is_superuser or request.user == user_): return HttpResponseUnauthorized(request) if not settings.USERS_CAN_CHANGE_AUTH_SETTINGS: return HttpResponseUnauthorized(request) auth_keys = user_.auth_keys.all() if request.user.is_superuser or (not user_.has_usable_password()): FormClass = SetPasswordForm else: FormClass = ChangePasswordForm if request.POST: form = FormClass(request.POST, user=user_) if form.is_valid(): is_new_pass = not user_.has_usable_password() user_.set_password(form.cleaned_data["password1"]) user_.save() if is_new_pass: request.user.message_set.create(message=_("New password set")) if not request.user.is_superuser: form = ChangePasswordForm(user=user_) else: request.user.message_set.create(message=_("Your password was changed")) return HttpResponseRedirect(reverse("user_authsettings", kwargs={"id": user_.id})) else: form = FormClass(user=user_) auth_keys_list = [] for k in auth_keys: provider = AUTH_PROVIDERS.get(k.provider, None) if provider is not None: name = "%s: %s" % (provider.context.human_name, provider.context.readable_key(k)) else: from forum.authentication.base import ConsumerTemplateContext "unknown: %s" % ConsumerTemplateContext.readable_key(k) auth_keys_list.append({"name": name, "id": k.id}) return render_response( "auth/auth_settings.html", { "view_user": user_, "can_view_private": (user_ == request.user) or request.user.is_superuser, "form": form, "has_password": user_.has_usable_password(), "auth_keys": auth_keys_list, "allow_local_auth": AUTH_PROVIDERS.get("local", None), }, request, )
def auth_settings(request, id): user_ = get_object_or_404(User, id=id) if not (request.user.is_superuser or request.user == user_): return HttpResponseUnauthorized(request) auth_keys = user_.auth_keys.all() if request.user.is_superuser or (not user_.has_usable_password()): FormClass = SetPasswordForm else: FormClass = ChangePasswordForm if request.POST: form = FormClass(request.POST, user=user_) if form.is_valid(): is_new_pass = not user_.has_usable_password() user_.set_password(form.cleaned_data['password1']) user_.save() if is_new_pass: request.user.message_set.create(message=_("New password set")) if not request.user.is_superuser: form = ChangePasswordForm(user=user_) else: request.user.message_set.create( message=_("Your password was changed")) return HttpResponseRedirect( reverse('user_authsettings', kwargs={'id': user_.id})) else: form = FormClass(user=user_) auth_keys_list = [] for k in auth_keys: provider = AUTH_PROVIDERS.get(k.provider, None) if provider is not None: name = "%s: %s" % (provider.context.human_name, provider.context.readable_key(k)) else: from forum.authentication.base import ConsumerTemplateContext "unknown: %s" % ConsumerTemplateContext.readable_key(k) auth_keys_list.append({'name': name, 'id': k.id}) return render_to_response( 'auth/auth_settings.html', { 'view_user': user_, "can_view_private": (user_ == request.user) or request.user.is_superuser, 'form': form, 'has_password': user_.has_usable_password(), 'auth_keys': auth_keys_list, 'allow_local_auth': AUTH_PROVIDERS.get('local', None), }, context_instance=RequestContext(request))
def auth_settings(request, id): user_ = get_object_or_404(User, id=id) if not (request.user.is_superuser or request.user == user_): return HttpResponseUnauthorized(request) if not settings.USERS_CAN_CHANGE_AUTH_SETTINGS: return HttpResponseUnauthorized(request) auth_keys = user_.auth_keys.all() if request.user.is_superuser or (not user_.has_usable_password()): FormClass = SetPasswordForm else: FormClass = ChangePasswordForm if request.POST: form = FormClass(request.POST, user=user_) if form.is_valid(): is_new_pass = not user_.has_usable_password() user_.set_password(form.cleaned_data['password1']) user_.save() if is_new_pass: messages.info(request, _("New password set")) if not request.user.is_superuser: form = ChangePasswordForm(user=user_) else: messages.info(request, _("Your password was changed")) return HttpResponseRedirect(reverse('user_authsettings', kwargs={'id': user_.id})) else: form = FormClass(user=user_) auth_keys_list = [] for k in auth_keys: provider = AUTH_PROVIDERS.get(k.provider, None) if provider is not None: name = "%s: %s" % (provider.context.human_name, provider.context.readable_key(k)) else: from forum.authentication.base import ConsumerTemplateContext "unknown: %s" % ConsumerTemplateContext.readable_key(k) auth_keys_list.append({ 'name': name, 'id': k.id }) return render_to_response('auth/auth_settings.html', { 'view_user': user_, "can_view_private": (user_ == request.user) or request.user.is_superuser, 'form': form, 'has_password': user_.has_usable_password(), 'auth_keys': auth_keys_list, 'allow_local_auth': AUTH_PROVIDERS.get('local', None), }, context_instance=RequestContext(request))
def _get_bigicon_providers(request): all_providers = [provider.context for provider in AUTH_PROVIDERS.values() if provider.context] sort = lambda c1, c2: c1.weight - c2.weight can_show = lambda c: not request.user.is_authenticated() or c.show_to_logged_in_user return sorted([context for context in all_providers if context.mode == "BIGICON" and can_show(context)], sort)
def signin_page(request): subdomain = get_subdomain() on_hub_server = not any(map(lambda x: subdomain.endswith(x), ['-a', '-b'])) if not on_hub_server and not request.session.has_key('auth_error'): # Go log in to main site instead, which will redirect back here return HttpResponseRedirect('http://' + subdomain.replace('-a','').replace('-b', '') + '.moocforums.org' + reverse('auth_signin')) referer = request.META.get('HTTP_REFERER', '/') # If the referer is equal to the sign up page, e. g. if the previous login attempt was not successful we do not # change the sign in URL. The user should go to the same page. if not referer.replace(settings.APP_URL, '') == reverse('auth_signin'): request.session[ON_SIGNIN_SESSION_ATTR] = referer all_providers = [provider.context for provider in AUTH_PROVIDERS.values() if provider.context] sort = lambda c1, c2: c1.weight - c2.weight can_show = lambda c: not request.user.is_authenticated() or c.show_to_logged_in_user if on_hub_server: bigicon_providers = sorted([ context for context in all_providers if context.mode == 'BIGICON' and can_show(context) ], sort) else: bigicon_providers = [] smallicon_providers = sorted([ context for context in all_providers if context.mode == 'SMALLICON' and can_show(context) ], sort) top_stackitem_providers = sorted([ context for context in all_providers if context.mode == 'TOP_STACK_ITEM' and can_show(context) ], sort) stackitem_providers = sorted([ context for context in all_providers if context.mode == 'STACK_ITEM' and can_show(context) ], sort) try: msg = request.session['auth_error'] del request.session['auth_error'] except: msg = None return render_to_response( 'auth/signin.html', { 'msg': msg, 'all_providers': all_providers, 'bigicon_providers': bigicon_providers, 'top_stackitem_providers': top_stackitem_providers, 'stackitem_providers': stackitem_providers, 'smallicon_providers': smallicon_providers, }, RequestContext(request))
def signin_page(request): referer = request.META.get('HTTP_REFERER', '/') # If the referer is equal to the sign up page, e. g. if the previous login attempt was not successful we do not # change the sign in URL. The user should go to the same page. if not referer.replace(settings.APP_URL, '') == reverse('auth_signin'): request.session[ON_SIGNIN_SESSION_ATTR] = referer all_providers = [provider.context for provider in AUTH_PROVIDERS.values() if provider.context] sort = lambda c1, c2: c1.weight - c2.weight can_show = lambda c: not request.user.is_authenticated() or c.show_to_logged_in_user bigicon_providers = sorted([ context for context in all_providers if context.mode == 'BIGICON' and can_show(context) ], sort) smallicon_providers = sorted([ context for context in all_providers if context.mode == 'SMALLICON' and can_show(context) ], sort) top_stackitem_providers = sorted([ context for context in all_providers if context.mode == 'TOP_STACK_ITEM' and can_show(context) ], sort) stackitem_providers = sorted([ context for context in all_providers if context.mode == 'STACK_ITEM' and can_show(context) ], sort) allow_auto_redirect = "true" if request.user.is_authenticated(): allow_auto_redirect = "false" try: msg = request.session['auth_error'] del request.session['auth_error'] allow_auto_redirect = "false" except: msg = None return render_to_response( 'auth/signin.html', { 'msg': msg, 'bz_url': djsettings.BZ_SITE_BASE, 'allow_auto_redirect': allow_auto_redirect, 'all_providers': all_providers, 'bigicon_providers': bigicon_providers, 'top_stackitem_providers': top_stackitem_providers, 'stackitem_providers': stackitem_providers, 'smallicon_providers': smallicon_providers, }, RequestContext(request))
def signin_page(request): referer = request.META.get('HTTP_REFERER', '/') # If the referer is equal to the sign up page, e. g. if the previous login attempt was not successful we do not # change the sign in URL. The user should go to the same page. if not referer.replace(settings.APP_URL, '') == reverse('auth_signin'): request.session[ON_SIGNIN_SESSION_ATTR] = referer all_providers = [ provider.context for provider in AUTH_PROVIDERS.values() if provider.context ] sort = lambda c1, c2: c1.weight - c2.weight can_show = lambda c: not request.user.is_authenticated( ) or c.show_to_logged_in_user bigicon_providers = sorted([ context for context in all_providers if context.mode == 'BIGICON' and can_show(context) ], sort) smallicon_providers = sorted([ context for context in all_providers if context.mode == 'SMALLICON' and can_show(context) ], sort) top_stackitem_providers = sorted([ context for context in all_providers if context.mode == 'TOP_STACK_ITEM' and can_show(context) ], sort) stackitem_providers = sorted([ context for context in all_providers if context.mode == 'STACK_ITEM' and can_show(context) ], sort) try: msg = request.session['auth_error'] del request.session['auth_error'] except: msg = None return render_to_response( 'auth/signin.html', { 'msg': msg, 'all_providers': all_providers, 'bigicon_providers': bigicon_providers, 'top_stackitem_providers': top_stackitem_providers, 'stackitem_providers': stackitem_providers, 'smallicon_providers': smallicon_providers, }, RequestContext(request))
def signin_page(request): referer = request.META.get('HTTP_REFERER', reverse('index')) referer_parsed = urlparse(referer) # If the referer is equal to the sign up page, e. g. if the previous login attempt was not successful we do not # change the sign in URL. The user should go to the same page. ### F. CRESPEL EDIT 2013-01-26: reworked condition to work with HTTP/HTTPS and prevent redirecting to off-site URL if not referer_parsed.path == reverse('auth_signin') and urlparse(settings.APP_URL).path in referer_parsed.path: request.session[ON_SIGNIN_SESSION_ATTR] = referer all_providers = [provider.context for provider in AUTH_PROVIDERS.values() if provider.context] sort = lambda c1, c2: c1.weight - c2.weight can_show = lambda c: not request.user.is_authenticated() or c.show_to_logged_in_user bigicon_providers = sorted([ context for context in all_providers if context.mode == 'BIGICON' and can_show(context) ], sort) smallicon_providers = sorted([ context for context in all_providers if context.mode == 'SMALLICON' and can_show(context) ], sort) top_stackitem_providers = sorted([ context for context in all_providers if context.mode == 'TOP_STACK_ITEM' and can_show(context) ], sort) stackitem_providers = sorted([ context for context in all_providers if context.mode == 'STACK_ITEM' and can_show(context) ], sort) try: msg = request.session['auth_error'] del request.session['auth_error'] except: msg = None # F. CRESPEL EDIT 2013-01-28: added setting to redirect to a default authentication provider if settings.DEFAULT_AUTH_PROVIDER and not msg: return HttpResponseRedirect(reverse('auth_provider_signin', kwargs={'provider': str(settings.DEFAULT_AUTH_PROVIDER)})) return render_to_response( 'auth/signin.html', { 'msg': msg, 'all_providers': all_providers, 'bigicon_providers': bigicon_providers, 'top_stackitem_providers': top_stackitem_providers, 'stackitem_providers': stackitem_providers, 'smallicon_providers': smallicon_providers, }, RequestContext(request))
def auth_settings(request): """ change password view. url : /changepw/ template: authopenid/changepw.html """ user_ = request.user auth_keys = user_.auth_keys.all() if user_.has_usable_password(): FormClass = ChangePasswordForm else: FormClass = SetPasswordForm if request.POST: form = FormClass(request.POST, user=user_) if form.is_valid(): if user_.has_usable_password(): request.user.message_set.create(message=_("Your password was changed")) else: request.user.message_set.create(message=_("New password set")) FormClass = ChangePasswordForm user_.set_password(form.cleaned_data['password1']) user_.save() return HttpResponseRedirect(reverse('user_authsettings')) form = FormClass(user=user_) auth_keys_list = [] for k in auth_keys: provider = AUTH_PROVIDERS.get(k.provider, None) if provider is not None: name = "%s: %s" % (provider.context.human_name, provider.context.readable_key(k)) else: from forum.authentication.base import ConsumerTemplateContext "unknown: %s" % ConsumerTemplateContext.readable_key(k) auth_keys_list.append({ 'name': name, 'id': k.id }) return render_to_response('auth/auth_settings.html', { 'form': form, 'has_password': user_.has_usable_password(), 'auth_keys': auth_keys_list, }, context_instance=RequestContext(request))
def signin_page(request): request.session['on_signin_url'] = request.META.get('HTTP_REFERER', '/') if reverse('auth_signin') == request.session['on_signin_url'].replace( settings.APP_URL, ''): request.session['on_signin_url'] = reverse('index') all_providers = [provider.context for provider in AUTH_PROVIDERS.values()] sort = lambda c1, c2: c1.weight - c2.weight can_show = lambda c: not request.user.is_authenticated( ) or c.show_to_logged_in_user bigicon_providers = sorted([ context for context in all_providers if context.mode == 'BIGICON' and can_show(context) ], sort) smallicon_providers = sorted([ context for context in all_providers if context.mode == 'SMALLICON' and can_show(context) ], sort) top_stackitem_providers = sorted([ context for context in all_providers if context.mode == 'TOP_STACK_ITEM' and can_show(context) ], sort) stackitem_providers = sorted([ context for context in all_providers if context.mode == 'STACK_ITEM' and can_show(context) ], sort) try: msg = request.session['auth_error'] del request.session['auth_error'] except: msg = None return render_to_response( 'auth/signin.html', { 'msg': msg, 'all_providers': all_providers, 'bigicon_providers': bigicon_providers, 'top_stackitem_providers': top_stackitem_providers, 'stackitem_providers': stackitem_providers, 'smallicon_providers': smallicon_providers, }, RequestContext(request))
def signin_page(request): referer = request.META.get("HTTP_REFERER", "/") # If the referer is equal to the sign up page, e. g. if the previous login attempt was not successful we do not # change the sign in URL. The user should go to the same page. if not referer.replace(settings.APP_URL, "") == reverse("auth_signin"): request.session[ON_SIGNIN_SESSION_ATTR] = referer all_providers = [provider.context for provider in AUTH_PROVIDERS.values() if provider.context] sort = lambda c1, c2: c1.weight - c2.weight can_show = lambda c: not request.user.is_authenticated() or c.show_to_logged_in_user bigicon_providers = sorted( [context for context in all_providers if context.mode == "BIGICON" and can_show(context)], sort ) smallicon_providers = sorted( [context for context in all_providers if context.mode == "SMALLICON" and can_show(context)], sort ) top_stackitem_providers = sorted( [context for context in all_providers if context.mode == "TOP_STACK_ITEM" and can_show(context)], sort ) stackitem_providers = sorted( [context for context in all_providers if context.mode == "STACK_ITEM" and can_show(context)], sort ) try: msg = request.session["auth_error"] del request.session["auth_error"] except: msg = None return render_to_response( "auth/signin.html", { "msg": msg, "all_providers": all_providers, "bigicon_providers": bigicon_providers, "top_stackitem_providers": top_stackitem_providers, "stackitem_providers": stackitem_providers, "smallicon_providers": smallicon_providers, }, RequestContext(request), )
def signin_page(request, action=None): if action is None: request.session['on_signin_url'] = request.META.get('HTTP_REFERER', '/') else: request.session['on_signin_action'] = action request.session['on_signin_url'] = reverse('auth_action_signin', kwargs={'action': action}) all_providers = [provider.context for provider in AUTH_PROVIDERS.values()] sort = lambda c1, c2: c1.weight - c2.weight can_show = lambda c: not request.user.is_authenticated() or c.show_to_logged_in_user bigicon_providers = sorted([ context for context in all_providers if context.mode == 'BIGICON' and can_show(context) ], sort) smallicon_providers = sorted([ context for context in all_providers if context.mode == 'SMALLICON' and can_show(context) ], sort) top_stackitem_providers = sorted([ context for context in all_providers if context.mode == 'TOP_STACK_ITEM' and can_show(context) ], sort) stackitem_providers = sorted([ context for context in all_providers if context.mode == 'STACK_ITEM' and can_show(context) ], sort) try: msg = request.session['auth_error'] del request.session['auth_error'] except: msg = None return render_to_response( 'auth/signin.html', { 'msg': msg, 'all_providers': all_providers, 'bigicon_providers': bigicon_providers, 'top_stackitem_providers': top_stackitem_providers, 'stackitem_providers': stackitem_providers, 'smallicon_providers': smallicon_providers, }, RequestContext(request))
def signin_page(request): referer = request.META.get('HTTP_REFERER', reverse('index')) referer_parsed = urlparse(referer) # If the referer is equal to the sign up page, e. g. if the previous login attempt was not successful we do not # change the sign in URL. The user should go to the same page. ### F. CRESPEL EDIT 2013-01-26: reworked condition to work with HTTP/HTTPS and prevent redirecting to off-site URL if not referer_parsed.path == reverse('auth_signin') and urlparse( settings.APP_URL).path in referer_parsed.path: request.session[ON_SIGNIN_SESSION_ATTR] = referer all_providers = [ provider.context for provider in AUTH_PROVIDERS.values() if provider.context ] sort = lambda c1, c2: c1.weight - c2.weight can_show = lambda c: not request.user.is_authenticated( ) or c.show_to_logged_in_user bigicon_providers = sorted([ context for context in all_providers if context.mode == 'BIGICON' and can_show(context) ], sort) smallicon_providers = sorted([ context for context in all_providers if context.mode == 'SMALLICON' and can_show(context) ], sort) top_stackitem_providers = sorted([ context for context in all_providers if context.mode == 'TOP_STACK_ITEM' and can_show(context) ], sort) stackitem_providers = sorted([ context for context in all_providers if context.mode == 'STACK_ITEM' and can_show(context) ], sort) try: msg = request.session['auth_error'] del request.session['auth_error'] except: msg = None # F. CRESPEL EDIT 2013-01-28: added setting to redirect to a default authentication provider if settings.DEFAULT_AUTH_PROVIDER and not msg: return HttpResponseRedirect( reverse('auth_provider_signin', kwargs={'provider': str(settings.DEFAULT_AUTH_PROVIDER)})) return render_to_response( 'auth/signin.html', { 'msg': msg, 'all_providers': all_providers, 'bigicon_providers': bigicon_providers, 'top_stackitem_providers': top_stackitem_providers, 'stackitem_providers': stackitem_providers, 'smallicon_providers': smallicon_providers, }, RequestContext(request))