Commit 3d1de393b88fe8333062f59566212e33a2874fba

Authored by Василь Свідрик
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