api.py 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. from array import array
  2. from flask import Flask, jsonify, request
  3. from xmpp import cli
  4. from function import MyQueryClass
  5. from flask_jwt_extended import JWTManager, create_access_token, jwt_required, get_jwt_identity
  6. from datetime import datetime, timedelta
  7. from config import Config
  8. #from OpenSSL import SSL
  9. #context = SSL.Context(SSL.PROTOCOL_TLSv1_2)
  10. #context.use_privatekey_file('server.key')
  11. #context.use_certificate_file('server.crt')
  12. ### ssl_context=context in run
  13. myquery = MyQueryClass()
  14. app = Flask(__name__)
  15. app.config.from_object(Config)
  16. jwt1 = JWTManager(app)
  17. @app.route('/auth', methods=['POST'])
  18. def post_auth():
  19. request_data =request.get_json()
  20. loginemail = request_data['login_email']
  21. result = myquery.query_select('''
  22. SELECT * FROM rest_user
  23. WHERE (rest_user.name=%s OR rest_user.email=%s) AND rest_user.password=%s;
  24. ''', (loginemail, loginemail, request_data['password'],), True)
  25. if(result != False):
  26. return gen_token(result['id'], 5), 201
  27. else:
  28. return jsonify({"msg":"Server error!"}), 500
  29. def gen_token(id, minut):
  30. token = {"access_token" : create_access_token(identity=id, expires_delta=timedelta(minutes=minut))}
  31. return jsonify(token)
  32. @app.route('/adduser', methods=['POST'])
  33. def get_add():
  34. request_data = request.get_json()
  35. proverka = myquery.query_proverka('''
  36. SELECT * FROM rest_user
  37. WHERE rest_user.name=%s OR rest_user.email=%s;
  38. ''', (request_data['name'], request_data['email']))
  39. if(proverka):
  40. return jsonify({'msg':"User exist!"})
  41. else:
  42. result = myquery.query_insert('''
  43. INSERT INTO rest_user (name, birthday, lastlogintime, insys, idrole, email, password)
  44. VALUES (%s, %s, %s, %s, %s, %s, %s)
  45. RETURNING id;
  46. ''', \
  47. (request_data['name'], request_data['reg_date'],\
  48. request_data['log_time'], request_data['in_sys'],\
  49. request_data['role_id'], request_data['email'], request_data['password']))
  50. if(result != False):
  51. return jsonify(result), 201
  52. else:
  53. return jsonify({"msg":"Server error!"}), 500
  54. @app.route('/user/<int:id>', methods=['GET'])
  55. def get_user(id):
  56. return jsonify(myquery.query_select('''
  57. SELECT * FROM rest_user WHERE id = %s;
  58. ''', (id,), True)), 200
  59. @app.route('/users', methods=['GET'])
  60. #@jwt_required()
  61. def get_show_user():
  62. result = myquery.query_select('''
  63. SELECT rest_user.id, rest_user.name, rest_user.birthday, rest_user.insys, rest_role.name AS role_name, rest_user.lastlogintime, rest_user.email, rest_user.password
  64. FROM rest_user, rest_role
  65. WHERE rest_user.idrole = rest_role.id
  66. ORDER BY id ASC;
  67. ''', (), False)
  68. if(result != False):
  69. return jsonify(result), 200
  70. else:
  71. return jsonify({"msg":"Server error!"}), 500
  72. @app.route('/deleteuser', methods=['POST'])
  73. def delete_user():
  74. request_data = request.get_json()
  75. result = myquery.query_delete('''
  76. DELETE FROM rest_user
  77. WHERE id = %s;
  78. ''', (request_data['id'],))
  79. if(result):
  80. return jsonify({"msg":"Success delete!"}), 200
  81. else:
  82. return jsonify({"msg":"Server error!"}), 500
  83. @app.route('/updateuser', methods=['POST'])
  84. @jwt_required()
  85. def test_api():
  86. try:
  87. request_data = request.get_json()
  88. result = myquery.query_update(f'''
  89. UPDATE rest_user
  90. SET name = %s
  91. WHERE id = %s;
  92. ''', (request_data['name'], get_jwt_identity()))
  93. if(result):
  94. return jsonify({"msg":"Success update!"}), 200
  95. else:
  96. return jsonify({"msg":"User not found!"}), 400
  97. except:
  98. return jsonify({"msg":"Server error!"}), 500
  99. @app.route('/testmessage', methods=['POST'])
  100. def send_mess():
  101. try:
  102. request_data = request.get_json()
  103. for to in request_data['to']:
  104. cli.send_message(request_data['from'], request_data['password'], to, request_data['message'])
  105. return jsonify({"msg":"Succes send!"}), 200
  106. except:
  107. return jsonify({"msg":"Server error!"}), 500
  108. if __name__ == '__main__':
  109. #from waitress import serve
  110. #serve(app, host='127.0.0.2', port='8080')
  111. app.run(host='127.0.0.2', port='8080', debug=True, load_dotenv=True )