X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=portal%2Faccountview.py;h=a95a7a4547e37d9dd884bda31bfb18f1f910ce1d;hb=2aecc2abb7b3ff0eadd42b69e82f05fcfd5672ba;hp=1b66830774cdef2b4e13639defeb5276a764cf48;hpb=2f0ca597d050216c92df1ba6bf472d2c937fe7ef;p=myslice.git diff --git a/portal/accountview.py b/portal/accountview.py index 1b668307..a95a7a45 100644 --- a/portal/accountview.py +++ b/portal/accountview.py @@ -1,13 +1,18 @@ from portal.templateviews import LoginRequiredAutoLogoutView # from manifold.core.query import Query +from manifold.manifoldapi import execute_query +from portal.actions import manifold_update_user # from myslice.viewutils import topmenu_items, the_user # +from django.http import HttpResponse +from django.contrib.auth.decorators import login_required +import json # requires login class AccountView(LoginRequiredAutoLogoutView): - template_name = "my_account.html" + template_name = "account-view.html" def dispatch(self, *args, **kwargs): return super(AccountView, self).dispatch(*args, **kwargs) @@ -80,3 +85,77 @@ class AccountView(LoginRequiredAutoLogoutView): #context.update(page.prelude_env()) return context + +@login_required +#my_acc form value processing +def account_process(request): + user_query = Query().get('local:user').select('password','config') + user_details = execute_query(request, user_query) + + if 'submit_name' in request.POST: + edited_first_name = request.POST['fname'] + edited_last_name = request.POST['lname'] + + config={} + for user_config in user_details: + #email = user_detail['email'] + if user_config['config']: + config = json.loads(user_config['config']) + config['firstname'] = edited_first_name + config['lastname'] = edited_last_name + config['authority'] = config.get('authority','Unknown Authority') + updated_config = json.dumps(config) + + # updating config local:user in manifold + user_params = { 'config': updated_config} + manifold_update_user(request,user_params) + # this will be depricated, we will show the success msg in same page + return HttpResponse('Sucess: First Name and Last Name Updated!') + elif 'submit_pass' in request.POST: + edited_password = request.POST['password'] + + for user_pass in user_details: + user_pass['password'] = edited_password + #updating password in local:user + user_params = { 'password': user_pass['password']} + manifold_update_user(request,user_params) + + return HttpResponse('Success: Password Changed!!') + elif 'generate' in request.POST: + # Generate public and private keys using SFA Library + from sfa.trust.certificate import Keypair + k = Keypair(create=True) + public_key = k.get_pubkey_string() + private_key = k.as_pem() + private_key = ''.join(private_key.split()) + public_key = "ssh-rsa " + public_key + # Saving to DB + keypair = '{"user_public_key":"'+ public_key + '", "user_private_key":"'+ private_key + '"}' +# keypair = re.sub("\r", "", keypair) +# keypair = re.sub("\n", "\\n", keypair) +# #keypair = keypair.rstrip('\r\n') +# keypair = ''.join(keypair.split()) + get_user.keypair = keypair + get_user.save() + return HttpResponse('Success: New Keypair Generated! %s' % keypair) + + elif 'upload_key' in request.POST: + up_file = request.FILES['pubkey'] + file_content = up_file.read() + file_name = up_file.name + file_extension = os.path.splitext(file_name)[1] + allowed_extension = ['.pub','.txt'] + if file_extension in allowed_extension and re.search(r'ssh-rsa',file_content): + file_content = '{"user_public_key":"'+ file_content +'"}' + file_content = re.sub("\r", "", file_content) + file_content = re.sub("\n", "\\n",file_content) + file_content = ''.join(file_content.split()) + get_user.keypair = file_content + get_user.save() + return HttpResponse('Success: Publickey uploaded! Old records overwritten') + else: + return HttpResponse('Please upload a valid RSA public key [.txt or .pub].') + + else: + message = 'You submitted an empty form.' + return HttpResponse(message)