blob: 1f612f0f87b4edbed4984125727df7fcc975d47f [file] [log] [blame]
import hashlib
import os
import sys
from dauthz.core import enforcer
from django.contrib import auth
from django.contrib.auth.models import User
from django.shortcuts import redirect
from django.shortcuts import render
from . import forms
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(BASE_DIR)
def hash_code(s, salt='sad122sad'):
h = hashlib.sha256()
s += salt
h.update(s.encode())
return h.hexdigest()
def index(request):
# now_user_name = request.session.get('user_name', None)
if not request.user.is_authenticated:
return redirect('/login')
user = request.user
# user.
all_users = User.objects.all()
user_name_list = []
for u in all_users:
user_name_list.append(u.username)
return render(request, 'index.html', locals())
def login(request):
if request.session.get("is_login", None):
return redirect('/')
message = None
if request.method == "POST":
login_form = forms.LoginForm(request.POST)
message = "please check your input!"
if login_form.is_valid():
username = login_form.cleaned_data.get('username')
password = login_form.cleaned_data.get('password')
is_user_exist = User.objects.filter(username=username).exists()
if is_user_exist:
user = auth.authenticate(request, username=username, password=password)
if user is not None:
auth.login(request, user)
return redirect('/')
else:
message = "password wrong"
else:
message = "user is not exist"
login_form = forms.LoginForm()
return render(request, 'login.html', locals())
def register(request):
if request.session.get("is_login", None):
return redirect('/')
if request.method == "POST":
register_form = forms.RegisterForm(request.POST)
message = "please check your input!"
if register_form.is_valid():
username = register_form.cleaned_data.get('username')
password1 = register_form.cleaned_data.get('password1')
password2 = register_form.cleaned_data.get('password2')
if password1 != password2:
message = 'password is not same!'
return render(request, 'register.html', locals())
else:
is_user_exist = User.objects.filter(username=username).exists()
if is_user_exist:
message = 'user already exist!'
return render(request, 'register.html', locals())
user = User.objects.create_user(username=username, password=password1)
user.save()
enforcer.add_policy(username, "/user/"+username, "GET")
enforcer.add_role_for_user(username, "normal_user")
return redirect('/login')
else:
return render(request, 'register.html', locals())
register_form = forms.RegisterForm()
return render(request, 'register.html', locals())
def logout(request):
if not request.session.get('is_login', None):
return redirect('/login')
request.session.flush()
return redirect('/login')
def user_profile(request, user_name):
user = User.objects.get(username=user_name)
return render(request, 'user_profile.html', locals())
def all_users_profile(request):
users = User.objects.all()
return render(request, 'all_users_profile.html', locals())