Skip to content

Commit 2187ee7

Browse files
committed
Add forms and views
1 parent 5ce447e commit 2187ee7

File tree

4 files changed

+64
-2
lines changed

4 files changed

+64
-2
lines changed

volgui/urls.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,5 +28,7 @@
2828
url(r'^ajaxhandler/(?P<command>.+)/$', views.ajax_handler),
2929
url(r'addfiles', views.addfiles),
3030
url(r'^admin/', admin.site.urls),
31+
url(r'^login/', views.login_page),
32+
url(r'^logout/', views.logout_page)
3133

3234
]

web/templates/base.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
</ul>
3939

4040
<ul class="nav navbar-nav navbar-right">
41+
<li><a href="/logout/">Logout</a></li>
4142
<li><a href="#" data-toggle="modal" data-target="#pluginModal">Add Plugins</a></li>
4243
<li><a href="#" data-toggle="modal" data-target="#aboutModal">About</a></li>
4344
<li class="dropdown">

web/templates/index.html

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,29 @@
66

77
{% block content %}
88

9+
{% if reqauth %}
10+
11+
<div class="panel panel-default">
12+
<div class="panel-heading">
13+
<h3 class="panel-title">Authentication Required.</h3>
14+
</div>
15+
16+
<div class="panel-body">
17+
<p>The Administrator of the platform has enabled authentication.</p>
18+
<form class="form-inline center-block" action="/login/" method="post">
19+
<div class="form-group">
20+
<input type="text" class="form-control" id="username" name="username" placeholder="UserName">
21+
</div>
22+
<div class="form-group">
23+
<input type="password" class="form-control" id="password" name="password" placeholder="Password">
24+
</div>
25+
<button type="submit" class="btn btn-default">Sign in</button>
26+
{% csrf_token %}
27+
</form>
28+
</div>
29+
</div>
30+
31+
{% else %}
932

1033
<!-- Search All -->
1134
<div class="panel panel-default">
@@ -99,4 +122,7 @@ <h3 class="panel-title">Showing {{ session_counts.1 }} to {{ session_counts.0 }}
99122
<script type="text/javascript">
100123
setTimeout(function () { location.reload(true); }, 30000);
101124
</script>
125+
126+
{% endif %}
127+
102128
{% endblock %}

web/views.py

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
1717
from django.views.decorators.csrf import csrf_exempt
1818
from django.contrib.auth.decorators import login_required
19+
from django.contrib.auth import authenticate, login, logout
1920

2021
try:
2122
import yara
@@ -150,6 +151,35 @@ def session_creation(request, mem_image, session_id):
150151
##
151152
# Page Views
152153
##
154+
# Login Page
155+
def login_page(request):
156+
try:
157+
user_name = request.POST['username']
158+
password = request.POST['password']
159+
if user_name and password:
160+
user = authenticate(username=user_name, password=password)
161+
if user is not None:
162+
if user.is_active:
163+
login(request, user)
164+
return redirect('/')
165+
else:
166+
message = "This account is currently disabled. Please check with your admin."
167+
return main_page(request, error_line=message)
168+
else:
169+
message = "User does not exist or incorrect password."
170+
return main_page(request, error_line=message)
171+
except Exception as error:
172+
logger.error(error)
173+
message = "Unable to login to the Web Panel"
174+
return main_page(request, error_line=message)
175+
176+
177+
# Logout Page
178+
def logout_page(request):
179+
logout(request)
180+
return redirect('/')
181+
182+
153183
def main_page(request, error_line=None):
154184
"""
155185
Returns the main vol page
@@ -169,7 +199,9 @@ def main_page(request, error_line=None):
169199

170200

171201
if config['auth']['enable'].lower() == 'true' and not request.user.is_authenticated:
172-
return HttpResponse('Auth Required.')
202+
return render(request, 'index.html', {'reqauth': True,
203+
'error_line': error_line
204+
})
173205

174206

175207
# Set Pagination
@@ -208,7 +240,8 @@ def main_page(request, error_line=None):
208240
'session_counts': [session_count, first_session, last_session],
209241
'profile_list': profile_list,
210242
'plugin_dirs': plugin_dirs,
211-
'error_line': error_line
243+
'error_line': error_line,
244+
'reqauth': False
212245
})
213246

214247
def session_page(request, session_id):

0 commit comments

Comments
 (0)