diff --git a/web/warpauth/templates/warpauth/profile.html b/web/warpauth/templates/warpauth/profile.html
new file mode 100644
index 0000000000000000000000000000000000000000..ee7ed5ca7cc11b510e4f3388898310c08ff02384
--- /dev/null
+++ b/web/warpauth/templates/warpauth/profile.html
@@ -0,0 +1,30 @@
+{% extends "base.html" %}
+
+{% load i18n %}
+{% block content %}
+
+<h2>{{ body_text }}</h2>
+<p class="lead">{% trans "Profile Settings" %}</p><p />
+
+
+<div>
+    <ul class="nav nav-tabs" role="tablist">
+        <li role="presentation" class="active">
+            <a href="#information" aria-controls="information" role="tab" data-toggle="tab">{% trans "Information" %}</a>
+        </li>
+        <li role="presentation">
+            <a href="#change_passwd" aria-controls="change_passwd" role="tab" data-toggle="tab">{% trans "Change Password" %}</a>
+        </li>
+    </ul>
+
+    <div class="tab-content">
+        <div role="tabpanel" class="tab-pane fade in active" id="information">
+            {% include "warpauth/profile/information.html" %}
+        </div>
+        <div role="tabpanel" class="tab-pane fade in" id="change_passwd">
+            {% include "warpauth/profile/change_password.html" %}
+        </div>
+    </div>
+</div>
+
+{% endblock %}
\ No newline at end of file
diff --git a/web/warpauth/templates/warpauth/profile/change_password.html b/web/warpauth/templates/warpauth/profile/change_password.html
new file mode 100644
index 0000000000000000000000000000000000000000..7f9a76827208957f6b5e924fd0c768d9350c91c2
--- /dev/null
+++ b/web/warpauth/templates/warpauth/profile/change_password.html
@@ -0,0 +1,34 @@
+{% load i18n %}
+
+<div>
+    <br />
+    <form class="form-horizontal" method="POST" role="form">
+        {% csrf_token %}
+        <input type="hidden" name="action" value="change_pw">
+        <div class="form-group">
+            <label class="control-label col-sm-2 col-lg-2 " for="id_old_pw">{% trans "Current Password" %}</label>
+            <div class=" col-sm-10 col-lg-10 ">
+                <input class=" form-control" id="id_old_pw" name="old_pw" type="password" />
+            </div>
+        </div>
+        <div class="form-group">
+            <label class="control-label col-sm-2 col-lg-2 " for="id_new_pw">{% trans "New Password" %}</label>
+            <div class=" col-sm-10 col-lg-10 ">
+                <input class=" form-control" id="id_new_pw" name="new_pw" type="password" />
+            </div>
+        </div>
+        <div class="form-group">
+            <label class="control-label col-sm-2 col-lg-2 " for="id_new_pw_confirm">{% trans "Confirm Password" %}</label>
+            <div class=" col-sm-10 col-lg-10 ">
+                <input class=" form-control" id="id_new_pw_confirm" name="new_pw_confirm" type="password" />
+            </div>
+        </div>
+         <div class="form-group">
+            <div class="col-sm-offset-2 col-sm-10">
+                <button style="float: left" type="submit" formmethod="post" class="btn btn-primary">Change Password</button>
+            </div>
+        </div>
+    </form>
+</div>
+
+
diff --git a/web/warpauth/templates/warpauth/profile/information.html b/web/warpauth/templates/warpauth/profile/information.html
new file mode 100644
index 0000000000000000000000000000000000000000..99627cefc920787c608f4b352dd2c6eeb8aa2196
--- /dev/null
+++ b/web/warpauth/templates/warpauth/profile/information.html
@@ -0,0 +1,18 @@
+{% load i18n %}
+
+<div>
+    <br/>
+    <p class="lead">{% trans "Groups" %}</p><p />
+
+    <div class="panel panel-default">
+        <div class="panel-body">
+            <table class="table">
+            {% for ldap_group in ldap_groups %}
+                <tr><td>{{ ldap_group }}</td></tr>
+            {% endfor %}
+            </table>
+        </div>
+    </div>
+</div>
+
+
diff --git a/web/warpauth/urls.py b/web/warpauth/urls.py
index 8566b63bef4b34381f88e6c4a2c28b87335c02b9..07002e50ebf7659025b967bc2ea8da0a73ff2009 100644
--- a/web/warpauth/urls.py
+++ b/web/warpauth/urls.py
@@ -1,5 +1,5 @@
 from django.conf.urls import url
-from warpauth.views import main, login, reset_password, warp_food
+from warpauth.views import main, login, reset_password, warp_food, profile
 
 urlpatterns = [
     # Authentication Pages
@@ -9,6 +9,8 @@ urlpatterns = [
 
     url(r'^reset_password/(?P<reset_hash>\w+)/$', reset_password.change_password, name='index'),
 
+    url(r'^profile/$', profile.index, name='index'),
+
     # Main Page
     url(r'^$', main.index, name='index'),
 
diff --git a/web/warpauth/views/profile.py b/web/warpauth/views/profile.py
new file mode 100644
index 0000000000000000000000000000000000000000..5d0853801553df7b82b6ef07436abb038154f613
--- /dev/null
+++ b/web/warpauth/views/profile.py
@@ -0,0 +1,12 @@
+from django.shortcuts import render
+from django.http import HttpResponse, HttpResponseBadRequest, HttpResponseNotAllowed, HttpResponseNotFound
+from django.shortcuts import redirect
+from django.contrib.auth.decorators import login_required
+from warpauth.util import *
+
+@login_required(login_url='/login/', redirect_field_name=None)
+def index(request):
+    print(request.user.ldap_user.group_names)
+    pages['ldap_groups'] = request.user.ldap_user.group_names
+    return HttpResponse(render(request, 'warpauth/profile.html', pages))
+