add impersonation middleware, add to templates
This commit is contained in:
		
							
								
								
									
										25
									
								
								passbook/admin/middleware.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								passbook/admin/middleware.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,25 @@ | ||||
| """passbook admin Middleware to impersonate users""" | ||||
|  | ||||
| from passbook.core.models import User | ||||
|  | ||||
|  | ||||
| def impersonate(get_response): | ||||
|     """Middleware to impersonate users""" | ||||
|  | ||||
|     def middleware(request): | ||||
|         """Middleware to impersonate users""" | ||||
|  | ||||
|         # User is superuser and has __impersonate ID set | ||||
|         if request.user.is_superuser and "__impersonate" in request.GET: | ||||
|             request.session['impersonate_id'] = request.GET["__impersonate"] | ||||
|         # user wants to stop impersonation | ||||
|         elif "__unimpersonate" in request.GET and 'impersonate_id' in request.session: | ||||
|             del request.session['impersonate_id'] | ||||
|  | ||||
|         # Actually impersonate user | ||||
|         if request.user.is_superuser and 'impersonate_id' in request.session: | ||||
|             request.user = User.objects.get(pk=request.session['impersonate_id']) | ||||
|  | ||||
|         response = get_response(request) | ||||
|         return response | ||||
|     return middleware | ||||
							
								
								
									
										5
									
								
								passbook/admin/settings.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								passbook/admin/settings.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,5 @@ | ||||
| """passbook admin settings""" | ||||
|  | ||||
| MIDDLEWARE = [ | ||||
|     'passbook.admin.middleware.impersonate', | ||||
| ] | ||||
| @ -31,6 +31,8 @@ | ||||
|                         href="{% url 'passbook_admin:user-delete' pk=user.pk %}?back={{ request.get_full_path }}">{% trans 'Delete' %}</a> | ||||
|                     <a class="btn btn-default btn-sm" | ||||
|                         href="{% url 'passbook_admin:user-password-reset' pk=user.pk %}?back={{ request.get_full_path }}">{% trans 'Reset Password' %}</a> | ||||
|                     <a class="btn btn-default btn-sm" | ||||
|                         href="{% url 'passbook_core:overview' %}?__impersonate={{ user.pk }}">{% trans 'Impersonate' %}</a> | ||||
|                 </td> | ||||
|             </tr> | ||||
|             {% endfor %} | ||||
|  | ||||
| @ -4,7 +4,8 @@ | ||||
|  | ||||
| <!DOCTYPE html> | ||||
| <html lang="en"> | ||||
|   <head> | ||||
|  | ||||
| <head> | ||||
|   <meta charset="UTF-8"> | ||||
|   <meta name="viewport" content="width=device-width, initial-scale=1"> | ||||
|   <title> | ||||
| @ -26,8 +27,17 @@ | ||||
|   </style> | ||||
|   {% block head %} | ||||
|   {% endblock %} | ||||
|   </head> | ||||
|   <body {% if is_login %} class="login-pf" {% endif %}> | ||||
| </head> | ||||
|  | ||||
| <body {% if is_login %} class="login-pf" {% endif %}> | ||||
|   {% if 'impersonate_id' in request.session %} | ||||
|   <div class="experimental-pf-bar"> | ||||
|     <span id="experimentalBar" class="experimental-pf-text"> | ||||
|       {% blocktrans with user=user %}You're currently impersonating {{ user }}.{% endblocktrans %} | ||||
|       <a href="?__unimpersonate=True" id="acceptMessage">{% trans 'Stop impersonation' %}</a> | ||||
|     </span> | ||||
|   </div> | ||||
|   {% endif %} | ||||
|   {% block body %} | ||||
|   {% endblock %} | ||||
|   <script src="{% static 'js/jquery.min.js' %}"></script> | ||||
| @ -39,5 +49,6 @@ | ||||
|   <div class="modals"> | ||||
|     {% include 'partials/about_modal.html' %} | ||||
|   </div> | ||||
|   </body> | ||||
| </body> | ||||
|  | ||||
| </html> | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 Jens Langhammer
					Jens Langhammer