diff --git a/apps/member/urls.py b/apps/member/urls.py
index 7a62cd1..90c8d91 100644
--- a/apps/member/urls.py
+++ b/apps/member/urls.py
@@ -2,7 +2,7 @@ from django.urls import path
 from django.views.generic import RedirectView
 
 from .views import CreateUserView, MyAccountView, UserDetailView,\
-    ProfileListView, OrphanedProfileListView, OrganizersListView
+    ProfileListView, OrphanedProfileListView, OrganizersListView, ResetAdminView
 
 app_name = "member"
 
@@ -17,4 +17,5 @@ urlpatterns = [
     path("profiles/", ProfileListView.as_view(), name="all_profiles"),
     path("orphaned-profiles/", OrphanedProfileListView.as_view(), name="orphaned_profiles"),
     path("organizers/", OrganizersListView.as_view(), name="organizers"),
+    path("reset-admin/", ResetAdminView.as_view(), name="reset_admin"),
 ]
diff --git a/apps/member/views.py b/apps/member/views.py
index 3cc1968..02767ed 100644
--- a/apps/member/views.py
+++ b/apps/member/views.py
@@ -1,7 +1,9 @@
 from django.contrib.auth.mixins import LoginRequiredMixin
+from django.contrib.auth.models import AnonymousUser
 from django.core.exceptions import PermissionDenied
 from django.db.models import Q
 from django.http import FileResponse
+from django.shortcuts import redirect
 from django.utils.translation import gettext_lazy as _
 from django.views import View
 from django.views.generic import CreateView, UpdateView, DetailView
@@ -31,15 +33,29 @@ class MyAccountView(LoginRequiredMixin, UpdateView):
 class UserDetailView(LoginRequiredMixin, DetailView):
     model = TFJMUser
     form_class = TFJMUserForm
-    context_object_name = "user"
+    context_object_name = "tfjmuser"
 
     def dispatch(self, request, *args, **kwargs):
+        if isinstance(request.user, AnonymousUser):
+            raise PermissionDenied
+
+        self.object = self.get_object()
+
         if not request.user.admin \
-                and (self.object.team is not None and request.user not in self.object.team.tournament.organizers)\
+                and (self.object.team is not None and request.user not in self.object.team.tournament.organizers.all())\
                 and self.request.user != self.object:
             raise PermissionDenied
         return super().dispatch(request, *args, **kwargs)
 
+    def post(self, request, *args, **kwargs):
+        if "view_as" in request.POST:
+            session = request.session
+            session["admin"] = request.user.pk
+            obj = self.get_object()
+            session["_fake_user_id"] = obj.pk
+            return redirect(request.path)
+        return self.get(request, *args, **kwargs)
+
     def get_context_data(self, **kwargs):
         context = super().get_context_data(**kwargs)
 
@@ -82,3 +98,10 @@ class OrganizersListView(AdminMixin, SingleTableView):
     table_class = UserTable
     template_name = "member/profile_list.html"
     extra_context = dict(title=_("Organizers"))
+
+
+class ResetAdminView(AdminMixin, View):
+    def dispatch(self, request, *args, **kwargs):
+        if "_fake_user_id" in request.session:
+            del request.session["_fake_user_id"]
+        return redirect(request.GET["path"])
diff --git a/templates/base.html b/templates/base.html
index 7742ee1..979b4f4 100644
--- a/templates/base.html
+++ b/templates/base.html
@@ -141,6 +141,11 @@
                 {% endif %}
             
             
+                {% if "_fake_user_id" in request.session %}
+                    - 
+                         {% trans "Return to admin view" %}
+                    
 
+                {% endif %}
                 {% if not user.is_authenticated %}
                     - 
                          {% trans "Log in" %}
diff --git a/templates/member/tfjmuser_detail.html b/templates/member/tfjmuser_detail.html
index 486d172..3fc25e4 100644
--- a/templates/member/tfjmuser_detail.html
+++ b/templates/member/tfjmuser_detail.html
@@ -10,52 +10,52 @@
         
             
                 - {% trans 'role'|capfirst %}
 
-                - {{ user.get_role_display }}
 
+                - {{ tfjmuser.get_role_display }}
 
 
                 - {% trans 'team'|capfirst %}
 
-                - {{ user.team }}
 
+                - {{ tfjmuser.team }}
 
 
                 - {% trans 'birth date'|capfirst %}
 
-                - {{ user.birth_date }}
 
+                - {{ tfjmuser.birth_date }}
 
 
                 - {% trans 'gender'|capfirst %}
 
-                - {{ user.get_gender_display }}
 
+                - {{ tfjmuser.get_gender_display }}
 
 
                 - {% trans 'address'|capfirst %}
 
-                - {{ user.address }}, {{ user.postal_code }}, {{ user.city }}{% if user.country != "France" %}, {{ user.country }}{% endif %}
 
+                - {{ tfjmuser.address }}, {{ tfjmuser.postal_code }}, {{ tfjmuser.city }}{% if tfjmuser.country != "France" %}, {{ tfjmuser.country }}{% endif %}
 
 
                 - {% trans 'email'|capfirst %}
 
-                - {{ user.email }}
 
+                - {{ tfjmuser.email }}
 
 
                 - {% trans 'phone number'|capfirst %}
 
-                - {{ user.phone_number }}
 
+                - {{ tfjmuser.phone_number }}
 
 
-                {% if user.role == '3participant' %}
+                {% if tfjmuser.role == '3participant' %}
                     - {% trans 'school'|capfirst %}
 
-                    - {{ user.school }}
 
+                    - {{ tfjmuser.school }}
 
 
                     - {% trans 'class'|capfirst %}
 
-                    - {{ user.get_student_class_display }}
 
+                    - {{ tfjmuser.get_student_class_display }}
 
 
-                    {% if user.responsible_name %}
+                    {% if tfjmuser.responsible_name %}
                         - {% trans 'responsible name'|capfirst %}
 
-                        - {{ user.responsible_name }}
 
+                        - {{ tfjmuser.responsible_name }}
 
                     {% endif %}
 
-                    {% if user.responsible_phone %}
+                    {% if tfjmuser.responsible_phone %}
                         - {% trans 'responsible phone'|capfirst %}
 
-                        - {{ user.responsible_phone }}
 
+                        - {{ tfjmuser.responsible_phone }}
 
                     {% endif %}
 
-                    {% if user.responsible_email %}
+                    {% if tfjmuser.responsible_email %}
                         - {% trans 'responsible email'|capfirst %}
 
-                        - {{ user.responsible_email }}
 
+                        - {{ tfjmuser.responsible_email }}
 
                     {% endif %}
                 {% endif %}
 
-                {% if user.role == '2coach' %}
+                {% if tfjmuser.role == '2coach' %}
                     - {% trans 'description'|capfirst %}
 
-                    - {{ user.description }}
 
+                    - {{ tfjmuser.description }}
 
                 {% endif %}
             
          
@@ -66,4 +66,12 @@
     {% trans "Documents" %}
 
     {# TODO Display documents #}
+
+    {% if request.user.is_superuser %}
+        
+        
+    {% endif %}
 {% endblock %}
diff --git a/tfjm/middlewares.py b/tfjm/middlewares.py
index fff824c..7a51220 100644
--- a/tfjm/middlewares.py
+++ b/tfjm/middlewares.py
@@ -2,12 +2,14 @@
 # SPDX-License-Identifier: GPL-3.0-or-later
 
 from django.conf import settings
-from django.contrib.auth.models import AnonymousUser, User
+from django.contrib.auth.models import AnonymousUser
 
 from threading import local
 
 from django.contrib.sessions.backends.db import SessionStore
 
+from member.models import TFJMUser
+
 USER_ATTR_NAME = getattr(settings, 'LOCAL_USER_ATTR_NAME', '_current_user')
 SESSION_ATTR_NAME = getattr(settings, 'LOCAL_SESSION_ATTR_NAME', '_current_session')
 IP_ATTR_NAME = getattr(settings, 'LOCAL_IP_ATTR_NAME', '_current_ip')
@@ -21,7 +23,7 @@ def _set_current_user_and_ip(user=None, session=None, ip=None):
     setattr(_thread_locals, IP_ATTR_NAME, ip)
 
 
-def get_current_user() -> User:
+def get_current_user() -> TFJMUser:
     return getattr(_thread_locals, USER_ATTR_NAME, None)
 
 
@@ -49,7 +51,11 @@ class SessionMiddleware(object):
         self.get_response = get_response
 
     def __call__(self, request):
+        if "_fake_user_id" in request.session:
+            request.user = TFJMUser.objects.get(pk=request.session["_fake_user_id"])
+
         user = request.user
+        print(user)
         if 'HTTP_X_FORWARDED_FOR' in request.META:
             ip = request.META.get('HTTP_X_FORWARDED_FOR')
         else:
diff --git a/tfjm/settings.py b/tfjm/settings.py
index 3cd70cf..fc08e34 100644
--- a/tfjm/settings.py
+++ b/tfjm/settings.py
@@ -65,6 +65,7 @@ MIDDLEWARE = [
     'django.middleware.clickjacking.XFrameOptionsMiddleware',
     'django.middleware.locale.LocaleMiddleware',
     'django.contrib.sites.middleware.CurrentSiteMiddleware',
+    'tfjm.middlewares.SessionMiddleware',
     'tfjm.middlewares.TurbolinksMiddleware',
 ]