Advertisement
Guest User

Untitled

a guest
Feb 10th, 2019
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.59 KB | None | 0 0
  1. import sqlite3 as sql
  2. from flask import Flask
  3. from flask import render_template
  4. from flask import request
  5. from flask import jsonify # for returning json from requests
  6. import bcrypt
  7. from flask import Flask, session
  8. from flask.sessions import SessionInterface
  9. from beaker.middleware import SessionMiddleware
  10.  
  11. session_opts = {
  12. 'session.type': 'memory',
  13. 'session.auto': True,
  14. 'session.secret': "test-secret"
  15. }
  16.  
  17. class BeakerSessionInterface(SessionInterface):
  18. def open_session(self, app, request):
  19. session = request.environ['beaker.session']
  20. return session
  21.  
  22. def save_session(self, app, session, response):
  23. session.save()
  24.  
  25. def insertUser(username,password):
  26. con = sql.connect("database.db")
  27. cur = con.cursor()
  28. cur.execute("INSERT INTO users (username,password) VALUES (?,?)", (username,password))
  29. con.commit()
  30. con.close()
  31.  
  32. def retrieveUsers():
  33. con = sql.connect("database.db")
  34. cur = con.cursor()
  35. cur.execute("SELECT username, password FROM users")
  36. users = cur.fetchall()
  37. con.close()
  38. return users
  39.  
  40. def findUser(username):
  41. con = sql.connect("database.db")
  42. cur = con.cursor()
  43. cur.execute("select username, password from users where username=?", (username,))
  44. user = cur.fetchone()
  45. con.close()
  46. return user
  47. #return {'username': user[0]
  48.  
  49. app = Flask(__name__)
  50.  
  51. @app.route('/login', methods=['POST'])
  52. def login():
  53. if 'username' not in request.form and 'password' not in request.form:
  54. return jsonify({'error':"incomplete-params"})
  55. username = request.form['username']
  56. password = request.form['password']
  57.  
  58. user = findUser(username)
  59. db_pw = user[1].decode('utf-8')
  60. if user is None:
  61. return jsonify({'error':"bad-username"})
  62.  
  63. if bcrypt.hashpw(password.encode('utf-8'), user[1]) == db_pw:
  64. session['loggedin'] = True
  65. return jsonify({'error':""})
  66. else:
  67. return jsonify({'error':(user[0], db_pw == password)})
  68.  
  69. @app.route('/register', methods=['POST'])
  70. def home():
  71. if request.method=='POST':
  72. username = request.form['username']
  73. password = request.form['password']
  74. insertUser(username, bcrypt.hashpw(password.encode('utf-8'), bcrypt.gensalt()))
  75. users = retrieveUsers()
  76. return jsonify(users)
  77. else:
  78. return jsonify({'error':True, 'errmsg': "Register only accepts a POST."})
  79.  
  80. if __name__ == '__main__':
  81. app.wsgi_app = SessionMiddleware(app.wsgi_app, session_opts)
  82. app.session_interface = BeakerSessionInterface()
  83. app.run(debug=False, host='0.0.0.0')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement