mirror of
https://github.com/netbox-community/netbox.git
synced 2025-12-25 14:47:46 -06:00
Initial push to public repo
This commit is contained in:
0
netbox/users/__init__.py
Normal file
0
netbox/users/__init__.py
Normal file
3
netbox/users/admin.py
Normal file
3
netbox/users/admin.py
Normal file
@@ -0,0 +1,3 @@
|
||||
from django.contrib import admin
|
||||
|
||||
# Register your models here.
|
||||
16
netbox/users/forms.py
Normal file
16
netbox/users/forms.py
Normal file
@@ -0,0 +1,16 @@
|
||||
from django.contrib.auth.forms import AuthenticationForm, PasswordChangeForm as DjangoPasswordChangeForm
|
||||
|
||||
from utilities.forms import BootstrapMixin
|
||||
|
||||
|
||||
class LoginForm(AuthenticationForm, BootstrapMixin):
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(LoginForm, self).__init__(*args, **kwargs)
|
||||
|
||||
self.fields['username'].widget.attrs['placeholder'] = ''
|
||||
self.fields['password'].widget.attrs['placeholder'] = ''
|
||||
|
||||
|
||||
class PasswordChangeForm(DjangoPasswordChangeForm, BootstrapMixin):
|
||||
pass
|
||||
14
netbox/users/migrations/0001_initial.py
Normal file
14
netbox/users/migrations/0001_initial.py
Normal file
@@ -0,0 +1,14 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.9.1 on 2016-02-29 18:49
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
]
|
||||
|
||||
operations = [
|
||||
]
|
||||
0
netbox/users/migrations/__init__.py
Normal file
0
netbox/users/migrations/__init__.py
Normal file
3
netbox/users/models.py
Normal file
3
netbox/users/models.py
Normal file
@@ -0,0 +1,3 @@
|
||||
from django.db import models
|
||||
|
||||
# Create your models here.
|
||||
3
netbox/users/tests.py
Normal file
3
netbox/users/tests.py
Normal file
@@ -0,0 +1,3 @@
|
||||
from django.test import TestCase
|
||||
|
||||
# Create your tests here.
|
||||
10
netbox/users/urls.py
Normal file
10
netbox/users/urls.py
Normal file
@@ -0,0 +1,10 @@
|
||||
from django.conf.urls import url
|
||||
|
||||
from . import views
|
||||
|
||||
urlpatterns = [
|
||||
url(r'^profile/$', views.profile, name='profile'),
|
||||
url(r'^profile/password/$', views.change_password, name='change_password'),
|
||||
url(r'^profile/user-key/$', views.userkey, name='userkey'),
|
||||
url(r'^profile/user-key/edit/$', views.userkey_edit, name='userkey_edit'),
|
||||
]
|
||||
117
netbox/users/views.py
Normal file
117
netbox/users/views.py
Normal file
@@ -0,0 +1,117 @@
|
||||
from django.conf import settings
|
||||
from django.contrib import messages
|
||||
from django.contrib.auth import login as auth_login, logout as auth_logout, update_session_auth_hash
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.http import HttpResponseRedirect
|
||||
from django.shortcuts import redirect, render, resolve_url
|
||||
from django.utils.http import is_safe_url
|
||||
|
||||
from secrets.forms import UserKeyForm
|
||||
from secrets.models import UserKey
|
||||
from .forms import LoginForm, PasswordChangeForm
|
||||
|
||||
|
||||
#
|
||||
# Login/logout
|
||||
#
|
||||
|
||||
def login(request):
|
||||
|
||||
if request.method == 'POST':
|
||||
form = LoginForm(request, data=request.POST)
|
||||
if form.is_valid():
|
||||
|
||||
# Determine where to direct user after successful login
|
||||
redirect_to = request.POST.get('next', '')
|
||||
if not is_safe_url(url=redirect_to, host=request.get_host()):
|
||||
redirect_to = resolve_url(settings.LOGIN_REDIRECT_URL)
|
||||
|
||||
# Authenticate user
|
||||
auth_login(request, form.get_user())
|
||||
messages.info(request, "Logged in as {0}.".format(request.user))
|
||||
|
||||
return HttpResponseRedirect(redirect_to)
|
||||
|
||||
else:
|
||||
form = LoginForm()
|
||||
|
||||
return render(request, 'login.html', {
|
||||
'form': form,
|
||||
})
|
||||
|
||||
|
||||
def logout(request):
|
||||
|
||||
auth_logout(request)
|
||||
messages.info(request, "You have logged out.")
|
||||
return HttpResponseRedirect(reverse('home'))
|
||||
|
||||
|
||||
#
|
||||
# User profiles
|
||||
#
|
||||
|
||||
@login_required()
|
||||
def profile(request):
|
||||
|
||||
return render(request, 'users/profile.html', {
|
||||
})
|
||||
|
||||
|
||||
@login_required()
|
||||
def change_password(request):
|
||||
|
||||
if request.method == 'POST':
|
||||
form = PasswordChangeForm(user=request.user, data=request.POST)
|
||||
if form.is_valid():
|
||||
form.save()
|
||||
update_session_auth_hash(request, form.user)
|
||||
messages.success(request, "Your password has been changed successfully.")
|
||||
return redirect('users:profile')
|
||||
|
||||
else:
|
||||
form = PasswordChangeForm(user=request.user)
|
||||
|
||||
return render(request, 'users/change_password.html', {
|
||||
'form': form,
|
||||
})
|
||||
|
||||
|
||||
@login_required()
|
||||
def userkey(request):
|
||||
|
||||
try:
|
||||
userkey = UserKey.objects.get(user=request.user)
|
||||
except UserKey.DoesNotExist:
|
||||
userkey = None
|
||||
|
||||
return render(request, 'users/userkey.html', {
|
||||
'userkey': userkey,
|
||||
})
|
||||
|
||||
|
||||
@login_required()
|
||||
def userkey_edit(request):
|
||||
|
||||
try:
|
||||
userkey = UserKey.objects.get(user=request.user)
|
||||
except UserKey.DoesNotExist:
|
||||
userkey = UserKey(user=request.user)
|
||||
|
||||
if request.method == 'POST':
|
||||
form = UserKeyForm(data=request.POST, instance=userkey)
|
||||
if form.is_valid():
|
||||
uk = form.save(commit=False)
|
||||
uk.user = request.user
|
||||
uk.save()
|
||||
messages.success(request, "Your user key has been saved.")
|
||||
return redirect('users:userkey')
|
||||
|
||||
else:
|
||||
form = UserKeyForm(instance=userkey)
|
||||
|
||||
return render(request, 'users/userkey_edit.html', {
|
||||
'userkey': userkey,
|
||||
'form': form,
|
||||
})
|
||||
Reference in New Issue
Block a user