def app_register (request): login = get_login(request) if request.method == "POST": try: user = User.objects.get(username=login) app_id = request.POST["app-id"].lower() app_name = request.POST["app-name"] app_token = str(uuid.uuid4()) app = App( app_id=app_id, app_name=app_name, user=user, app_token=app_token) app.save() try: hashed_password = hashlib.sha1(app_token).hexdigest() DataHubManager.create_user( username=app_id, password=hashed_password, create_db=False) except Exception, e: app.delete() raise e return HttpResponseRedirect('/developer/apps') except Exception, e: c = { 'login': login, 'errors': [str(e)]} c.update(csrf(request)) return render_to_response('app-create.html', c)
def create_user_db_and_data_folder_if_needed(sender, instance, **kwargs): """ Creates a Postgres role and db and data folder to go with new Django users. Raises an exception if the role, database, or user data folder exists before this user. """ username = instance.username hashed_password = instance.password # The Django user doesn't exist yet, so we can't just try to create a # DataHubManager connection as the user. We need to act as the db # superuser and check for any existing db role or database. db_exists = DataHubManager.database_exists(username) user_exists = DataHubManager.user_exists(username) user_data_folder_exists = DataHubManager.user_data_folder_exists(username) if db_exists and user_exists and user_data_folder_exists: # Make sure new users don't inherit orphaned roles or databases that # are missing a matching Django user. try: User.objects.get(username=username) except User.DoesNotExist: raise IntegrityError("Failed to create user. That name is already" " in use by an orphaned user.") elif not db_exists and not user_exists and not user_data_folder_exists: try: DataHubManager.create_user( username=username, password=hashed_password) except OperationalError: raise else: raise Exception("Failed to create user. That name is already" " in use by either a role, database, or data folder.")
def app_register(request): username = request.user.get_username() if request.method == "POST": try: user = User.objects.get(username=username) app_id = request.POST["app-id"].lower() app_name = request.POST["app-name"] app_token = str(uuid.uuid4()) app = App(app_id=app_id, app_name=app_name, user=user, app_token=app_token) app.save() try: hashed_password = hashlib.sha1(app_token).hexdigest() DataHubManager.create_user(username=app_id, password=hashed_password, create_db=False) except Exception as e: app.delete() raise e return HttpResponseRedirect('/developer/apps') except Exception as e: c = {'login': username, 'errors': [str(e)]} c.update(csrf(request)) return render_to_response('app-create.html', c) else: c = {'login': username} c.update(csrf(request)) return render_to_response('app-create.html', c)
def account_register(username, email, password, repo_name, app_id, app_token): try: user = User.objects.get(username=username) raise Exception("Duplicate username (email=%s)" % (user.email)) except User.DoesNotExist: pass try: user = User.objects.get(email=email) raise Exception("Duplicate email (username=%s)" % (user.username)) except User.DoesNotExist: pass hashed_password = hashlib.sha1(password).hexdigest() user = User(username=username, email=email, password=hashed_password) user.save() try: DataHubManager.create_user(username=username, password=hashed_password) account_grant_permission(username=username, repo_name=repo_name, app_id=app_id, app_token=app_token) except Exception, e: user.delete() raise e
def create_user_db_and_data_folder_if_needed(sender, instance, **kwargs): """ Creates a Postgres role and db and data folder to go with new Django users. Raises an exception if the role, database, or user data folder exists before this user. """ username = instance.username hashed_password = instance.password # The Django user doesn't exist yet, so we can't just try to create a # DataHubManager connection as the user. We need to act as the db # superuser and check for any existing db role or database. db_exists = DataHubManager.database_exists(username) user_exists = DataHubManager.user_exists(username) user_data_folder_exists = DataHubManager.user_data_folder_exists(username) if db_exists and user_exists and user_data_folder_exists: # Make sure new users don't inherit orphaned roles or databases that # are missing a matching Django user. try: User.objects.get(username=username) except User.DoesNotExist: raise IntegrityError("Failed to create user. That name is already" " in use by an orphaned user.") elif not db_exists and not user_exists and not user_data_folder_exists: try: DataHubManager.create_user(username=username, password=hashed_password) except OperationalError: raise else: raise Exception("Failed to create user. That name is already" " in use by either a role, database, or data folder.")
def account_register (username, email, password, repo_name, app_id, app_token): try: user = User.objects.get(username=username) raise Exception("Duplicate username (email=%s)" %(user.email)) except User.DoesNotExist: pass try: user = User.objects.get(email=email) raise Exception("Duplicate email (username=%s)" %(user.username)) except User.DoesNotExist: pass hashed_password = hashlib.sha1(password).hexdigest() user = User(username=username, email=email, password=hashed_password) user.save() try: DataHubManager.create_user(username=username, password=hashed_password) account_grant_permission( username=username, repo_name=repo_name, app_id=app_id, app_token=app_token) except Exception, e: user.delete() raise e
def create_anonymous_user(apps, schema_editor): # Create anonymous user username = settings.ANONYMOUS_ROLE email = settings.ANONYMOUS_ROLE_EMAIL users = User.objects.filter(username=username) dh_user_exists = False if len(users) > 0: dh_user_exists = True db_exists = DataHubManager.database_exists(username) db_role_exists = DataHubManager.user_exists(username) user_data_folder_exists = DataHubManager.user_data_folder_exists(username) # try to create the django user. Get the password from them password = None if not dh_user_exists: password = User.objects.create_user(username=username, email=email, password=None).password # try to create the db role if not db_role_exists: DataHubManager.create_user(username=username, password=password, create_db=False) # delete any db that exists if db_exists: DataHubManager.remove_database(repo_base=username, revoke_collaborators=False) # delete any user data folder that exists if user_data_folder_exists: DataHubManager.delete_user_data_folder(username)
def create_public_user(apps, schema_editor): # Create public user username = settings.PUBLIC_ROLE email = settings.PUBLIC_ROLE_EMAIL users = User.objects.filter(username=username) dh_user_exists = False if len(users) > 0: dh_user_exists = True db_exists = DataHubManager.database_exists(username) db_role_exists = DataHubManager.user_exists(username) user_data_folder_exists = DataHubManager.user_data_folder_exists(username) # try to create the django user. Get the password from them password = None if not dh_user_exists: password = User.objects.create_user(username=username, email=email, password=None).password # try to create the db role if not db_role_exists: DataHubManager.create_user(username=username, password=password, create_db=False) # try to create the db if not db_exists: DataHubManager.create_user_database(username=username) # delete any user data folder that exists if user_data_folder_exists: DataHubManager.delete_user_data_folder(username)
def setUp(self): self.client = Client(enforce_csrf_checks=False) # Need to mock out the authentication system here # So that we aren't actually testing the auth/db systems, too # ARC # create the user self.username = "******" self.password = "******" self.hashed_password = hashlib.sha1(self.password).hexdigest() DataHubManager.create_user(username=self.username, password=self.hashed_password) user = User(username=self.username, email="*****@*****.**", password=self.hashed_password) user.save() # log the user in login_credentials = { 'login_id': self.username, 'login_password': self.password } self.client.post('/account/login', login_credentials)
def reset(request, encrypted_email): errors = [] error = False if request.method == "POST": try: user_email = request.POST["user_email"].lower() password = request.POST["new_password"] password2 = request.POST["new_password2"] if password == "": errors.append("Empty Password.") error = True if password2 != password: errors.append("Password and Confirm Password don't match.") error = True if not error: hashed_password = hashlib.sha1(password).hexdigest() user = User.objects.get(email=user_email) try: DataHubManager.create_user(username=user.username, password=hashed_password) except Exception, e: pass try: DataHubManager.change_password(username=user.username, password=hashed_password) except Exception, e: errors.append(str(e)) error = True if error: c = { 'user_email': user_email, 'encrypted_email': encrypted_email, 'errors': errors } c.update(csrf(request)) return render_to_response('reset.html', c) else: hashed_password = hashlib.sha1(password).hexdigest() user = User.objects.get(email=user_email) user.password = hashed_password user.save() c = { 'msg_title': 'DataHub Reset Password', 'msg_body': 'Your password has been changed successfully.<br /> <br />' '<a href="/account/login" class="blue bold">Click Here</a>' ' to sign in.' } c.update(csrf(request)) return render_to_response('confirmation.html', c)
def reset (request, encrypted_email): errors = [] error = False if request.method == "POST": try: user_email = request.POST["user_email"].lower() password = request.POST["new_password"] password2 = request.POST["new_password2"] if password == "": errors.append("Empty Password.") error = True if password2 != password: errors.append("Password and Confirm Password don't match.") error = True if not error: hashed_password = hashlib.sha1(password).hexdigest() user = User.objects.get(email=user_email) try: DataHubManager.create_user(username=user.username, password=hashed_password) except Exception, e: pass try: DataHubManager.change_password(username=user.username, password=hashed_password) except Exception, e: errors.append(str(e)) error = True if error: c = { 'user_email': user_email, 'encrypted_email': encrypted_email, 'errors': errors } c.update(csrf(request)) return render_to_response('reset.html', c) else: hashed_password = hashlib.sha1(password).hexdigest() user = User.objects.get(email=user_email) user.password = hashed_password user.save() c = { 'msg_title': 'DataHub Reset Password', 'msg_body': 'Your password has been changed successfully.<br /> <br />' '<a href="/login" class="blue bold">Click Here</a>' ' to sign in.' } c.update(csrf(request)) return render_to_response('confirmation.html', c)
def setUp(self): self.client = Client(enforce_csrf_checks=False) # Need to mock out the authentication system here # So that we aren't actually testing the auth/db systems, too # ARC # create the user self.username = "******" self.password = "******" self.hashed_password = hashlib.sha1(self.password).hexdigest() DataHubManager.create_user(username=self.username, password=self.hashed_password) user = User(username=self.username, email="*****@*****.**", password=self.hashed_password) user.save() # log the user in login_credentials = {'login_id': self.username, 'login_password': self.password} self.client.post('/account/login', login_credentials)
def register (request): redirect_url = '/' if('redirect_url' in request.GET.keys()): redirect_url = urllib.unquote_plus(request.GET['redirect_url']) if request.method == "POST": errors = [] email = '' try: error = False if('redirect_url' in request.POST.keys()): redirect_url = urllib.unquote_plus(request.POST['redirect_url']) username = request.POST["username"].lower() email = request.POST["email"].lower() password = request.POST["password"] if(email_re.match(email.strip()) == None): errors.append("Invalid Email.") error = True if(not is_valid_username(username)): errors.append("Invalid Username.") error = True if(password == ""): errors.append("Empty Password.") error = True try: user = User.objects.get(username=username) errors.append("Username already taken.") error = True except User.DoesNotExist: pass if not error: hashed_password = hashlib.sha1(password).hexdigest() try: DataHubManager.create_user(username=username, password=hashed_password) except Exception, e: pass try: DataHubManager.change_password(username=username, password=hashed_password) except Exception, e: errors.append(str(e)) error = True if(error): return register_form(request, redirect_url = urllib.quote_plus(redirect_url), errors = errors) user = User(username=username, email=email, password=hashed_password) user.save() clear_session(request) request.session[kEmail] = user.email request.session[kUsername] = user.username encrypted_email = encrypt_text(user.email) subject = "Welcome to DataHub" msg_body = ''' Dear %s, Thanks for registering to DataHub. Please click the link below to start using DataHub: %s://%s/verify/%s ''' % ( user.email, 'https' if request.is_secure() else 'http', request.get_host(), encrypted_email) pool.apply_async(send_email, [user.email, subject, msg_body]) return HttpResponseRedirect(redirect_url)
def register (request): redirect_url = '/' if('redirect_url' in request.GET.keys()): redirect_url = urllib.unquote_plus(request.GET['redirect_url']) if request.method == "POST": errors = [] email = '' try: error = False if('redirect_url' in request.POST.keys()): redirect_url = urllib.unquote_plus(request.POST['redirect_url']) username = request.POST["username"].lower() email = request.POST["email"].lower() password = request.POST["password"] if(email_re.match(email.strip()) == None): errors.append("Invalid Email.") error = True if(not is_valid_username(username)): errors.append("Invalid Username.") error = True if(password == ""): errors.append("Empty Password.") error = True try: user = User.objects.get(username=username) errors.append("Username already taken.") error = True except User.DoesNotExist: pass if not error: hashed_password = hashlib.sha1(password).hexdigest() try: DataHubManager.create_user(username=username, password=hashed_password) except Exception, e: pass try: DataHubManager.change_password(username=username, password=hashed_password) except Exception, e: errors.append(str(e)) error = True if(error): return register_form(request, redirect_url = urllib.quote_plus(redirect_url), errors = errors) user = User(username=username, email=email, password=hashed_password) user.save() clear_session(request) request.session[kEmail] = user.email request.session[kUsername] = user.username encrypted_email = encrypt_text(user.email) subject = "Welcome to DataHub" msg_body = ''' Dear %s, Thanks for registering to DataHub. Please click the link below to start using DataHub: %s://%s/account/verify/%s ''' % ( user.email, 'https' if request.is_secure() else 'http', request.get_host(), encrypted_email) pool.apply_async(send_email, [user.email, subject, msg_body]) return HttpResponseRedirect(redirect_url)