Lets us log in by email (badly)
This commit is contained in:
		
							parent
							
								
									1743a6e9ae
								
							
						
					
					
						commit
						0487525f5c
					
				
					 5 changed files with 36 additions and 3 deletions
				
			
		
							
								
								
									
										26
									
								
								pinaxcon/account_hooks.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								pinaxcon/account_hooks.py
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,26 @@ | ||||||
|  | from account import hooks | ||||||
|  | from django.contrib.auth.models import User | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | class BetterAccountHookSet(hooks.AccountDefaultHookSet): | ||||||
|  | 
 | ||||||
|  |     def get_user_credentials(self, form, identifier_field): | ||||||
|  |         username = form.cleaned_data[identifier_field] | ||||||
|  | 
 | ||||||
|  |         # Find an actual username so we can authenticate | ||||||
|  |         print username, | ||||||
|  |         if identifier_field == "email": | ||||||
|  |             username = self.get_username_by_email(username) | ||||||
|  |         print username, | ||||||
|  | 
 | ||||||
|  |         return { | ||||||
|  |             "username": username, | ||||||
|  |             "password": form.cleaned_data["password"], | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |     def get_username_by_email(self, email): | ||||||
|  | 
 | ||||||
|  |         try: | ||||||
|  |             return User.objects.get(email=email).username | ||||||
|  |         except User.DoesNotExist: | ||||||
|  |             return None | ||||||
|  | @ -272,6 +272,7 @@ ACCOUNT_LOGIN_REDIRECT_URL = "home" | ||||||
| ACCOUNT_LOGOUT_REDIRECT_URL = "home" | ACCOUNT_LOGOUT_REDIRECT_URL = "home" | ||||||
| ACCOUNT_EMAIL_CONFIRMATION_EXPIRE_DAYS = 2 | ACCOUNT_EMAIL_CONFIRMATION_EXPIRE_DAYS = 2 | ||||||
| ACCOUNT_USE_AUTH_AUTHENTICATE = True | ACCOUNT_USE_AUTH_AUTHENTICATE = True | ||||||
|  | ACCOUNT_HOOKSET =  "pinaxcon.account_hooks.BetterAccountHookSet" | ||||||
| 
 | 
 | ||||||
| AUTHENTICATION_BACKENDS = [ | AUTHENTICATION_BACKENDS = [ | ||||||
|     "symposion.teams.backends.TeamPermissionsBackend", |     "symposion.teams.backends.TeamPermissionsBackend", | ||||||
|  |  | ||||||
|  | @ -15,7 +15,7 @@ | ||||||
|     <div class="row"> |     <div class="row"> | ||||||
|       <div class="col-md-4"> |       <div class="col-md-4"> | ||||||
| 
 | 
 | ||||||
|         <form action="{% url 'account_login' %}" method="POST"> |         <form action="{% url 'nbpy_login_handle' %}" method="POST"> | ||||||
|           <div class="panel panel-primary"> |           <div class="panel panel-primary"> | ||||||
|             <div class="panel-heading"> |             <div class="panel-heading"> | ||||||
|               <h3 class="panel-title"> |               <h3 class="panel-title"> | ||||||
|  | @ -24,7 +24,7 @@ | ||||||
|             </div> |             </div> | ||||||
|             <div class="panel-body"> |             <div class="panel-body"> | ||||||
|               {% csrf_token %} |               {% csrf_token %} | ||||||
|               {{ login_form| bootstrap }} |               {{ login_form|bootstrap }} | ||||||
|             </div> |             </div> | ||||||
|             <div class="panel-footer"> |             <div class="panel-footer"> | ||||||
|               <button role="submit" class="btn btn-primary">Log In</button> |               <button role="submit" class="btn btn-primary">Log In</button> | ||||||
|  |  | ||||||
|  | @ -53,6 +53,7 @@ urlpatterns = [ | ||||||
|     url(r"^admin/", include(admin.site.urls)), |     url(r"^admin/", include(admin.site.urls)), | ||||||
| 
 | 
 | ||||||
|     url(r"^login$", views.account_login, name="nbpy_login"), |     url(r"^login$", views.account_login, name="nbpy_login"), | ||||||
|  |     url(r"^login_handle$", views.EmailLoginView.as_view(), name="nbpy_login_handle"), | ||||||
|     url(r"^account/", include("account.urls")), |     url(r"^account/", include("account.urls")), | ||||||
| 
 | 
 | ||||||
|     url(r"^dashboard/", symposion.views.dashboard, name="dashboard"), |     url(r"^dashboard/", symposion.views.dashboard, name="dashboard"), | ||||||
|  |  | ||||||
|  | @ -7,6 +7,7 @@ from django.template.loader import get_template | ||||||
| from django.views import defaults | from django.views import defaults | ||||||
| 
 | 
 | ||||||
| from account.forms import LoginEmailForm, LoginUsernameForm, SignupForm | from account.forms import LoginEmailForm, LoginUsernameForm, SignupForm | ||||||
|  | from account.views import LoginView | ||||||
| 
 | 
 | ||||||
| def server_error(request, template_name=defaults.ERROR_500_TEMPLATE_NAME): | def server_error(request, template_name=defaults.ERROR_500_TEMPLATE_NAME): | ||||||
|     t = Template("{%% include '%s' %%}" % template_name) |     t = Template("{%% include '%s' %%}" % template_name) | ||||||
|  | @ -16,10 +17,14 @@ def server_error(request, template_name=defaults.ERROR_500_TEMPLATE_NAME): | ||||||
| def account_login(request): | def account_login(request): | ||||||
| 
 | 
 | ||||||
|     d = { |     d = { | ||||||
|         "login_form": LoginUsernameForm(), |         "login_form": LoginEmailForm(), | ||||||
|         "signup_form": SignupForm(), |         "signup_form": SignupForm(), | ||||||
|         "signup_open": getattr(settings, "ACCOUNT_OPEN_SIGNUP", True), |         "signup_open": getattr(settings, "ACCOUNT_OPEN_SIGNUP", True), | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     print d["signup_open"], settings.ACCOUNT_OPEN_SIGNUP |     print d["signup_open"], settings.ACCOUNT_OPEN_SIGNUP | ||||||
|     return render(request, "account_login.html", d) |     return render(request, "account_login.html", d) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | class EmailLoginView(LoginView): | ||||||
|  |     form_class = LoginEmailForm | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Christopher Neugebauer
						Christopher Neugebauer