diff options
Diffstat (limited to 'src/apps/changepw/views.py')
-rw-r--r-- | src/apps/changepw/views.py | 185 |
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') |