Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit f479624

Browse files
authored
Add files via upload
1 parent 6fd47de commit f479624

File tree

9 files changed

+242
-0
lines changed

9 files changed

+242
-0
lines changed
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
from flask import Flask
2+
3+
app = Flask(__name__)
4+
app.secret_key = "secret key"
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import pymysql
2+
from db_config import mysql
3+
from werkzeug import check_password_hash
4+
5+
def login(email, pwd):
6+
conn = None;
7+
cursor = None;
8+
9+
try:
10+
conn = mysql.connect()
11+
cursor = conn.cursor()
12+
13+
sql = "SELECT email, pwd FROM user WHERE email=%s"
14+
sql_where = (email,)
15+
16+
cursor.execute(sql, sql_where)
17+
row = cursor.fetchone()
18+
19+
if row:
20+
if check_password_hash(row[1], pwd):
21+
return row[0]
22+
return None
23+
24+
except Exception as e:
25+
print(e)
26+
27+
finally:
28+
if cursor and conn:
29+
cursor.close()
30+
conn.close()
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
from app import app
2+
from flaskext.mysql import MySQL
3+
4+
mysql = MySQL()
5+
6+
# MySQL configurations
7+
app.config['MYSQL_DATABASE_USER'] = 'root'
8+
app.config['MYSQL_DATABASE_PASSWORD'] = 'root'
9+
app.config['MYSQL_DATABASE_DB'] = 'fitness'
10+
app.config['MYSQL_DATABASE_HOST'] = 'localhost'
11+
mysql.init_app(app)
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import rest
2+
from app import app
3+
from flask import render_template
4+
5+
@app.route('/')
6+
def home_page():
7+
return render_template('index.html')
8+
9+
@app.route('/login/page')
10+
def login_page():
11+
return render_template('login.html')
12+
13+
if __name__ == "__main__":
14+
app.run()
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
You can read tutorial https://www.roytuts.com/jquery-ajax-based-login-logout-using-python-flask-mysql/
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import dao
2+
from app import app
3+
from flask import jsonify, request, session
4+
5+
@app.route('/login', methods=['POST'])
6+
def login():
7+
_json = request.json
8+
#print(_json)
9+
_username = _json['username']
10+
_password = _json['password']
11+
12+
if _username and _password:
13+
user = dao.login(_username, _password)
14+
15+
if user != None:
16+
session['username'] = user
17+
return jsonify({'message' : 'User logged in successfully'})
18+
19+
resp = jsonify({'message' : 'Bad Request - invalid credendtials'})
20+
resp.status_code = 400
21+
return resp
22+
23+
@app.route('/logout')
24+
def logout():
25+
if 'username' in session:
26+
session.pop('username', None)
27+
return jsonify({'message' : 'You successfully logged out'})
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
$(document).ready(function() {
2+
var isLoggedIn = localStorage.getItem('loggedin');
3+
4+
if(isLoggedIn == 1) {
5+
$('#sign').hide();
6+
$('#loginform').hide();
7+
$('#signupform').hide();
8+
$('#logoff').show();
9+
} else {
10+
$('#sign').show();
11+
$('#logoff').hide();
12+
}
13+
14+
$('#loginSubmit').on('click', function(e) {
15+
e.preventDefault();
16+
17+
var email = $('#email').val();
18+
var pwd = $('#password').val();
19+
20+
var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/i;
21+
22+
if(email != "" && pwd != "" ) {
23+
if(!regex.test(email)) {
24+
$('#msg').html('<span style="color: red;">Invalid email address</span>');
25+
} else {
26+
$.ajax({
27+
method: "POST",
28+
url: '/login',
29+
contentType: 'application/json;charset=UTF-8',
30+
data: JSON.stringify({'username': email, 'password': pwd}),
31+
dataType: "json",
32+
success: function(data) {
33+
localStorage.setItem('loggedin', 1);
34+
35+
$('#sign').hide();
36+
$('#loginform').hide();
37+
$('#logoff').show();
38+
$('#msg').html('<span style="color: green;">You are logged in</span>');
39+
},
40+
statusCode: {
41+
400: function() {
42+
$('#msg').html('<span style="color: red;">Bad request - invalid credentials</span>');
43+
}
44+
},
45+
error: function(err) {
46+
console.log(err);
47+
}
48+
});
49+
}
50+
} else {
51+
$('#msg').html('<span style="color: red;">Invalid username and password</span>');
52+
}
53+
});
54+
55+
$('#logout').on('click', function(e) {
56+
e.preventDefault();
57+
58+
$.ajax({
59+
url: '/logout',
60+
dataType: "json",
61+
success: function(data) {
62+
localStorage.setItem('loggedin', 0);
63+
$('#sign').show();
64+
$('#logoff').hide();
65+
$('#msg').html('<span style="color: green;">You are logged off</span>');
66+
},
67+
error: function(err) {
68+
console.log(err);
69+
}
70+
});
71+
});
72+
});
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
<!DOCTYPE html>
2+
<html>
3+
<head>
4+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
5+
<title>jQuery AJAX Login Logout using Python Flask MySQL</title>
6+
<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
7+
<script type="text/javascript" src="{{ url_for('static', filename='js/auth.js') }}"/>
8+
<script type="text/javascript">
9+
$SCRIPT_ROOT = {{ request.script_root|tojson|safe }};
10+
</script>
11+
</head>
12+
<body>
13+
14+
<div>
15+
<ul style="list-style: none; float: left;">
16+
<li><a href="{{ url_for('.home_page') }}">Home</a></li>
17+
<div id="sign">
18+
<li><a href="#">Sign Up</a></li>
19+
<li><a href="{{ url_for('.login_page') }}">Login</a></li>
20+
</div>
21+
<div id="logoff" style="display: none;">
22+
<li><a href="#" id="logout">Log Off</a></li>
23+
</div>
24+
</ul>
25+
</div>
26+
27+
<div style="width: 500px; margin: auto;">
28+
29+
This is a home page
30+
31+
</div>
32+
33+
</body>
34+
</html>
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
<!DOCTYPE html>
2+
<html>
3+
<head>
4+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
5+
<title>jQuery AJAX Login Logout using Python Flask MySQL</title>
6+
<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
7+
<script type="text/javascript" src="{{ url_for('static', filename='js/auth.js') }}"/>
8+
<script type="text/javascript">
9+
$SCRIPT_ROOT = {{ request.script_root|tojson|safe }};
10+
</script>
11+
</head>
12+
<body>
13+
14+
<div>
15+
<ul style="list-style: none; float: left;">
16+
<li><a href="{{ url_for('.home_page') }}">Home</a></li>
17+
<div id="sign">
18+
<li><a href="#">Sign Up</a></li>
19+
<li><a href="{{ url_for('.login_page') }}">Login</a></li>
20+
</div>
21+
<div id="logoff" style="display: none;">
22+
<li><a href="#" id="logout">Log Off</a></li>
23+
</div>
24+
</ul>
25+
</div>
26+
27+
<div style="width: 500px; margin: auto;">
28+
29+
<div id="msg"></div>
30+
<div style="clear: both;"></div>
31+
<div id="loginform">
32+
<h2>Login</h2>
33+
<dl>
34+
<p>
35+
<input id="email" value="" type="text" placeholder="Email" required>
36+
</p>
37+
<p>
38+
<input id="password" value="" type="password" placeholder="Password" autocomplete="off" required>
39+
</p>
40+
</dl>
41+
<p>
42+
<input type="button" id="loginSubmit" value="Submit">
43+
</p>
44+
</div>
45+
46+
</div>
47+
48+
</body>
49+
</html>

0 commit comments

Comments
 (0)