Commit 3d1de393b88fe8333062f59566212e33a2874fba
1 parent
76f38e9bfc
xxx
Showing 1 changed file with 2 additions and 7 deletions Inline Diff
components/adm/adm/views.py
| 1 | import hashlib | 1 | import hashlib |
| 2 | import uuid | 2 | import uuid |
| 3 | from flask import Blueprint, request, jsonify | 3 | from flask import Blueprint, request, jsonify |
| 4 | from flask import current_app as k2 | 4 | from flask import current_app as k2 |
| 5 | from flask_jwt_extended import jwt_required, get_jwt_identity | 5 | from flask_jwt_extended import jwt_required, get_jwt_identity |
| 6 | # from flask_sqlalchemy import session | 6 | # from flask_sqlalchemy import session |
| 7 | # from sqlalchemy.orm import sessionmaker | 7 | # from sqlalchemy.orm import sessionmaker |
| 8 | # from k2.k2inst import Component | 8 | # from k2.k2inst import Component |
| 9 | 9 | ||
| 10 | from .models import k2users | 10 | from .models import k2users |
| 11 | 11 | ||
| 12 | 12 | ||
| 13 | adm = Blueprint('adm', __name__, template_folder='templates', static_folder='static', static_url_path='/adm') | 13 | adm = Blueprint('adm', __name__, template_folder='templates', static_folder='static', static_url_path='/adm') |
| 14 | 14 | ||
| 15 | 15 | ||
| 16 | @adm.route('/register', methods=["POST"]) | 16 | @adm.route('/register', methods=["POST"]) |
| 17 | def register(): | 17 | def register(): |
| 18 | params = request.json | 18 | params = request.json |
| 19 | session = k2.extensions['sqlalchemy'].db.session | 19 | session = k2.extensions['sqlalchemy'].db.session |
| 20 | try: | 20 | try: |
| 21 | user = k2users(**params) | 21 | user = k2users(**params) |
| 22 | session.add(user) | 22 | session.add(user) |
| 23 | session.commit() | 23 | session.commit() |
| 24 | token = user.get_token() | 24 | token = user.get_token() |
| 25 | return {'access_token': token} | 25 | return {'access_token': token} |
| 26 | except: | 26 | except: |
| 27 | return jsonify({'error': 'Unauthorized'}), 401 | 27 | return jsonify({'error': 'Unauthorized'}), 401 |
| 28 | 28 | ||
| 29 | 29 | ||
| 30 | @adm.route('/login', methods=["POST"]) | 30 | @adm.route('/login', methods=["POST"]) |
| 31 | def login(): | 31 | def login(): |
| 32 | params = request.json | 32 | params = request.json |
| 33 | login = params.get('login') | 33 | login = params.get('login') |
| 34 | password = params.get('password') | 34 | password = params.get('password') |
| 35 | user = k2users.authenticate(login, password) | 35 | user = k2users.authenticate(login, password) |
| 36 | if user: | 36 | if user: |
| 37 | token = user.get_token() | 37 | token = user.get_token() |
| 38 | return {'access_token': token} | 38 | return {'access_token': token} |
| 39 | else: | 39 | else: |
| 40 | return jsonify({'error': 'Unauthorized'}), 401 | 40 | return jsonify({'error': 'Unauthorized'}), 401 |
| 41 | 41 | ||
| 42 | 42 | ||
| 43 | @adm.route('/logout', methods=["GET"]) | 43 | @adm.route('/logout', methods=["GET"]) |
| 44 | @jwt_required() | 44 | @jwt_required() |
| 45 | def logout(): | 45 | def logout(): |
| 46 | response = { | 46 | response = { |
| 47 | 'message': 'Logged out successfully' | 47 | 'message': 'Logged out successfully' |
| 48 | } | 48 | } |
| 49 | return jsonify(response) | 49 | return jsonify(response) |
| 50 | 50 | ||
| 51 | 51 | ||
| 52 | @adm.route('/users', methods=["GET"]) | 52 | @adm.route('/users', methods=["GET"]) |
| 53 | @jwt_required() | 53 | @jwt_required() |
| 54 | def grid_users(): | 54 | def grid_users(): |
| 55 | return jsonify({"data": "users"}) | 55 | return jsonify({"data": "users"}) |
| 56 | 56 | ||
| 57 | 57 | ||
| 58 | @adm.route('/roles', methods=["GET"]) | 58 | @adm.route('/roles', methods=["GET"]) |
| 59 | @jwt_required() | 59 | @jwt_required() |
| 60 | def grid_roles(): | 60 | def grid_roles(): |
| 61 | return jsonify({"data": "roles"}) | 61 | return jsonify({"data": "roles"}) |
| 62 | 62 | ||
| 63 | 63 | ||
| 64 | @adm.route('/usersclients', methods=["GET"]) | 64 | @adm.route('/usersclients', methods=["GET"]) |
| 65 | @jwt_required() | 65 | @jwt_required() |
| 66 | def users_clients(): | 66 | def users_clients(): |
| 67 | return jsonify({"data": "roles"}) | 67 | return jsonify({"data": "roles"}) |
| 68 | 68 | ||
| 69 | @adm.route('/menuaaccess', methods=["GET"]) | 69 | @adm.route('/menuaaccess', methods=["GET"]) |
| 70 | @jwt_required() | 70 | @jwt_required() |
| 71 | def menu_aaccess(): | 71 | def menu_aaccess(): |
| 72 | return jsonify({"data": "roles"}) | 72 | return jsonify({"data": "roles"}) |
| 73 | 73 | ||
| 74 | 74 | ||
| 75 | @adm.route('/newUser', methods=["GET", "POST"]) | 75 | @adm.route('/newUser', methods=["GET", "POST"]) |
| 76 | @jwt_required() | 76 | @jwt_required() |
| 77 | def newUser(): | 77 | def newUser(): |
| 78 | session = k2.extensions['sqlalchemy'].db.session | 78 | session = k2.extensions['sqlalchemy'].db.session |
| 79 | exist = session.query(k2users).filter_by(login=request.json['login']).first() | 79 | exist = session.query(k2users).filter_by(login=request.json['login']).first() |
| 80 | if not exist: | 80 | if not exist: |
| 81 | res = k2users( | 81 | res = k2users( |
| 82 | user_id=hashlib.md5(str(uuid.uuid4()).encode()).hexdigest(), | 82 | user_id=hashlib.md5(str(uuid.uuid4()).encode()).hexdigest(), |
| 83 | login=request.json['login'], | 83 | login=request.json['login'], |
| 84 | name=request.json['name'], | 84 | name=request.json['name'], |
| 85 | email=request.json['email'], | 85 | email=request.json['email'], |
| 86 | password=hashlib.md5(request.json['password'].encode()).hexdigest(), | 86 | password=hashlib.md5(request.json['password'].encode()).hexdigest(), |
| 87 | phone=request.json['phone']) | 87 | phone=request.json['phone']) |
| 88 | if res: | 88 | if res: |
| 89 | session.add(res) | 89 | session.add(res) |
| 90 | session.commit() | 90 | session.commit() |
| 91 | return jsonify({'status': 'ok'}) | 91 | return jsonify({'status': 'ok'}) |
| 92 | else: | 92 | else: |
| 93 | return jsonify({'error': 'Such user exist'}), 404 | 93 | return jsonify({'error': 'Such user exist'}), 404 |
| 94 | 94 | ||
| 95 | 95 | ||
| 96 | @adm.route('/changePassword', methods=["POST"]) | 96 | @adm.route('/changePassword', methods=["POST"]) |
| 97 | @jwt_required() | 97 | @jwt_required() |
| 98 | def changePassword(): | 98 | def changePassword(): |
| 99 | session = k2.extensions['sqlalchemy'].db.session | 99 | session = k2.extensions['sqlalchemy'].db.session |
| 100 | current_user = get_jwt_identity() | 100 | current_user = get_jwt_identity() |
| 101 | user = session.query(k2users).filter_by(user_id=current_user).first() | 101 | user = session.query(k2users).filter_by(user_id=current_user).first() |
| 102 | if user.password == hashlib.md5(request.json['old_password'].encode()).hexdigest(): | 102 | if user.password == hashlib.md5(request.json['old_password'].encode()).hexdigest(): |
| 103 | if request.json['new_password'] == request.json['re_new_password']: | 103 | if request.json['new_password'] == request.json['re_new_password']: |
| 104 | user.password = hashlib.md5(request.json['new_password'].encode()).hexdigest() | 104 | user.password = hashlib.md5(request.json['new_password'].encode()).hexdigest() |
| 105 | session.commit() | 105 | session.commit() |
| 106 | else: | 106 | else: |
| 107 | return jsonify({'error': 'Пароль не найден в базе'}), 404 | 107 | return jsonify({'error': 'Пароль не найден в базе'}), 404 |
| 108 | else: | 108 | else: |
| 109 | return jsonify({'error': 'Пароль не совпвдает'}), 404 | 109 | return jsonify({'error': 'Пароль не совпвдает'}), 404 |
| 110 | return jsonify({'status': 'ok'}) | 110 | return jsonify({'status': 'ok'}) |
| 111 | 111 | ||
| 112 | 112 | ||
| 113 | @adm.route('/menu-items') | 113 | @adm.route('/menu-items') |
| 114 | def menu_items(): | 114 | def menu_items(): |
| 115 | menu = [ | 115 | menu = [ |
| 116 | {"heading": 'APPS & PAGES'}, | 116 | |
| 117 | { | 117 | { |
| 118 | "title": 'Адміністрування сайту', | 118 | "title": 'Адміністрування сайту', |
| 119 | 119 | ||
| 120 | "icon": {"icon": 'mdi mdi-database'}, | 120 | "icon": {"icon": 'mdi mdi-database'}, |
| 121 | "children": [ | 121 | "children": [ |
| 122 | {'title': 'Зміна паролю', 'to': 'adm-changePassword'}, | 122 | {'title': 'Зміна паролю', 'to': 'adm-changePassword'}, |
| 123 | {'title': 'Новий користувач', 'to': 'adm-newUser'}, | 123 | {'title': 'Новий користувач', 'to': 'adm-newUser'}, |
| 124 | {'title': 'Користувачі', 'to': 'adm-users'}, | 124 | {'title': 'Користувачі', 'to': 'adm-users'}, |
| 125 | {'title': 'Користувачі клієнти', 'to': 'adm-usersclients'}, | 125 | {'title': 'Користувачі клієнти', 'to': 'adm-usersclients'}, |
| 126 | {'title': 'Права', 'to': 'adm-roles'}, | 126 | {'title': 'Права', 'to': 'adm-roles'}, |
| 127 | {'title': 'Доступ до меню', 'to': 'adm-menuaaccess'}, | 127 | {'title': 'Доступ до меню', 'to': 'adm-menuaaccess'}, |
| 128 | ], | 128 | ], |
| 129 | }] | 129 | }] |
| 130 | 130 | ||
| 131 | return menu | 131 | return menu |
| 132 | |||
| 133 | |||
| 134 | |||
| 135 | |||
| 136 | |||
| 137 |