123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- from flask import Flask, jsonify, request
- from xmpp import cli
- from flask_jwt_extended import JWTManager, jwt_required, get_jwt_identity, create_access_token
- from datetime import timedelta
- from BackendApi.Models import RoleModel, UserModel
- from BackendApi.SharixQuery import SharixQuery, ReturnData
- from api_config import Config
- app = Flask(__name__)
- #Добавление секртного слова для шифрования JWT
- app.config.from_object(Config)
- #Инициализация класса шифрования
- jwt = JWTManager(app)
- db_query = SharixQuery()
- #Авторизация пользователя
- @app.route('/auth', methods=['POST'])
- def post_auth():
- try:
- result = db_query.auth_query(request.get_json())
- return gen_token(result.data.id, 5), result.code
- except Exception as ex:
- return err_mes(ex)
- #Добавление пользователя и проверка на сходства
- @app.route('/adduser', methods=['POST'])
- def add_user():
- try:
- result = db_query.add_user(request.get_json())
- return jsonify(result.data), result.code
- except Exception as ex:
- return err_mes(ex)
- #Запрос на получение данных об одном пользователе
- @app.route('/user/<int:id>', methods=['GET'])
- def get_user(id):
- try:
- result = db_query.get_user(id)
- if type(result) == UserModel:
- result.password = None
- result.insys = None
- result.id = None
- return jsonify(result.as_dict())
- else:
- return result.data, result.code
- except Exception as ex:
- return err_mes(ex)
- #Запрос на получение данных всех пользователей
- @app.route('/users', methods=['GET'])
- def get_show_user():
- try:
- data = []
- result = db_query.get_all_user()
- if type(result) == list:
- for user in result:
- user.lastlogintime = None
- user.insys = None
- data.append(user.as_dict())
- return jsonify(data), 200
- else:
- return result.data, result.code
- except Exception as ex:
- return err_mes(ex)
- #Удаление пользователя
- @app.route('/deleteuser', methods=['POST'])
- def delete_user():
- try:
- result = db_query.delete_user_query(UserModel.id, request.get_json()["id"])
- return jsonify(result.data), result.code
- except Exception as ex:
- return err_mes(ex)
- #Обновление данных пользователя
- @app.route('/updateuser', methods=['POST'])
- def test_api():
- try:
- result = db_query.update_user(request.get_json())
- return jsonify(result.data), result.code
- except Exception as ex:
- return err_mes(ex)
- #Отправка сообщения через XMPP
- @app.route('/testmessage', methods=['POST'])
- def send_mess():
- try:
- request_data = request.get_json()
- for to in request_data['to']:
- cli.send_message(request_data['from'], request_data['password'], to, request_data['message'])
- return jsonify({"msg":"Succes send!"}), 200
- except Exception as ex:
- return err_mes(ex)
- #Список ролей
- @app.route('/roles', methods=['GET'])
- def get_all_roles():
- try:
- data = []
- result = db_query.get_roles()
- if type(result) == list:
- for role in result:
- data.append(role.as_dict())
- return jsonify(data), 200
- else:
- return result.data, result.code
- except Exception as ex:
- return err_mes(ex)
- #Удалить роль
- @app.route('/deleterole', methods=['POST'])
- def delete_role():
- try:
- result = db_query.delete_role(RoleModel.id, request.get_json()["id"])
- return result.data, result.code
- except Exception as ex:
- return err_mes(ex)
- #Добавить роль
- @app.route('/addrole', methods=['POST'])
- def add_role():
- try:
- result = db_query.add_role(request.get_json())
- return result.data, result.code
- except Exception as ex:
- return err_mes(ex)
- #Генерация токена (id - данные которые шифруются, min - время действия токена)
- #Используются при авторизации или регистрации (возможно выдавать и при других обстоятельствах)
- def gen_token(id, min):
- token = {"access_token" : create_access_token(identity=id, expires_delta=timedelta(minutes=min))}
- return jsonify(token)
- #Ошибка сервера (возвращает ошибку и код ошибки)
- def err_mes(ex):
- return jsonify({"msg":str(ex)}), 500
- #Запуск сервера
- if __name__ == '__main__':
- app.run(host='0.0.0.0', debug=True, load_dotenv=True )
|