def login(username, password=None): """ Login to email account from which emails have to be retrieved :param username: email address for gmail account to be used :param password: password for gmail account associated with username """ global _username _username = username validate_email(username) if password: connect_email_account(username, password)
def post(self): auth_header = request.headers.get('Authorization') if auth_header is None: response = { 'message': 'No token provided. Please provide a valid token.'} return make_response(jsonify(response)), 401 access_token = auth_header.split(" ")[1] if access_token: #register user email = request.data['email'].strip() new_password = request.data['new_password'].strip() confirm_new_password = request.data['confirm_new_password'].strip() if not email or not new_password or not confirm_new_password: return make_response(jsonify({'message':'All fields are required'})) if validate.validate_email(email) == "False": return make_response(jsonify({'message':'Invalid email format'})) if validate.validate_password(new_password) == "False": return make_response(jsonify({'message': 'Password is short. Enter a password longer than 6 characters'})) if new_password != confirm_new_password: return make_response(jsonify({'message': 'Password mismatch'})) user = RecipeApp.query.filter_by(email=email).first() if user: user.password = Bcrypt().generate_password_hash(new_password).decode() user.save() response = {'message': 'Your password has been reset'} return make_response(jsonify(response)), 201 return make_response(jsonify({'message': 'Email does not exist, try again'})), 401 return make_response(jsonify({'message': 'Invalid token'})), 401
def post(self): # This method will edit the already existing password email = request.data['email'].strip() print(email) user = RecipeApp.query.filter_by(email=email).first() if not email: return make_response(jsonify({'message': 'Please input the email'})), 412 if validate.validate_email(email) == "False": return make_response(jsonify({'message':'Invalid email format'})),401 if not user: return make_response(jsonify({'message': 'User does not exist!'})), 404 try: access_token = jwt.encode({'id': user.user_id, 'expiry_time': str(datetime.datetime.utcnow() + datetime.timedelta(minutes=30))}, os.getenv('SECRET', '$#%^%$^%@@@@@56634@@@')) print(access_token) subject = "Yummy Recipes Reset Password" recipients.append(email) msg = Message(subject, sender="Admin", recipients=recipients) styles = "background-color:blue; color:white; padding: 5px 10px; border-radius:3px; text-decoration: none;" msg.html = f"Click the link to reset password:\n \n<h3><a href='http://localhost:3000/resetpassword?tk={access_token.decode()}' style='{styles}'>Reset Password</a></h3>" print(msg.html) with app.app_context(): mail.send(msg) return make_response(jsonify({'message': 'Password Reset link sent successfully to '+email+''})), 201 except Exception as e: return make_response(jsonify({'message': 'Invalid request sent.'})), 400
def register(): email = str(request.form['email']) username = str(request.form['username']) password = str(request.form['password']) password_verify = str(request.form['password-verify']) errors = False if password != password_verify: flash('passwords don\'t match', 'register') errors = True if User.query.filter_by(username=username).first(): flash('sorry, that username is taken', 'register') errors = True if User.query.filter_by(email=email).first(): flash('there is already an account with that email address', 'register') errors = True if not validate_email(email): flash('not a valid email address') errors = True if not validate_username(username): flash('username must only contain letters, numbers, and underscore') errors = True if not errors: new_user = User(username=username, password=password, email=email) db.session.add(new_user) db.session.commit() flash('your account has been created successfully; please login', 'login') return redirect(url_for('index'))
def test_email_at(self): self.assertTrue(validate_email('*****@*****.**')) self.assertTrue(validate_email('*****@*****.**')) self.assertFalse(validate_email('@emptyname.com')) self.assertFalse(validate_email('bare.string')) self.assertFalse(validate_email('emptydomain@')) self.assertFalse(validate_email('double@[email protected]')) self.assertFalse(validate_email('@')) self.assertFalse(validate_email(''))
def test_user_quoted(self): self.assertTrue(validate_email('user"!!!"@ya.ru')) self.assertTrue(validate_email('user"hi!"and"hi:"@ya.ru')) self.assertTrue(validate_email('user","@ya.ru')) self.assertFalse(validate_email('hel!,:lo"test"@ya.ru')) self.assertFalse(validate_email('[email protected]')) self.assertFalse(validate_email('hell,[email protected]')) self.assertFalse(validate_email('hel:[email protected]')) self.assertFalse(validate_email('even"quotes!"yeap:@ya.ru'))
def test_user_chars(self): self.assertTrue(validate_email('"test.hello"*****@*****.**')) self.assertTrue(validate_email('"hello"@mail.com')) self.assertTrue(validate_email('*****@*****.**')) self.assertTrue(validate_email('*****@*****.**')) self.assertFalse(validate_email('*****@*****.**')) self.assertFalse(validate_email('us#$*[email protected]')) self.assertFalse(validate_email('hello)(&@mail.com')) self.assertFalse(validate_email('e!,:[email protected]'))
def test_domain_letters(self): self.assertTrue(validate_email('*****@*****.**')) self.assertTrue(validate_email('test@super_mail.com')) self.assertTrue(validate_email('test@yan-dex_99.com')) self.assertTrue(validate_email('test@yeah-_-wierd.com')) self.assertFalse(validate_email('*****@*****.**')) self.assertFalse(validate_email('*****@*****.**')) self.assertFalse(validate_email('test@test.*')) self.assertFalse(validate_email('test@t$#%^&()st.*'))
def test_validate_email(self): input_data = ['*****@*****.**', 'test', '@', 'abc.com', 'a.b@com', ''] expected_results = [True, False, False, False, False, False] for data, expected in zip(input_data, expected_results): result = validate.validate_email(data) print(f"validate_email ({data}) == {expected}?") self.assertEqual(expected, result)
def validation_form(request): j = request.body.decode('utf-8') j = re.sub(r"{\s*(\w)", r'{"\1', j) j = re.sub(r",\s*(\w)", r',"\1', j) j = re.sub(r"(\w):", r'\1":', j) body = json.loads(j) email = body["email"] result = validate_email(email) response = "{ valid : '" + str(result) + "' }" return HttpResponse(response)
def test_user_dots(self): self.assertFalse(validate_email('*****@*****.**')) self.assertFalse(validate_email('*****@*****.**')) self.assertFalse(validate_email('*****@*****.**')) self.assertFalse(validate_email('*****@*****.**')) self.assertFalse(validate_email('*****@*****.**')) self.assertTrue(validate_email('*****@*****.**'))
def test_validate(): print 'name T: evan', validate_name('evan') print 'name T: ev-an', validate_name('ev-an') print 'name F: e123', validate_name('e123') print print 'address T: 1500 main st', validate_address('1500 main st') print 'address T: 1500 7th ave', validate_address('1500 7th ave') print 'address F: main st', validate_address('main st') print print 'city T: eugene', validate_city('eugene') print 'city T: new york', validate_city('new york') print 'city F: 111', validate_city('111') print print 'state T: Oregon', validate_state('Oregon') print 'state T: OR', validate_state('OR') print 'state T: New Mexico', validate_state('New Mexico') print 'state F: ore-gon', validate_state('ore-gon') print 'state F: or12', validate_state('or12') print print 'zip T: 00000', validate_zip('00000') print 'zip T: 00000-1111', validate_zip('00000-1111') print 'zip F: 0', validate_zip('0') print 'zip F: 00001111', validate_zip('00001111') print 'zip F: 00000-111', validate_zip('00000-111') print 'zip F: 00000-11111', validate_zip('00000-11111') print print 'email T: [email protected]', validate_email('*****@*****.**') print 'email F: a@b', validate_email('a@b') print 'email F: a@b.', validate_email('a@b.') print 'email F: [email protected]', validate_email('[email protected]') print 'email F: @b.c', validate_email('@b.c') print 'email F: b.c', validate_email('b.c') print 'email F: \@b.c', validate_email('\@b.c') print 'email F: a@\.c', validate_email('a@\.c') print 'email F: a@b.\\', validate_email('a@b.\\') print print 'phone F: 5415554444x6666', validate_phone('5415554444x6666') print 'phone T: 541-555-4444', validate_phone('541-555-4444') print 'phone T: (541) 555-4444', validate_phone('(541) 555-4444') print 'phone F: 541555444', validate_phone('541555444')
def post(self): user = RecipeApp.query.filter_by(email=request.data['email']).first() if user: return make_response(jsonify({'message': 'User already exists. Please login or use another email.'})), 409 try: # Register the user email = request.data['email'] username = request.data['username'] password = request.data['password'] confirm_password = request.data['confirm_password'] if not email or not password or not confirm_password: return make_response(jsonify({'message': 'All fields are required'})), 400 if validate.validate_email(email) != "True": return make_response(jsonify({'message': 'Invalid email! A valid email should in this format [email protected]' })), 401 if validate.validate_password(password) != "True": return make_response(jsonify({'message': 'Password is short. Enter a password longer than 6 characters'})), 400 if password != confirm_password: return make_response(jsonify({'message': 'Passwords do not match'})), 400 else: user = RecipeApp(email=email, password=password, username=username) user.save() return make_response(jsonify({'message': 'You registered successfully.', 'username':username})), 201 except Exception as e: return make_response(jsonify({'message': str(e)})), 400
#loop for user input till he enter valid while True: f_name = input("please enter your first name: ").strip() if validate.validate_f_name(f_name) == True: break else: print(validate.validate_f_name(f_name)) while True: l_name = input("please enter your last name: ").strip() if validate.validate_l_name(l_name) == True: break else: print(validate.validate_l_name(l_name)) while True: email = input("please enter your email: ").strip() if validate.validate_email(email) == True: break else: print("Invalid email address or email used before") while True: password = input("please enter your password: "******"please enter your confirmation password: ").strip() if validate.validate_conf_pass(conf_pass, password) == True: break
def test_user_quotes(self): self.assertTrue(validate_email('hello"there"@email.net')) self.assertTrue(validate_email('"quotes"@email.net')) self.assertTrue(validate_email('""""@nice.user')) self.assertFalse(validate_email('three"quo"tes"@m.net'))
def test_domain_length(self): self.assertFalse(validate_email('[email protected]_in_task')) self.assertFalse(validate_email('[email protected]')) self.assertTrue(validate_email('test@' + 's'*253 + '.ru')) self.assertFalse(validate_email('test@' + 's'*254 + '.ru'))
def test_username_length(self): self.assertTrue(validate_email('c' * 128 + '@mail.com')) self.assertFalse(validate_email('c' * 129 + '@mail.com'))
def test_domain_pattern(self): self.assertFalse(validate_email('[email protected]')) self.assertFalse(validate_email('[email protected]')) self.assertFalse(validate_email('*****@*****.**')) self.assertFalse(validate_email('*****@*****.**')) self.assertTrue(validate_email('*****@*****.**'))
def test_domain_length(self): self.assertFalse(validate_email('[email protected]_in_task')) self.assertFalse(validate_email('[email protected]')) self.assertTrue(validate_email('test@' + 's' * 253 + '.ru')) self.assertFalse(validate_email('test@' + 's' * 254 + '.ru'))
def test_username_length(self): self.assertTrue(validate_email('c'*128 + '@mail.com')) self.assertFalse(validate_email('c'*129 + '@mail.com'))
# a module is basically a file containing a set of functions to include in your application. # there are core python modules, modules you can install using the pip package manager (including django) as well as custom modules #core modules import datetime #to import date from datetime from datetime import date #today = datetime.date.today() today = date.today() print(today) import time from time import time timestamp = time() print(timestamp) #import custom module import validate from validate import validate_email email = '*****@*****.**' if validate_email(email): print('email is valid') else: print('email is bad')