def register(request): try: if request.session.get('username', None) != None: return HttpResponseRedirect(reverse('createvm:index')) if request.method == 'GET': return render(request, 'createvm/register.html') if request.method == 'POST': check_code = request.POST.get('check_code', None) code = request.POST.get('code', None) if code.lower() != check_code.lower(): raise ValueError('验证码错误') username = request.POST.get('username', None) password = request.POST.get('password', None) check_password = request.POST.get('check_password', None) email = request.POST.get('email', None) code = request.POST.get('code', None) check_code = request.POST.get('check_code', None) if username == '' or password == '' or check_password == '' or email == '' or code == '': raise ValueError('缺少输入') if password != check_password: raise ValueError('两次密码不一样') configs = get_config() keystone = keystoneClient.Client(auth_url=configs['auth_url'], username=configs['username'], password=configs['password'], tenant_name=configs['tenant_name']) keystone.tenants.create(tenant_name=username, description=username + " Tenant", enabled=True) tenants = keystone.tenants.list() my_tenant = [x for x in tenants if x.name==username][0] my_user = keystone.users.create(name=username, password=password, tenant_id=my_tenant.id, email=email) #用户添加amdin 角色 admin_role = None for r in keystone.roles.list(): if r.name == "admin": admin_role = r keystone.roles.add_user_role(my_user, admin_role, my_tenant) mem = Member() mem.name = username mem.is_active = False mem.save() return HttpResponseRedirect(reverse('createvm:login')) except Exception,e: return HttpResponse(e)
def login(request): try: if request.session.get('username', None) != None: return HttpResponseRedirect(reverse('createvm:index')) if request.method == 'GET': return render(request,'createvm/login.html') #判断验证码 check_code = request.POST.get('check_code', None) code = request.POST.get('code', None) if check_code.lower() != code.lower(): raise ValueError('验证码错误') username = request.POST.get('username', None) password = request.POST.get('password', None) if username == None or password == None: raise ValueError('input lack') tenant_name = username configs = get_config() auth_url = configs['auth_url'] auth = v2.Password(auth_url=auth_url, username=username, password=password, tenant_name=tenant_name) sess = session.Session(auth=auth) nova = client.Client('2', session=sess) nova.servers.list() request.session['username'] = username request.session['password'] = password request.session['tenant_name'] = tenant_name request.session['auth_url'] = auth_url return HttpResponseRedirect(reverse('createvm:index')) except Exception,e: name = request.session.get('username', 'root') logger = getLogger(name) logger.error(e) return HttpResponse(e)