Commit bc80f59b2685251fe0d6b122c529178dc3697156

Authored by Василь Свідрик
1 parent b3266e1593
Exists in master

add menu for roleid

Showing 10 changed files with 29 additions and 80 deletions Side-by-side Diff

__pycache__/routes.cpython-310.pyc
No preview for this file type
components/k2adm/k2adm/views.py
... ... @@ -71,7 +71,8 @@
71 71 def changePassword():
72 72 session = k2.extensions['sqlalchemy'].db.session
73 73 current_user = get_jwt_identity()
74   - user = session.query(k2users).filter_by(user_id=current_user).first()
  74 +
  75 + user = session.query(k2users).filter_by(user_id=current_user['user_id']).first()
75 76 if user.password == hashlib.md5(request.json['old_password'].encode()).hexdigest():
76 77 if request.json['new_password'] == request.json['re_new_password']:
77 78 user.password = hashlib.md5(request.json['new_password'].encode()).hexdigest()
... ... @@ -100,45 +101,4 @@
100 101 ],
101 102 }]
102 103 return data
103   -
104   -
105   -
106   -
107   -
108   -
109   -# @adm.route('/register', methods=["POST"])
110   -# def register():
111   -# params = request.json
112   -# session = k2.extensions['sqlalchemy'].db.session
113   -# exist = k2users.user_by_login(request.json['login'])
114   -# if not exist:
115   -# user = k2users(**params)
116   -# session.add(user)
117   -# session.commit()
118   -# token, userData, userAbilities = user.get_token()
119   -# return {'accessToken': token, "userData": userData, "userAbilities": userAbilities}
120   -# else:
121   -# return jsonify({'error': 'User exist'}), 401
122   -
123   -
124   -# @adm.route('/login', methods=["POST"])
125   -# def login():
126   -# params = request.json
127   -# user = k2users.authenticate(**params)
128   -# if user:
129   -# token, userData, userAbilities = user.get_token()
130   -# return {'accessToken': token, "userData": userData, "userAbilities": userAbilities}
131   -# else:
132   -# return jsonify({'error': 'Unauthorized'}), 401
133   -
134   -
135   -# @adm.route('/logout', methods=["GET"])
136   -# @jwt_required()
137   -# def logout():
138   -#
139   -# response = {
140   -# 'message': 'Logged out successfully'
141   -# }
142   -
143   - # return jsonify(response)
components/k2adm/setup.py
... ... @@ -2,7 +2,7 @@
2 2  
3 3 setup(
4 4 name='k2adm',
5   - version='1.0.0',
  5 + version='1.0.1',
6 6 description='Description of my project',
7 7 author='k2 cloud',
8 8 author_email='ys@corp2.eu',
components/k2auth/k2auth/models.py
  1 +
1 2 import uuid
2 3 from sqlalchemy import Column, Integer, String
3 4 from sqlalchemy.ext.declarative import declarative_base
4 5  
... ... @@ -30,12 +31,17 @@
30 31  
31 32 def get_token(self, expire_time=24):
32 33 expires_delta = timedelta(expire_time)
33   - token = create_access_token(identity=self.user_id, expires_delta=expires_delta)
  34 + # token = create_access_token(identity=self.user_id, expires_delta=expires_delta)
  35 + token = create_access_token(identity={
  36 + 'user_id': self.user_id,
  37 + 'user_role': self.roleid
  38 + }, expires_delta=expires_delta)
34 39  
35 40 db = k2.extensions['sqlalchemy'].db
36 41 connection = db.engine.connect()
37 42 result = connection.execute(
38 43 db.text(f"SELECT rolename FROM k2roles where roleid = '{self.roleid}'")).fetchone()
  44 +
39 45 rolename = result[0] if result else None
40 46  
41 47 userData = {
42 48  
43 49  
44 50  
... ... @@ -48,14 +54,19 @@
48 54 }
49 55  
50 56 userAbilities = []
  57 + from k2.k2comp import Component
  58 + components = Component.query.filter(Component.installed == 1).all()
  59 + components_names = [component.name for component in components]
51 60  
  61 +
  62 +
52 63 abilities_query = f"""
53 64 SELECT menus.namemenu,
54   - prava.r, prava.w, prava.i, prava.d, prava.c, prava.exp, prava.imp, prava.settable, prava.cutpast,
  65 + prava.r, prava.w, prava.i, prava.d, prava.c, prava.exp, prava.imp, prava.settable, prava.cutpast,
55 66 prava.enable, prava.del
56 67 FROM k2admin_menus menus
57 68 JOIN k2admin_menus_prava prava ON menus.menuid = prava.menuid
58   - WHERE prava.roleid = {self.roleid}
  69 + WHERE prava.roleid = {self.roleid} AND menus.namemenu IN {tuple(components_names)}
59 70 """
60 71 abilities_list = connection.execute(db.text(abilities_query)).fetchall()
61 72  
... ... @@ -72,7 +83,7 @@
72 83 "settable": ability[8],
73 84 "cutpast": ability[9],
74 85 "enable": ability[10],
75   - "del": ability[11],
  86 + "del": ability[11]
76 87 }
77 88  
78 89 abilities_dict_copy = abilities_dict.copy()
... ... @@ -80,34 +91,6 @@
80 91 if value == 0:
81 92 del abilities_dict[key]
82 93 userAbilities.append(abilities_dict)
83   - #________________________________________________________________________________________
84   -
85   - menu_query = f"""
86   - SELECT menus.prevmenu, menus.namemenu, menus.caption, menus.url
87   - FROM k2admin_menus menus
88   - JOIN k2admin_menus_prava prava ON menus.menuid = prava.menuid
89   - WHERE prava.roleid = '{self.roleid}'
90   - """
91   - menus = connection.execute(db.text(menu_query)).fetchall()
92   -
93   - menus_dict = {}
94   - for menu in menus:
95   - menus_dict[menu[0]] = []
96   -
97   - for key in menus_dict:
98   - for el in menus:
99   - if key == el[0]:
100   - menus_dict[key].append(
101   - {
102   - "namemenu": el[1],
103   - "caption": el[2],
104   - "url": el[3]
105   - })
106   -
107   - print(menus_dict)
108   -
109   -
110   - #________________________________________________________________________________________
111 94  
112 95 return (token, userData, userAbilities)
113 96  
components/k2auth/k2auth/views.py
... ... @@ -32,9 +32,12 @@
32 32 session.add(user)
33 33 session.commit()
34 34 token, userData, userAbilities = user.get_token()
  35 + print(userAbilities)
  36 +
35 37 return {'accessToken': token, "userData": userData, "userAbilities": userAbilities}
36 38 except:
37 39 return jsonify({'status': '400', 'message': "Missing required fields"}), 400
  40 +
38 41  
39 42  
40 43 def login(self):
components/k2auth/setup.py
... ... @@ -2,7 +2,7 @@
2 2  
3 3 setup(
4 4 name='k2auth',
5   - version='1.0.0',
  5 + version='1.0.1',
6 6 description='Description of my project',
7 7 author='k2 cloud',
8 8 author_email='ys@corp2.eu',
No preview for this file type
k2/__pycache__/k2rout.cpython-310.pyc
No preview for this file type
... ... @@ -15,7 +15,7 @@
15 15 import sys
16 16 from .k2admmenu import K2admin_menus, K2admin_Menus_Prava
17 17 from sqlalchemy import text
18   -from flask_jwt_extended import get_jwt_identity
  18 +from flask_jwt_extended import get_jwt_identity, jwt_required
19 19  
20 20  
21 21  
... ... @@ -472,7 +472,6 @@
472 472 @components_bp.route('/api/main-menu/')
473 473 def get_admin_menu():
474 474 current_user = get_jwt_identity()
475   - print(current_user)
476 475 role_id = current_user['user_role']
477 476 filter_menu = []
478 477 response = requests.get(f"{k2.domain}api/add-to-menu")
... ... @@ -481,6 +480,7 @@
481 480 for item in response.json():
482 481 filtered_children = []
483 482 for im in item['children']:
  483 +
484 484 if im['to'] in menu_items_list:
485 485 filtered_children.append(im)
486 486 if filtered_children:
... ... @@ -4,8 +4,10 @@
4 4 app.register_blueprint(components_bp)
5 5 from components.k2test.k2test.views import k2test
6 6 app.register_blueprint(k2test, url_prefix='/k2test')
  7 +
7 8 from components.k2auth.k2auth.views import k2auth
8 9 app.register_blueprint(k2auth, url_prefix='/k2auth')
  10 +
9 11 from components.k2adm.k2adm.views import k2adm
10 12 app.register_blueprint(k2adm, url_prefix='/k2adm')