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
@@ -131,8 +131,6 @@ ALLOWED_HOSTS: | @@ -131,8 +131,6 @@ ALLOWED_HOSTS: | ||
131 | ## Disable indexing | 131 | ## Disable indexing |
132 | ROBOTS_NOINDEX: false | 132 | ROBOTS_NOINDEX: false |
133 | 133 | ||
134 | -## Disable browser id authentication | ||
135 | -# BROWSERID_ENABLED: true | ||
136 | EOF | 134 | EOF |
137 | chown root:colab /etc/colab/settings.yaml | 135 | chown root:colab /etc/colab/settings.yaml |
138 | chmod 0640 /etc/colab/settings.yaml | 136 | chmod 0640 /etc/colab/settings.yaml |
colab/accounts/auth.py
colab/accounts/middleware.py
@@ -1,24 +0,0 @@ | @@ -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,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,20 +178,18 @@ $(function() { | ||
178 | </div> | 178 | </div> |
179 | </div> | 179 | </div> |
180 | </div> | 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 | </div> | 190 | </div> |
193 | </div> | 191 | </div> |
194 | - {% endif %} | 192 | + </div> |
195 | </div> | 193 | </div> |
196 | <div class="row"> | 194 | <div class="row"> |
197 | <div class="submit"> | 195 | <div class="submit"> |
colab/accounts/tests/test_view_signup.py
@@ -21,13 +21,6 @@ class TestSignUpView(TestCase): | @@ -21,13 +21,6 @@ class TestSignUpView(TestCase): | ||
21 | "usertest@colab.com.br", "123colab4") | 21 | "usertest@colab.com.br", "123colab4") |
22 | return user | 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 | def test_user_authenticated_and_unregistered(self): | 24 | def test_user_authenticated_and_unregistered(self): |
32 | self.client.login(username="usertestcolab", password="123colab4") | 25 | self.client.login(username="usertestcolab", password="123colab4") |
33 | response = self.client.get("/account/register/") | 26 | response = self.client.get("/account/register/") |
colab/accounts/urls.py
@@ -2,48 +2,40 @@ | @@ -2,48 +2,40 @@ | ||
2 | from django.conf import settings | 2 | from django.conf import settings |
3 | from django.conf.urls import patterns, url | 3 | from django.conf.urls import patterns, url |
4 | 4 | ||
5 | -from .views import (UserProfileDetailView, UserProfileUpdateView, LoginView, | 5 | +from .views import (UserProfileDetailView, UserProfileUpdateView, |
6 | ManageUserSubscriptionsView) | 6 | ManageUserSubscriptionsView) |
7 | 7 | ||
8 | from colab.accounts import views | 8 | from colab.accounts import views |
9 | from django.contrib.auth import views as auth_views | 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 | urlpatterns += patterns('', | 40 | urlpatterns += patterns('', |
49 | url(r'^register/?$', 'colab.accounts.views.signup', name='signup'), | 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,10 +23,6 @@ from .forms import (UserCreationForm, UserForm, ListsForm, | ||
23 | from .utils import mailman | 23 | from .utils import mailman |
24 | 24 | ||
25 | 25 | ||
26 | -class LoginView(TemplateView): | ||
27 | - template_name = "accounts/login.html" | ||
28 | - | ||
29 | - | ||
30 | class UserProfileBaseMixin(object): | 26 | class UserProfileBaseMixin(object): |
31 | model = get_user_model() | 27 | model = get_user_model() |
32 | slug_field = 'username' | 28 | slug_field = 'username' |
@@ -86,37 +82,19 @@ class UserProfileDetailView(UserProfileBaseMixin, DetailView): | @@ -86,37 +82,19 @@ class UserProfileDetailView(UserProfileBaseMixin, DetailView): | ||
86 | 82 | ||
87 | 83 | ||
88 | def signup(request): | 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 | if request.user.is_authenticated(): | 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 | if not request.user.needs_update: | 87 | if not request.user.needs_update: |
102 | return redirect('user_profile', username=request.user.username) | 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 | if request.method == 'GET': | 90 | if request.method == 'GET': |
107 | - if BROWSERID_ENABLED: | ||
108 | - user_form = UserForm() | ||
109 | - else: | ||
110 | - user_form = UserCreationForm() | 91 | + user_form = UserCreationForm() |
111 | lists_form = ListsForm() | 92 | lists_form = ListsForm() |
112 | 93 | ||
113 | return render(request, 'accounts/user_create_form.html', | 94 | return render(request, 'accounts/user_create_form.html', |
114 | {'user_form': user_form, 'lists_form': lists_form}) | 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 | lists_form = ListsForm(request.POST) | 98 | lists_form = ListsForm(request.POST) |
121 | 99 | ||
122 | if not user_form.is_valid() or not lists_form.is_valid(): | 100 | if not user_form.is_valid() or not lists_form.is_valid(): |
@@ -126,12 +104,9 @@ def signup(request): | @@ -126,12 +104,9 @@ def signup(request): | ||
126 | user = user_form.save(commit=False) | 104 | user = user_form.save(commit=False) |
127 | user.needs_update = False | 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 | # Check if the user's email have been used previously | 111 | # Check if the user's email have been used previously |
137 | # in the mainling lists to link the user to old messages | 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,15 +21,6 @@ EMAIL_SUBJECT_PREFIX = '[colab]' | ||
21 | 21 | ||
22 | SECRET_KEY = '{secret_key}' | 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 | ALLOWED_HOSTS = [ | 24 | ALLOWED_HOSTS = [ |
34 | 'localhost', | 25 | 'localhost', |
35 | # 'example.com', | 26 | # 'example.com', |
@@ -37,9 +28,6 @@ ALLOWED_HOSTS = [ | @@ -37,9 +28,6 @@ ALLOWED_HOSTS = [ | ||
37 | # 'example.net', | 28 | # 'example.net', |
38 | ] | 29 | ] |
39 | 30 | ||
40 | -### Uncomment to enable Broswer ID protocol for authentication | ||
41 | -# BROWSERID_ENABLED = True | ||
42 | - | ||
43 | ### Uncomment to enable social networks fields profile | 31 | ### Uncomment to enable social networks fields profile |
44 | # SOCIAL_NETWORK_ENABLED = True | 32 | # SOCIAL_NETWORK_ENABLED = True |
45 | 33 |
colab/settings.py
@@ -44,7 +44,6 @@ INSTALLED_APPS = ( | @@ -44,7 +44,6 @@ INSTALLED_APPS = ( | ||
44 | # Not standard apps | 44 | # Not standard apps |
45 | 'cliauth', | 45 | 'cliauth', |
46 | 'django_mobile', | 46 | 'django_mobile', |
47 | - 'django_browserid', | ||
48 | 'haystack', | 47 | 'haystack', |
49 | 'hitcounter', | 48 | 'hitcounter', |
50 | 'i18n_model', | 49 | 'i18n_model', |
@@ -196,7 +195,6 @@ TEMPLATE_CONTEXT_PROCESSORS = ( | @@ -196,7 +195,6 @@ TEMPLATE_CONTEXT_PROCESSORS = ( | ||
196 | 'colab.home.context_processors.robots', | 195 | 'colab.home.context_processors.robots', |
197 | 'colab.home.context_processors.ribbon', | 196 | 'colab.home.context_processors.ribbon', |
198 | 'colab.home.context_processors.google_analytics', | 197 | 'colab.home.context_processors.google_analytics', |
199 | - 'colab.home.context_processors.browserid_enabled', | ||
200 | ) | 198 | ) |
201 | 199 | ||
202 | MIDDLEWARE_CLASSES = ( | 200 | MIDDLEWARE_CLASSES = ( |
@@ -211,13 +209,10 @@ MIDDLEWARE_CLASSES = ( | @@ -211,13 +209,10 @@ MIDDLEWARE_CLASSES = ( | ||
211 | 'django_mobile.middleware.MobileDetectionMiddleware', | 209 | 'django_mobile.middleware.MobileDetectionMiddleware', |
212 | 'django_mobile.middleware.SetFlavourMiddleware', | 210 | 'django_mobile.middleware.SetFlavourMiddleware', |
213 | 'colab.tz.middleware.TimezoneMiddleware', | 211 | 'colab.tz.middleware.TimezoneMiddleware', |
214 | - 'colab.accounts.middleware.UserRegisterMiddleware', | ||
215 | ) | 212 | ) |
216 | 213 | ||
217 | -# Add the django_browserid authentication backend. | ||
218 | AUTHENTICATION_BACKENDS = ( | 214 | AUTHENTICATION_BACKENDS = ( |
219 | 'django.contrib.auth.backends.ModelBackend', | 215 | 'django.contrib.auth.backends.ModelBackend', |
220 | - 'colab.accounts.auth.ColabBrowserIDBackend', | ||
221 | ) | 216 | ) |
222 | 217 | ||
223 | LOCALE_PATHS = ( | 218 | LOCALE_PATHS = ( |
@@ -245,16 +240,10 @@ SUPER_ARCHIVES_LOCK_FILE = '/var/lock/colab/import_emails.lock' | @@ -245,16 +240,10 @@ SUPER_ARCHIVES_LOCK_FILE = '/var/lock/colab/import_emails.lock' | ||
245 | # Mailman API settings | 240 | # Mailman API settings |
246 | MAILMAN_API_URL = 'http://localhost:8124' | 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 | LOGIN_URL = '/user/login' | 243 | LOGIN_URL = '/user/login' |
254 | LOGIN_REDIRECT_URL = '/' | 244 | LOGIN_REDIRECT_URL = '/' |
255 | LOGIN_REDIRECT_URL_FAILURE = '/?bid_login_failed=true' | 245 | LOGIN_REDIRECT_URL_FAILURE = '/?bid_login_failed=true' |
256 | LOGOUT_REDIRECT_URL = '/' | 246 | LOGOUT_REDIRECT_URL = '/' |
257 | -BROWSERID_CREATE_USER = True | ||
258 | 247 | ||
259 | REVPROXY_ADD_REMOTE_USER = True | 248 | REVPROXY_ADD_REMOTE_USER = True |
260 | 249 | ||
@@ -269,7 +258,6 @@ if locals().get('RAVEN_DSN', False): | @@ -269,7 +258,6 @@ if locals().get('RAVEN_DSN', False): | ||
269 | } | 258 | } |
270 | INSTALLED_APPS += ('raven.contrib.django.raven_compat',) | 259 | INSTALLED_APPS += ('raven.contrib.django.raven_compat',) |
271 | 260 | ||
272 | -BROWSERID_ENABLED = locals().get('BROWSERID_ENABLED') or False | ||
273 | SOCIAL_NETWORK_ENABLED = locals().get('SOCIAL_NETWORK_ENABLED') or False | 261 | SOCIAL_NETWORK_ENABLED = locals().get('SOCIAL_NETWORK_ENABLED') or False |
274 | 262 | ||
275 | locals().update(load_colab_apps()) | 263 | locals().update(load_colab_apps()) |
colab/templates/base.html
1 | <!DOCTYPE html> | 1 | <!DOCTYPE html> |
2 | -{% load i18n browserid gravatar plugins %} | 2 | +{% load i18n gravatar plugins %} |
3 | {% load static from staticfiles %} | 3 | {% load static from staticfiles %} |
4 | 4 | ||
5 | <html> | 5 | <html> |
@@ -50,10 +50,7 @@ | @@ -50,10 +50,7 @@ | ||
50 | </head> | 50 | </head> |
51 | 51 | ||
52 | <!-- data-no-turbolink will disable Rails TurboLinks for all pages under Colab --> | 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 | {% block ribbon %} | 55 | {% block ribbon %} |
59 | {% if ribbon %} | 56 | {% if ribbon %} |
@@ -66,8 +63,82 @@ | @@ -66,8 +63,82 @@ | ||
66 | {% endblock %} | 63 | {% endblock %} |
67 | 64 | ||
68 | {% block navbar %} | 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 | {% endblock %} | 143 | {% endblock %} |
73 | 144 | ||
@@ -105,12 +176,6 @@ | @@ -105,12 +176,6 @@ | ||
105 | 176 | ||
106 | {% include "tz/set_utc_offset.html" %} | 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 | {% block footer_js %}{% endblock %} | 179 | {% block footer_js %}{% endblock %} |
115 | </body> | 180 | </body> |
116 | </html> | 181 | </html> |
colab/urls.py
@@ -30,8 +30,6 @@ urlpatterns = patterns('', | @@ -30,8 +30,6 @@ urlpatterns = patterns('', | ||
30 | url(r'^myaccount/(?P<route>.*)$', | 30 | url(r'^myaccount/(?P<route>.*)$', |
31 | 'colab.accounts.views.myaccount_redirect', name='myaccount'), | 31 | 'colab.accounts.views.myaccount_redirect', name='myaccount'), |
32 | 32 | ||
33 | - url(r'', include('django_browserid.urls')), | ||
34 | - | ||
35 | # Uncomment the next line to enable the admin: | 33 | # Uncomment the next line to enable the admin: |
36 | url(r'^colab/admin/', include(admin.site.urls)), | 34 | url(r'^colab/admin/', include(admin.site.urls)), |
37 | 35 |
docs/source/user.rst
@@ -139,31 +139,6 @@ Social Networks | @@ -139,31 +139,6 @@ Social Networks | ||
139 | When this variable is True, the social networks fields, like Facebook and | 139 | When this variable is True, the social networks fields, like Facebook and |
140 | Twitter, are added in user profile. By default, this fields are disabled. | 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 | Customization | 143 | Customization |
169 | ------------- | 144 | ------------- |
setup.py
@@ -29,8 +29,6 @@ REQUIREMENTS = [ | @@ -29,8 +29,6 @@ REQUIREMENTS = [ | ||
29 | 'raven==3.5.2', | 29 | 'raven==3.5.2', |
30 | 'tornado==3.1.1', | 30 | 'tornado==3.1.1', |
31 | 31 | ||
32 | - # Deps for Single SignOn (SSO) - Replaced with django-browserid==0.9 | ||
33 | - 'django-browserid==0.11', | ||
34 | 'django-revproxy==0.9.0', | 32 | 'django-revproxy==0.9.0', |
35 | 33 | ||
36 | # Feedzilla (planet) and deps | 34 | # Feedzilla (planet) and deps |