summaryrefslogtreecommitdiff
path: root/src/apps/changepw/views.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/apps/changepw/views.py')
-rw-r--r--src/apps/changepw/views.py185
1 files changed, 0 insertions, 185 deletions
diff --git a/src/apps/changepw/views.py b/src/apps/changepw/views.py
deleted file mode 100644
index dac4f10..0000000
--- a/src/apps/changepw/views.py
+++ /dev/null
@@ -1,185 +0,0 @@
-from django.contrib.auth.decorators import login_required
-from apps.changepw.models import ChangePasswordForm
-from apps.fedlogin.views import fedlogin
-from django.http import HttpResponse
-from django.shortcuts import render
-import random
-import nordunet_change_password as pw
-
-
-def _change_password(pwtype, user, new_password):
- '''
- Use this to call your change password function.
- '''
- if pwtype == 'sso':
- ret = pw.change_nordunet_sso_pw(user, new_password)
- elif pwtype == 'ppp':
- ret = pw.change_nordunet_ppp_pw(user, new_password)
- elif pwtype == 'net':
- ret = pw.change_nordunet_net_pw(user, new_password)
- elif pwtype == 'vpn':
- ret = pw.change_nordunet_vpn_pw(user, new_password)
- else:
- ret = 'Could not change that password type.'
- return ret
-
-
-def _change_other(request, *args):
- '''
- Use this to call your change function.
- '''
- user = request.user
- ssh_key = request.POST.get('ssh_key', None)
- if ssh_key:
- ret = pw.set_public_ssh_key(user, ssh_key)
- else:
- return 1
- return ret
-
-
-def _get_username(request):
- '''
- Returns the actual username from the Shibboleth uid.
- request.user.username == username@domain.com
- '''
- return request.user.username.split('@')[0]
-
-
-def _generate_password(n, z=3):
- '''
- Returns a psudo random string of lenght n in accordance to the NORDUnet
- security standard. z is the number of non-letters to include.
- '''
- letters = 'abcdefghijklmnopqrstuvwxyz'
- others = '1234567890!#%&?+*-_.<>'
- pw = []
- for i in range(0, n//2):
- pw.append(random.choice(letters))
- pw.append(random.choice(letters.upper()))
- random.shuffle(pw)
- pw = pw[:n]
- for i in random.sample(range(0, n-1), z):
- pw[i] = random.choice(others)
- return ''.join(pw)
-
-
-@login_required()
-def index(request):
- '''
- Greets the user and presents the choices available.
- '''
- fedlogin(request) # XXX Hack to force db update
- username = _get_username(request)
- try:
- full_name = u'{} {}'.format(request.user.first_name, request.user.last_name)
- except AttributeError:
- full_name = username
- return render(request,
- 'changepw/index.html',
- {'full_name': full_name, 'username': username})
-
-
-@login_required()
-def change_password(request, pwtype):
- '''
- If the user is authenticated and the form is valid the password
- changing script will be run with the username and new password.
- The function that changes the password has to be provided as func.
- '''
- username = _get_username(request)
- form = ChangePasswordForm(request.POST or None)
- return_value = -1
- if request.method == 'POST':
- if form.is_valid():
- new_password = form.cleaned_data['new_password']
- return_value = _change_password(pwtype, request.user, new_password)
- form = None
- return render(request,
- 'changepw/change_password.html',
- {'form': form,
- 'username': username,
- 'pwtype': pwtype,
- 'return_value': return_value})
-
-
-@login_required()
-def change_other(request, *args):
- '''
- Just passes along the request so that something can be done for that user.
- '''
- username = _get_username(request)
- return_value = None
- if request.method == 'POST':
- return_value = _change_other(request, *args)
- return render(request,
- 'changepw/change_other.html',
- {'username': username, 'return_value': return_value})
-
-
-@login_required()
-def change_public_ssh_keys(request):
- """
- Lets the user remove or add public SSH keys.
- """
- if request.POST:
- ssh_key = request.POST.get('ssh_key', None)
- if ssh_key:
- ret = pw.set_public_ssh_key(request.user, ssh_key)
- else:
- ret = 'No SSH key to add.'
- ssh_keys = pw.get_public_ssh_keys(request.user)
- return render(request,
- 'changepw/change_public_ssh_key.html',
- {'username': request.user.username,
- 'ssh_keys': ssh_keys,
- 'return_value': ret})
- else:
- ssh_keys = pw.get_public_ssh_keys(request.user)
- return render(request,
- 'changepw/change_public_ssh_key.html',
- {'username': request.user.username,
- 'ssh_keys': ssh_keys,
- 'return_value': None})
-
-
-@login_required()
-def delete_public_ssh_key(request, key_number):
- """
- Delete a public SSH key.
- """
- ssh_keys = pw.get_public_ssh_keys(request.user)
- ret = pw.del_public_ssh_key(request.user, ssh_keys[int(key_number)])
- ssh_keys = pw.get_public_ssh_keys(request.user)
- return render(request,
- 'changepw/change_public_ssh_key.html',
- {
- 'username': request.user.username,
- 'ssh_keys': ssh_keys,
- 'return_value': ret})
-
-def _create_ieduroam_conf(user):
- """
- Creates an xml config (http://www.apple.com/DTDs/PropertyList-1.0.dtd) for
- iPhone, iPod Touch or Ipad that can be set by surfing to the URL.
-
- Should ultimately returned with
- HttpResponse(conf, mimetype='application/x-apple-aspen-config')
- """
- try:
- f = open('/var/lib/django/sso/apps/changepw/eduroam.mobileconfig')
- except IOError:
- return 'Could not open boilerplate configuration.'
- uid = user.username.split('@')[0]
- s = ''.join(f.readlines())
- s = s.replace('nordu-user', '%s-pwman' % uid)
- conf = s.replace('eduroam-user', '%s/ppp' % uid)
- return conf
-
-
-def ideviceconf(request):
- """
- HACK
- """
- user = request.user
- conf = _create_ieduroam_conf(user)
- return HttpResponse(conf, content_type='application/x-apple-aspen-config')