|
@@ -1,19 +1,67 @@
|
|
|
-from django.shortcuts import render
|
|
|
+from django.shortcuts import render, redirect
|
|
|
+from . forms import LoginForm
|
|
|
+from . models import User
|
|
|
+from hashlib import sha256
|
|
|
+from django.core import serializers
|
|
|
+
|
|
|
+
|
|
|
+def logout(request):
|
|
|
+ try:
|
|
|
+ del request.session['user']
|
|
|
+ except Exception as e:
|
|
|
+ print(e)
|
|
|
+
|
|
|
+ return redirect('home')
|
|
|
+
|
|
|
+
|
|
|
+def secure_page(request):
|
|
|
+ try:
|
|
|
+ session_user = serializers.deserialize('json', request.session.get('u'))
|
|
|
+ print(session_user)
|
|
|
+ user = User.objects.filter(pin=session_user.pin).first()
|
|
|
+ if user:
|
|
|
+ return True
|
|
|
+ else:
|
|
|
+ del request.session['u']
|
|
|
+ return redirect('home')
|
|
|
+ except Exception as e:
|
|
|
+ print(e)
|
|
|
+
|
|
|
+ return redirect('home')
|
|
|
|
|
|
|
|
|
def home(request):
|
|
|
+ form = LoginForm
|
|
|
+
|
|
|
+ login_error = False
|
|
|
+ if request.method == "POST":
|
|
|
+ form = LoginForm(request.POST or None)
|
|
|
+ if form.is_valid():
|
|
|
+ data = form.cleaned_data
|
|
|
+ pin = sha256(data['pin'].encode('utf-8')).hexdigest()
|
|
|
+ print(pin)
|
|
|
+ user = User.objects.filter(pin=pin)
|
|
|
+
|
|
|
+ if user is None:
|
|
|
+ form.add_error('pin', 'Invalid login')
|
|
|
+ login_error = True
|
|
|
+ else:
|
|
|
+ request.session['u'] = serializers.serialize('json', user)
|
|
|
+ return redirect('timesheet')
|
|
|
|
|
|
context = {
|
|
|
- 'title': 'Login',
|
|
|
+ 'form': form,
|
|
|
+ 'login_error': login_error
|
|
|
}
|
|
|
|
|
|
return render(request, 'home.html', context=context)
|
|
|
|
|
|
|
|
|
+@secure_page
|
|
|
def timesheet(request):
|
|
|
|
|
|
context = {
|
|
|
- 'title': 'Timesheet',
|
|
|
+
|
|
|
}
|
|
|
|
|
|
return render(request, 'timesheet.html', context=context)
|