Commit 73effbed30efff1e577c1c32e3ef6b98cd78e269
Committed by
Luciano Prestes
1 parent
bdbb7a93
Exists in
master
and in
31 other branches
Remove persona from colab
Signed-off-by: Gustavo Jaruga <darksshades@gmail.com> Signed-off-by: Lucas Moura <lucas.moura128@gmail.com>
Showing
15 changed files
with
115 additions
and
193 deletions
Show diff stats
colab.spec
colab/accounts/auth.py
colab/accounts/middleware.py
| ... | ... | @@ -1,24 +0,0 @@ |
| 1 | - | |
| 2 | -from django.shortcuts import redirect | |
| 3 | -from django.conf import settings | |
| 4 | - | |
| 5 | -VIEW_NAMES_ALLOWED = ('signup', 'Logout') | |
| 6 | - | |
| 7 | - | |
| 8 | -class UserRegisterMiddleware(object): | |
| 9 | - | |
| 10 | - def process_view(self, request, view_func, view_args, view_kwargs): | |
| 11 | - if not settings.BROWSERID_ENABLED: | |
| 12 | - return | |
| 13 | - | |
| 14 | - if request.is_ajax(): | |
| 15 | - return | |
| 16 | - | |
| 17 | - if not request.user.is_authenticated(): | |
| 18 | - return | |
| 19 | - | |
| 20 | - if not request.user.needs_update: | |
| 21 | - return | |
| 22 | - | |
| 23 | - if view_func.__name__ not in VIEW_NAMES_ALLOWED: | |
| 24 | - return redirect('signup') |
colab/accounts/templates/accounts/login.html
| ... | ... | @@ -1,12 +0,0 @@ |
| 1 | -{% extends 'base.html' %} | |
| 2 | -{% load browserid i18n %} | |
| 3 | - | |
| 4 | -{% block main-content %} | |
| 5 | - <br><br><br> | |
| 6 | - <div class="col-lg-12 text-center"> | |
| 7 | - <p>{% trans 'To login please click in the link below:'%}</p> | |
| 8 | - {% trans 'Login' as login_text %} | |
| 9 | - {% browserid_login text=login_text link_class='btn btn-primary btn-lg' %} | |
| 10 | - </div> | |
| 11 | - <br><br><br> | |
| 12 | -{% endblock %} |
colab/accounts/templates/accounts/user_update_form.html
| ... | ... | @@ -178,20 +178,18 @@ $(function() { |
| 178 | 178 | </div> |
| 179 | 179 | </div> |
| 180 | 180 | </div> |
| 181 | - {% if not BROWSERID_ENABLED %} | |
| 182 | - <div class="col-lg-4 col-md-5 col-sm-12 col-xm-12"> | |
| 183 | - <div class="panel panel-default"> | |
| 184 | - <div class="panel-heading"> | |
| 185 | - <h3 class="panel-title"> | |
| 186 | - {% trans 'Change Password' %} | |
| 187 | - </h3> | |
| 188 | - </div> | |
| 189 | - <div class="panel-body"> | |
| 190 | - <a href="{% url 'password_change' %}" class="btn btn-default btn-primary pull-right btn-block">{% trans "Change Password" %}</a> | |
| 191 | - </div> | |
| 181 | + <div class="col-lg-4 col-md-5 col-sm-12 col-xm-12"> | |
| 182 | + <div class="panel panel-default"> | |
| 183 | + <div class="panel-heading"> | |
| 184 | + <h3 class="panel-title"> | |
| 185 | + {% trans 'Change Password' %} | |
| 186 | + </h3> | |
| 187 | + </div> | |
| 188 | + <div class="panel-body"> | |
| 189 | + <a href="{% url 'password_change' %}" class="btn btn-default btn-primary pull-right btn-block">{% trans "Change Password" %}</a> | |
| 192 | 190 | </div> |
| 193 | 191 | </div> |
| 194 | - {% endif %} | |
| 192 | + </div> | |
| 195 | 193 | </div> |
| 196 | 194 | <div class="row"> |
| 197 | 195 | <div class="submit"> | ... | ... |
colab/accounts/tests/test_view_signup.py
| ... | ... | @@ -21,13 +21,6 @@ class TestSignUpView(TestCase): |
| 21 | 21 | "usertest@colab.com.br", "123colab4") |
| 22 | 22 | return user |
| 23 | 23 | |
| 24 | - def test_user_not_authenticated(self): | |
| 25 | - with self.settings(BROWSERID_ENABLED=True): | |
| 26 | - response = self.client.get("/account/register") | |
| 27 | - self.assertEquals(302, response.status_code) | |
| 28 | - url = "http://testserver/account/login" | |
| 29 | - self.assertEquals(url, response.url) | |
| 30 | - | |
| 31 | 24 | def test_user_authenticated_and_unregistered(self): |
| 32 | 25 | self.client.login(username="usertestcolab", password="123colab4") |
| 33 | 26 | response = self.client.get("/account/register/") | ... | ... |
colab/accounts/urls.py
| ... | ... | @@ -2,48 +2,40 @@ |
| 2 | 2 | from django.conf import settings |
| 3 | 3 | from django.conf.urls import patterns, url |
| 4 | 4 | |
| 5 | -from .views import (UserProfileDetailView, UserProfileUpdateView, LoginView, | |
| 5 | +from .views import (UserProfileDetailView, UserProfileUpdateView, | |
| 6 | 6 | ManageUserSubscriptionsView) |
| 7 | 7 | |
| 8 | 8 | from colab.accounts import views |
| 9 | 9 | from django.contrib.auth import views as auth_views |
| 10 | 10 | |
| 11 | 11 | |
| 12 | -BROWSERID_ENABLED = getattr(settings, 'BROWSERID_ENABLED', False) | |
| 12 | +urlpatterns = patterns('', | |
| 13 | + url(r'^login/?$', 'django.contrib.auth.views.login', name='login'), | |
| 13 | 14 | |
| 15 | + url(r'^logout/?$', 'django.contrib.auth.views.logout', | |
| 16 | + {'next_page':'home'}, name='logout'), | |
| 14 | 17 | |
| 15 | -if not BROWSERID_ENABLED: | |
| 16 | - urlpatterns = patterns('', | |
| 17 | - url(r'^login/?$', 'django.contrib.auth.views.login', name='login'), | |
| 18 | + url(r'^password-reset-done/?$', 'colab.accounts.views.password_reset_done_custom', | |
| 19 | + name="password_reset_done"), | |
| 20 | + url(r'^password-reset-complete/$', 'colab.accounts.views.password_reset_complete_custom', | |
| 21 | + name="password_reset_complete"), | |
| 18 | 22 | |
| 19 | - url(r'^logout/?$', 'django.contrib.auth.views.logout', | |
| 20 | - {'next_page':'home'}, name='logout'), | |
| 23 | + url(r'^password-reset-confirm/(?P<uidb64>[0-9A-Za-z]+)-(?P<token>.+)/$', | |
| 24 | + auth_views.password_reset_confirm, | |
| 25 | + {'template_name':'registration/password_reset_confirm_custom.html'}, | |
| 26 | + name="password_reset_confirm"), | |
| 21 | 27 | |
| 22 | - url(r'^password-reset-done/?$', 'colab.accounts.views.password_reset_done_custom', | |
| 23 | - name="password_reset_done"), | |
| 24 | - url(r'^password-reset-complete/$', 'colab.accounts.views.password_reset_complete_custom', | |
| 25 | - name="password_reset_complete"), | |
| 28 | + url(r'^password-reset/?$', auth_views.password_reset, | |
| 29 | + {'template_name':'registration/password_reset_form_custom.html'}, | |
| 30 | + name="password_reset"), | |
| 26 | 31 | |
| 27 | - url(r'^password-reset-confirm/(?P<uidb64>[0-9A-Za-z]+)-(?P<token>.+)/$', | |
| 28 | - auth_views.password_reset_confirm, | |
| 29 | - {'template_name':'registration/password_reset_confirm_custom.html'}, | |
| 30 | - name="password_reset_confirm"), | |
| 32 | + url(r'^change-password/?$',auth_views.password_change, | |
| 33 | + {'template_name':'registration/password_change_form_custom.html'}, | |
| 34 | + name='password_change'), | |
| 31 | 35 | |
| 32 | - url(r'^password-reset/?$', auth_views.password_reset, | |
| 33 | - {'template_name':'registration/password_reset_form_custom.html'}, | |
| 34 | - name="password_reset"), | |
| 35 | - | |
| 36 | - url(r'^change-password/?$',auth_views.password_change, | |
| 37 | - {'template_name':'registration/password_change_form_custom.html'}, | |
| 38 | - name='password_change'), | |
| 39 | - | |
| 40 | - url(r'^change-password-done/?$', | |
| 41 | - 'colab.accounts.views.password_changed', name='password_change_done'), | |
| 42 | - ) | |
| 43 | -else: | |
| 44 | - urlpatterns = patterns('', | |
| 45 | - url(r'^login/?$', LoginView.as_view(), name='login'), | |
| 46 | - ) | |
| 36 | + url(r'^change-password-done/?$', | |
| 37 | + 'colab.accounts.views.password_changed', name='password_change_done'), | |
| 38 | +) | |
| 47 | 39 | |
| 48 | 40 | urlpatterns += patterns('', |
| 49 | 41 | url(r'^register/?$', 'colab.accounts.views.signup', name='signup'), | ... | ... |
colab/accounts/views.py
| ... | ... | @@ -23,10 +23,6 @@ from .forms import (UserCreationForm, UserForm, ListsForm, |
| 23 | 23 | from .utils import mailman |
| 24 | 24 | |
| 25 | 25 | |
| 26 | -class LoginView(TemplateView): | |
| 27 | - template_name = "accounts/login.html" | |
| 28 | - | |
| 29 | - | |
| 30 | 26 | class UserProfileBaseMixin(object): |
| 31 | 27 | model = get_user_model() |
| 32 | 28 | slug_field = 'username' |
| ... | ... | @@ -86,37 +82,19 @@ class UserProfileDetailView(UserProfileBaseMixin, DetailView): |
| 86 | 82 | |
| 87 | 83 | |
| 88 | 84 | def signup(request): |
| 89 | - BROWSERID_ENABLED = getattr(settings, 'BROWSERID_ENABLED', False) | |
| 90 | - | |
| 91 | - if BROWSERID_ENABLED: | |
| 92 | - # If the user is not authenticated, redirect to login | |
| 93 | - if not request.user.is_authenticated(): | |
| 94 | - return redirect('login') | |
| 95 | 85 | |
| 96 | 86 | if request.user.is_authenticated(): |
| 97 | - # If the user doesn't need to update its main data, | |
| 98 | - # redirect to its profile | |
| 99 | - # It happens when user is created by browserid | |
| 100 | - # and didn't set his/her main data | |
| 101 | 87 | if not request.user.needs_update: |
| 102 | 88 | return redirect('user_profile', username=request.user.username) |
| 103 | 89 | |
| 104 | - # If the user is authenticated in Persona, but not in the Colab then he | |
| 105 | - # will be redirected to the register form. | |
| 106 | 90 | if request.method == 'GET': |
| 107 | - if BROWSERID_ENABLED: | |
| 108 | - user_form = UserForm() | |
| 109 | - else: | |
| 110 | - user_form = UserCreationForm() | |
| 91 | + user_form = UserCreationForm() | |
| 111 | 92 | lists_form = ListsForm() |
| 112 | 93 | |
| 113 | 94 | return render(request, 'accounts/user_create_form.html', |
| 114 | 95 | {'user_form': user_form, 'lists_form': lists_form}) |
| 115 | 96 | |
| 116 | - if BROWSERID_ENABLED: | |
| 117 | - user_form = UserForm(request.POST, instance=request.user) | |
| 118 | - else: | |
| 119 | - user_form = UserCreationForm(request.POST) | |
| 97 | + user_form = UserCreationForm(request.POST) | |
| 120 | 98 | lists_form = ListsForm(request.POST) |
| 121 | 99 | |
| 122 | 100 | if not user_form.is_valid() or not lists_form.is_valid(): |
| ... | ... | @@ -126,12 +104,9 @@ def signup(request): |
| 126 | 104 | user = user_form.save(commit=False) |
| 127 | 105 | user.needs_update = False |
| 128 | 106 | |
| 129 | - if not BROWSERID_ENABLED: | |
| 130 | - user.is_active = False | |
| 131 | - user.save() | |
| 132 | - EmailAddressValidation.create(user.email, user) | |
| 133 | - else: | |
| 134 | - user.save() | |
| 107 | + user.is_active = False | |
| 108 | + user.save() | |
| 109 | + EmailAddressValidation.create(user.email, user) | |
| 135 | 110 | |
| 136 | 111 | # Check if the user's email have been used previously |
| 137 | 112 | # in the mainling lists to link the user to old messages | ... | ... |
colab/home/context_processors.py
colab/management/initconfig.py
| ... | ... | @@ -21,15 +21,6 @@ EMAIL_SUBJECT_PREFIX = '[colab]' |
| 21 | 21 | |
| 22 | 22 | SECRET_KEY = '{secret_key}' |
| 23 | 23 | |
| 24 | -# Must use it without trailing slash | |
| 25 | -SITE_URL = 'http://localhost:8000' | |
| 26 | -BROWSERID_AUDIENCES = [ | |
| 27 | - 'http://localhost:8000', | |
| 28 | -# 'http://example.com', | |
| 29 | -# 'https://example.org', | |
| 30 | -# 'http://example.net', | |
| 31 | -] | |
| 32 | - | |
| 33 | 24 | ALLOWED_HOSTS = [ |
| 34 | 25 | 'localhost', |
| 35 | 26 | # 'example.com', |
| ... | ... | @@ -37,9 +28,6 @@ ALLOWED_HOSTS = [ |
| 37 | 28 | # 'example.net', |
| 38 | 29 | ] |
| 39 | 30 | |
| 40 | -### Uncomment to enable Broswer ID protocol for authentication | |
| 41 | -# BROWSERID_ENABLED = True | |
| 42 | - | |
| 43 | 31 | ### Uncomment to enable social networks fields profile |
| 44 | 32 | # SOCIAL_NETWORK_ENABLED = True |
| 45 | 33 | ... | ... |
colab/settings.py
| ... | ... | @@ -44,7 +44,6 @@ INSTALLED_APPS = ( |
| 44 | 44 | # Not standard apps |
| 45 | 45 | 'cliauth', |
| 46 | 46 | 'django_mobile', |
| 47 | - 'django_browserid', | |
| 48 | 47 | 'haystack', |
| 49 | 48 | 'hitcounter', |
| 50 | 49 | 'i18n_model', |
| ... | ... | @@ -196,7 +195,6 @@ TEMPLATE_CONTEXT_PROCESSORS = ( |
| 196 | 195 | 'colab.home.context_processors.robots', |
| 197 | 196 | 'colab.home.context_processors.ribbon', |
| 198 | 197 | 'colab.home.context_processors.google_analytics', |
| 199 | - 'colab.home.context_processors.browserid_enabled', | |
| 200 | 198 | ) |
| 201 | 199 | |
| 202 | 200 | MIDDLEWARE_CLASSES = ( |
| ... | ... | @@ -211,13 +209,10 @@ MIDDLEWARE_CLASSES = ( |
| 211 | 209 | 'django_mobile.middleware.MobileDetectionMiddleware', |
| 212 | 210 | 'django_mobile.middleware.SetFlavourMiddleware', |
| 213 | 211 | 'colab.tz.middleware.TimezoneMiddleware', |
| 214 | - 'colab.accounts.middleware.UserRegisterMiddleware', | |
| 215 | 212 | ) |
| 216 | 213 | |
| 217 | -# Add the django_browserid authentication backend. | |
| 218 | 214 | AUTHENTICATION_BACKENDS = ( |
| 219 | 215 | 'django.contrib.auth.backends.ModelBackend', |
| 220 | - 'colab.accounts.auth.ColabBrowserIDBackend', | |
| 221 | 216 | ) |
| 222 | 217 | |
| 223 | 218 | LOCALE_PATHS = ( |
| ... | ... | @@ -245,16 +240,10 @@ SUPER_ARCHIVES_LOCK_FILE = '/var/lock/colab/import_emails.lock' |
| 245 | 240 | # Mailman API settings |
| 246 | 241 | MAILMAN_API_URL = 'http://localhost:8124' |
| 247 | 242 | |
| 248 | -# BrowserID / Persona | |
| 249 | -SITE_URL = 'http://localhost:8000' | |
| 250 | -BROWSERID_AUDIENCES = [SITE_URL, SITE_URL.replace('https', 'http')] | |
| 251 | - | |
| 252 | - | |
| 253 | 243 | LOGIN_URL = '/user/login' |
| 254 | 244 | LOGIN_REDIRECT_URL = '/' |
| 255 | 245 | LOGIN_REDIRECT_URL_FAILURE = '/?bid_login_failed=true' |
| 256 | 246 | LOGOUT_REDIRECT_URL = '/' |
| 257 | -BROWSERID_CREATE_USER = True | |
| 258 | 247 | |
| 259 | 248 | REVPROXY_ADD_REMOTE_USER = True |
| 260 | 249 | |
| ... | ... | @@ -269,7 +258,6 @@ if locals().get('RAVEN_DSN', False): |
| 269 | 258 | } |
| 270 | 259 | INSTALLED_APPS += ('raven.contrib.django.raven_compat',) |
| 271 | 260 | |
| 272 | -BROWSERID_ENABLED = locals().get('BROWSERID_ENABLED') or False | |
| 273 | 261 | SOCIAL_NETWORK_ENABLED = locals().get('SOCIAL_NETWORK_ENABLED') or False |
| 274 | 262 | |
| 275 | 263 | locals().update(load_colab_apps()) | ... | ... |
colab/templates/base.html
| 1 | 1 | <!DOCTYPE html> |
| 2 | -{% load i18n browserid gravatar plugins %} | |
| 2 | +{% load i18n gravatar plugins %} | |
| 3 | 3 | {% load static from staticfiles %} |
| 4 | 4 | |
| 5 | 5 | <html> |
| ... | ... | @@ -50,10 +50,7 @@ |
| 50 | 50 | </head> |
| 51 | 51 | |
| 52 | 52 | <!-- data-no-turbolink will disable Rails TurboLinks for all pages under Colab --> |
| 53 | - <body data-no-turbolink> | |
| 54 | - {% if BROWSERID_ENABLED %} | |
| 55 | - {% browserid_info %} | |
| 56 | - {% endif %} | |
| 53 | + <body class="container" data-no-turbolink> | |
| 57 | 54 | |
| 58 | 55 | {% block ribbon %} |
| 59 | 56 | {% if ribbon %} |
| ... | ... | @@ -66,8 +63,82 @@ |
| 66 | 63 | {% endblock %} |
| 67 | 64 | |
| 68 | 65 | {% block navbar %} |
| 69 | - | |
| 70 | - {% include "header.html" %} | |
| 66 | + <nav class="navbar navbar-default navbar-fixed-top" role="navigation"> | |
| 67 | + <div class="container"> | |
| 68 | + <div class="navbar-header"> | |
| 69 | + | |
| 70 | + <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-main"> | |
| 71 | + <span class="sr-only">Toggle navigation</span> | |
| 72 | + <span class="icon-bar"></span> | |
| 73 | + <span class="icon-bar"></span> | |
| 74 | + <span class="icon-bar"></span> | |
| 75 | + <span class="icon-bar"></span> | |
| 76 | + </button> | |
| 77 | + <a class="navbar-brand" href="/"><img alt="Colab" src="{% static 'img/logo.svg' %}"></a> | |
| 78 | + </div> | |
| 79 | + <div class="collapse navbar-collapse navbar-main"> | |
| 80 | + <ul class="nav navbar-nav"> | |
| 81 | + | |
| 82 | + <li> | |
| 83 | + <a href="{% url 'thread_list' %}">{% trans "Groups" %}</a> | |
| 84 | + </li> | |
| 85 | + | |
| 86 | + {% plugins_menu %} | |
| 87 | + | |
| 88 | + <li class="hidden-lg hidden-md"> | |
| 89 | + <a href="{% url 'haystack_search' %}?q=">{% trans "Search" %}</a> | |
| 90 | + </li> | |
| 91 | + </ul> | |
| 92 | + | |
| 93 | + <ul class="nav navbar-nav navbar-right"> | |
| 94 | + {% if not user.is_authenticated %} | |
| 95 | + | |
| 96 | + <li class="dropdown hidden-xs hidden-lg"> | |
| 97 | + <a href="#" class="dropdown-toggle" data-toggle="dropdown">Acesso <b class="caret"></b></a> | |
| 98 | + <ul class="dropdown-menu"> | |
| 99 | + {% trans 'Login' as login_text %} | |
| 100 | + <li><a href="{% url 'signup' %}">{% trans "Register" %}</a></li> | |
| 101 | + <li><a href="{% url 'login' %}">{% trans "Login" %}</a></li> | |
| 102 | + </ul> | |
| 103 | + </li> | |
| 104 | + {% trans 'Login' as login_text %} | |
| 105 | + <li class="visible-xs hidden-sm hidden-md"><a href="{% url 'signup' %}">{% trans "Register" %}</a></li> | |
| 106 | + <li class="visible-xs hidden-sm hidden-md"><a href="{% url 'login' %}">{% trans "Login" %}</a></li> | |
| 107 | + {% else %} | |
| 108 | + <li id="user-menu" class="dropdown"> | |
| 109 | + <a href="#" class="dropdown-toggle user" data-toggle="dropdown">{% gravatar user.email 40 %} <b class="caret"></b> </a> | |
| 110 | + <ul class="dropdown-menu" role="menu"> | |
| 111 | + <li> | |
| 112 | + <div class="wrapper"> | |
| 113 | + <div class="thumbnail">{% gravatar user.email 100 %}</div> | |
| 114 | + <div class="user-info"> | |
| 115 | + <span><b>{{ user.get_full_name }}</b></span> | |
| 116 | + <span class="quiet">{{ user.email }}</span> | |
| 117 | + </div> | |
| 118 | + <div> | |
| 119 | + <a class="btn btn-info pull-left" href="{% url 'user_profile' user.username %}">{% trans "My Profile" %}</a> | |
| 120 | + {% trans 'Logout' as logout_text %} | |
| 121 | + <a class="btn btn-default pull-right" href="{% url 'logout' %}"> {% trans "Logout" %}</a> | |
| 122 | + </div> | |
| 123 | + </div> | |
| 124 | + </li> | |
| 125 | + </ul> | |
| 126 | + </li> | |
| 127 | + {% endif %} | |
| 128 | + </ul> | |
| 129 | + | |
| 130 | + <form action="{% url 'haystack_search' %}" method="GET" id="search-form" class="navbar-form navbar-right hidden-xs hidden-sm" role="search"> | |
| 131 | + <div class="form-group"> | |
| 132 | + <label class="sr-only" for="header-searchbox">{% trans 'Search here...' %}</label> | |
| 133 | + <input name="q" id="header-searchbox" | |
| 134 | + class="form-control" value="{{ request.GET.q }}" | |
| 135 | + type="search" placeholder="{% trans 'Search here...' %}" /> | |
| 136 | + </div> | |
| 137 | + <button type="submit" class="btn btn-default"><span class="glyphicon glyphicon-search"></span></button> | |
| 138 | + </form> | |
| 139 | + </div> | |
| 140 | + </div> | |
| 141 | + </nav> | |
| 71 | 142 | |
| 72 | 143 | {% endblock %} |
| 73 | 144 | |
| ... | ... | @@ -105,12 +176,6 @@ |
| 105 | 176 | |
| 106 | 177 | {% include "tz/set_utc_offset.html" %} |
| 107 | 178 | |
| 108 | - {% if BROWSERID_ENABLED %} | |
| 109 | - <script src="https://login.persona.org/include.js"></script> | |
| 110 | - <script src="{% static 'browserid/api.js' %}"></script> | |
| 111 | - <script src="{% static 'browserid/browserid.js' %}"></script> | |
| 112 | - {% endif %} | |
| 113 | - | |
| 114 | 179 | {% block footer_js %}{% endblock %} |
| 115 | 180 | </body> |
| 116 | 181 | </html> | ... | ... |
colab/urls.py
| ... | ... | @@ -30,8 +30,6 @@ urlpatterns = patterns('', |
| 30 | 30 | url(r'^myaccount/(?P<route>.*)$', |
| 31 | 31 | 'colab.accounts.views.myaccount_redirect', name='myaccount'), |
| 32 | 32 | |
| 33 | - url(r'', include('django_browserid.urls')), | |
| 34 | - | |
| 35 | 33 | # Uncomment the next line to enable the admin: |
| 36 | 34 | url(r'^colab/admin/', include(admin.site.urls)), |
| 37 | 35 | ... | ... |
docs/source/user.rst
| ... | ... | @@ -139,31 +139,6 @@ Social Networks |
| 139 | 139 | When this variable is True, the social networks fields, like Facebook and |
| 140 | 140 | Twitter, are added in user profile. By default, this fields are disabled. |
| 141 | 141 | |
| 142 | -Auth | |
| 143 | -++++ | |
| 144 | -.. attribute:: BROWSERID_ENABLED | |
| 145 | - | |
| 146 | - :default: False | |
| 147 | - | |
| 148 | - When this variable is True, Colab use BrowserID authentication. By default, | |
| 149 | - django authentication system is used. | |
| 150 | - | |
| 151 | -.. attribute:: BROWSERID_AUDIENCES | |
| 152 | - | |
| 153 | - :default: No default | |
| 154 | - | |
| 155 | - List of audiences that your site accepts. An audience is the protocol, | |
| 156 | - domain name, and (optionally) port that users access your site from. This | |
| 157 | - list is used to determine the audience a user is part of (how they are | |
| 158 | - accessing your site), which is used during verification to ensure that the | |
| 159 | - assertion given to you by the user was intended for your site. | |
| 160 | - | |
| 161 | - Without this, other sites that the user has authenticated with via Persona | |
| 162 | - could use their assertions to impersonate the user on your site. | |
| 163 | - | |
| 164 | - Note that this does not have to be a publicly accessible URL, so local URLs | |
| 165 | - like ``http://localhost:8000`` or ``http://127.0.0.1`` are acceptable as | |
| 166 | - long as they match what you are using to access your site. | |
| 167 | 142 | |
| 168 | 143 | Customization |
| 169 | 144 | ------------- | ... | ... |
setup.py