mirror of
				https://github.com/netbox-community/netbox.git
				synced 2024-05-10 07:54:54 +00: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