diff --git a/apps/member/urls.py b/apps/member/urls.py
index 6a7ed5ce4004879805378e7645ebb78a2e374684..fdb2e9110752af5146970bf304e6646083600914 100644
--- a/apps/member/urls.py
+++ b/apps/member/urls.py
@@ -15,6 +15,7 @@ urlpatterns = [
     path('user/', views.UserListView.as_view(), name="user_list"),
     path('user/<int:pk>', views.UserDetailView.as_view(), name="user_detail"),
     path('user/<int:pk>/update', views.UserUpdateView.as_view(), name="user_update_profile"),
+    path('user/<int:pk>/aliases', views.AliasView.as_view(), name="user_alias"),
     path('manage-auth-token/', views.ManageAuthTokens.as_view(), name='auth_token'),
 
     # API for the user autocompleter
diff --git a/apps/member/views.py b/apps/member/views.py
index d03a94e0ceb388fc57262cfc0e56d92217815191..3ff10e8a53c482272ed3ec6ae364e2f1f1e2acd2 100644
--- a/apps/member/views.py
+++ b/apps/member/views.py
@@ -6,14 +6,17 @@ from django.contrib.auth.mixins import LoginRequiredMixin
 from django.shortcuts import redirect
 from django.utils.translation import gettext_lazy as _
 from django.views.generic import CreateView, DetailView, UpdateView, TemplateView
+from django.views.generic.edit import FormMixin
 from django.contrib.auth.models import User
 from django.urls import reverse_lazy
 from django.db.models import Q
 from django_tables2.views import SingleTableView
 from rest_framework.authtoken.models import Token
+
 from note.models import Alias, NoteUser
 from note.models.transactions import Transaction
-from note.tables import HistoryTable
+from note.tables import HistoryTable, AliasTable
+from note.forms import AliasForm
 
 from .models import Profile, Club, Membership
 from .forms import SignUpForm, ProfileForm, ClubForm, MembershipForm, MemberFormSet, FormSetHelper
@@ -153,6 +156,36 @@ class UserListView(LoginRequiredMixin, SingleTableView):
         context["filter"] = self.filter
         return context
 
+class AliasView(LoginRequiredMixin,FormMixin,DetailView):
+    model = User
+    template_name = 'member/user_alias.html'
+    context_object_name = 'user_object'
+    form_class = AliasForm
+
+    def get_context_data(self,**kwargs):
+        context = super().get_context_data(**kwargs)
+        context["aliases"] = AliasTable(context['user_object'].note.alias_set.all())
+        context["alias_form"] = AliasForm()
+        return context
+
+    def get_success_url(self):
+        return reverse_lazy('member:user_alias', kwargs={'pk': self.object.id})
+
+    def post(self,request,*args,**kwargs):
+        self.object = self.get_object()
+        form = self.get_form()
+        if form.is_valid():
+            return self.form_valid(form)
+        else:
+            return self.form_invalid(form)
+
+    def form_valid(self, form):
+        alias = form.save(commit=False)
+        alias.note = self.object.note
+        alias.save()
+        alias.note.save()
+        print(alias,alias.pk)
+        return super().form_valid(form)
 
 class ManageAuthTokens(LoginRequiredMixin, TemplateView):
     """
diff --git a/apps/note/forms.py b/apps/note/forms.py
index 3222acec14b18adc92dd7d170319c9dfb52a599c..d920b9aac812670697f2c2a2ccaa310b3e3f5f11 100644
--- a/apps/note/forms.py
+++ b/apps/note/forms.py
@@ -6,6 +6,12 @@ from django import forms
 from django.utils.translation import gettext_lazy as _
 
 from .models import Transaction, TransactionTemplate, TemplateTransaction
+from .models import Alias
+
+class AliasForm(forms.ModelForm):
+    class Meta:
+        model = Alias
+        fields = ("name",)
 
 
 class TransactionTemplateForm(forms.ModelForm):
diff --git a/apps/note/tables.py b/apps/note/tables.py
index 43a1ef7413566ce1c127131d7addf094910efbb0..2248c412175e5e3868a19b5461ce41cce84bfd86 100644
--- a/apps/note/tables.py
+++ b/apps/note/tables.py
@@ -5,7 +5,7 @@ import django_tables2 as tables
 from django.db.models import F
 
 from .models.transactions import Transaction
-
+from .models.notes import Alias
 
 class HistoryTable(tables.Table):
     class Meta:
@@ -24,3 +24,16 @@ class HistoryTable(tables.Table):
         queryset = queryset.annotate(total=F('amount') * F('quantity')) \
             .order_by(('-' if is_descending else '') + 'total')
         return (queryset, True)
+
+class AliasTable(tables.Table):
+    class Meta:
+        attrs = {
+            'class':
+            'table table condensed table-striped table-hover'
+        }
+        model = Alias
+        fields = ('name',)
+        template_name = 'django_tables2/bootstrap4.html'
+
+    delete = tables.LinkColumn('member:user_alias_delete', args=[A('id')], attrs={
+        'a': {'class': 'btn'} })
diff --git a/templates/member/profile_detail.html b/templates/member/profile_detail.html
index 6b5c127a86e3a24fe7407a2c72f7cd213f537bbb..0a19eecdf55a96eb2fa36030f437435cd5f4a943 100644
--- a/templates/member/profile_detail.html
+++ b/templates/member/profile_detail.html
@@ -30,7 +30,7 @@
                     <dt class="col-xl-6">{% trans 'balance'|capfirst %}</dt>
                     <dd class="col-xl-6">{{ object.note.balance | pretty_money }}</dd>
 
-                    <dt class="col-xl-6">{% trans 'aliases'|capfirst %}</dt>
+                    <dt class="col-xl-6"> <a href="{% url 'member:user_alias' object.pk %}">{% trans 'aliases'|capfirst %}</a></dt>
                     <dd class="col-xl-6">{{ object.note.alias_set.all|join:", " }}</dd>
                 </dl>
 
diff --git a/templates/member/user_alias.html b/templates/member/user_alias.html
new file mode 100644
index 0000000000000000000000000000000000000000..f1a06e7e290dd755dbb3c19c29ca6774cc4e2080
--- /dev/null
+++ b/templates/member/user_alias.html
@@ -0,0 +1,65 @@
+{% extends "base.html" %}
+{% load i18n static pretty_money django_tables2 crispy_forms_tags %}
+
+{% block content %}
+<div class="row mt-4">
+    <div class="col-md-3 mb-4">
+        <div class="card bg-light shadow">
+            <img src="{{ object.note.display_image }}" class="card-img-top" alt="">
+            <div class="card-body">
+                <dl class="row">
+                    <dt class="col-xl-6">{% trans 'name'|capfirst %}, {% trans 'first name' %}</dt>
+                    <dd class="col-xl-6">{{ object.last_name }} {{ object.first_name }}</dd>
+
+                    <dt class="col-xl-6">{% trans 'username'|capfirst %}</dt>
+                    <dd class="col-xl-6">{{ object.username }}</dd>
+
+                    <dt class="col-xl-6">{% trans 'password'|capfirst %}</dt>
+                    <dd class="col-xl-6">
+                        <a class="small" href="{% url 'password_change' %}">
+                            {% trans 'Change password' %}
+                        </a>
+                    </dd>
+
+                    <dt class="col-xl-6">{% trans 'section'|capfirst %}</dt>
+                    <dd class="col-xl-6">{{ object.profile.section }}</dd>
+
+                    <dt class="col-xl-6">{% trans 'address'|capfirst %}</dt>
+                    <dd class="col-xl-6">{{ object.profile.address }}</dd>
+
+                    <dt class="col-xl-6">{% trans 'balance'|capfirst %}</dt>
+                    <dd class="col-xl-6">{{ object.note.balance | pretty_money }}</dd>
+
+                    <dt class="col-xl-6">{% trans 'aliases'|capfirst %}</dt>
+                    <dd class="col-xl-6">{{ object.note.alias_set.all|join:", " }}</dd>
+                </dl>
+
+                {% if object.pk == user.pk %}
+                    <a class="small" href="{% url 'member:auth_token' %}">{% trans 'Manage auth token' %}</a>
+                {% endif %}
+            </div>
+            <div class="card-footer text-center">
+                <a class="btn btn-primary btn-sm" href="{% url 'member:user_update_profile' object.pk %}">{% trans 'Update Profile' %}</a>
+                <a class="btn btn-primary btn-sm" href="{% url 'member:user_detail' object.pk %}">{% trans 'View Profile' %}</a>
+            </div>
+        </div>
+    </div>
+
+    <div class="col-md-9">
+        <div class="d-flex justify-content-center">
+            <form method="post">
+                {% csrf_token %}
+                {{ alias_form |crispy }}
+                <button class="btn btn-primary" type="submit">
+                    {% trans "Add alias" %}
+                </button>
+            </form>
+        </div>
+        <div class="card bg-light shadow">
+            <div class="card-body">
+                {% render_table aliases %}
+            </div>
+        </div>
+    </div>
+</div>
+{% endblock %}