refactor(api-logging):暂时删除权限校验与日志记录
This commit is contained in:
@@ -3,14 +3,12 @@ from flask_restful import Resource
|
||||
from flask_restful import marshal, reqparse
|
||||
|
||||
from applications.common.utils.http import success_api, fail_api
|
||||
from applications.common.utils.rights import authorize
|
||||
from applications.extensions import db
|
||||
from applications.models import CompanyDepartment, CompanyUser
|
||||
|
||||
|
||||
class DepartmentsResource(Resource):
|
||||
|
||||
@authorize("admin:dept:main", log=True)
|
||||
def get(self):
|
||||
dept_data = CompanyDepartment.query.order_by(CompanyDepartment.sort).all()
|
||||
# TODO dtree 需要返回状态信息
|
||||
@@ -21,7 +19,6 @@ class DepartmentsResource(Resource):
|
||||
print(dept_data)
|
||||
return jsonify(res)
|
||||
|
||||
@authorize("admin:dept:add", log=True)
|
||||
def post(self):
|
||||
parser = reqparse.RequestParser()
|
||||
parser.add_argument('address', type=str)
|
||||
@@ -52,7 +49,6 @@ class DepartmentsResource(Resource):
|
||||
|
||||
|
||||
class DepartmentResource(Resource):
|
||||
@authorize("admin:dept:edit", log=True)
|
||||
def get(self, dept_id):
|
||||
dept = CompanyDepartment.query.filter_by(id=dept_id).first()
|
||||
dept_data = {
|
||||
@@ -65,10 +61,8 @@ class DepartmentResource(Resource):
|
||||
'sort': dept.sort,
|
||||
'address': dept.address,
|
||||
}
|
||||
# return make_response(render_template('department/edit.html', dept=dept))
|
||||
return dict(success=True, message='ok', dept=dept_data)
|
||||
|
||||
@authorize("admin:dept:edit", log=True)
|
||||
def put(self, dept_id):
|
||||
parser = reqparse.RequestParser()
|
||||
parser.add_argument('address', type=str)
|
||||
@@ -95,7 +89,6 @@ class DepartmentResource(Resource):
|
||||
db.session.commit()
|
||||
return success_api(message="更新成功")
|
||||
|
||||
@authorize("admin:dept:remove", log=True)
|
||||
def delete(self, dept_id):
|
||||
ret = CompanyDepartment.query.filter_by(id=dept_id).delete()
|
||||
CompanyUser.query.filter_by(dept_id=dept_id).update({"dept_id": None})
|
||||
@@ -106,7 +99,6 @@ class DepartmentResource(Resource):
|
||||
|
||||
|
||||
class DeptEnableResource(Resource):
|
||||
@authorize("admin:dept:edit", log=True)
|
||||
def put(self, dept_id):
|
||||
d = CompanyDepartment.query.get(dept_id)
|
||||
if d:
|
||||
|
||||
@@ -2,11 +2,10 @@ import copy
|
||||
from collections import OrderedDict
|
||||
|
||||
from flask import request, jsonify, current_app
|
||||
from flask_login import current_user, login_required
|
||||
from flask_login import current_user
|
||||
from flask_restful import Resource, reqparse, marshal
|
||||
|
||||
from applications.common.utils.http import success_api, fail_api
|
||||
from applications.common.utils.rights import authorize
|
||||
from applications.extensions import db
|
||||
from applications.models import RightsPower, RightsRole
|
||||
|
||||
@@ -153,7 +152,6 @@ parser_power.add_argument('sort', type=int, dest='sort')
|
||||
|
||||
|
||||
class RightRightsResource(Resource):
|
||||
@authorize("admin:power:main", log=True)
|
||||
def get(self):
|
||||
"""获取选择父节点"""
|
||||
|
||||
@@ -167,7 +165,6 @@ class RightRightsResource(Resource):
|
||||
}
|
||||
return res
|
||||
|
||||
@authorize("admin:power:remove", log=True)
|
||||
def delete(self):
|
||||
ids = request.form.getlist('ids[]')
|
||||
batch_remove_power(ids)
|
||||
@@ -176,7 +173,6 @@ class RightRightsResource(Resource):
|
||||
|
||||
class RightPowerResource(Resource):
|
||||
|
||||
@authorize("admin:power:add", log=True)
|
||||
def post(self, power_id):
|
||||
res = parser_power.parse_args()
|
||||
power = RightsPower(
|
||||
@@ -199,7 +195,6 @@ class RightPowerResource(Resource):
|
||||
|
||||
return success_api(message="成功")
|
||||
|
||||
@authorize("admin:power:remove", log=True)
|
||||
def delete(self, power_id):
|
||||
# 删除权限(目前没有判断父节点自动删除子节点)
|
||||
power = RightsPower.query.filter_by(id=power_id).first()
|
||||
@@ -218,7 +213,6 @@ class RightPowerResource(Resource):
|
||||
else:
|
||||
return fail_api(message="删除失败")
|
||||
|
||||
@authorize("admin:power:edit", log=True)
|
||||
def put(self, power_id):
|
||||
|
||||
res = parser_power.parse_args()
|
||||
@@ -241,7 +235,6 @@ class RightPowerResource(Resource):
|
||||
|
||||
|
||||
class RightPowerEnableResource(Resource):
|
||||
@authorize("admin:power:edit", log=True)
|
||||
def put(self, right_id):
|
||||
|
||||
power = RightsPower.query.get(right_id)
|
||||
@@ -255,13 +248,11 @@ class RightPowerEnableResource(Resource):
|
||||
|
||||
|
||||
class AdminConfigsResource(Resource):
|
||||
@login_required
|
||||
def get(self):
|
||||
return get_render_config()
|
||||
|
||||
|
||||
class AdminMenuResource(Resource):
|
||||
@login_required
|
||||
def get(self):
|
||||
menu_tree = make_menu_tree()
|
||||
return jsonify(menu_tree)
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
from flask_login import login_required
|
||||
from flask_restful import Resource, reqparse, marshal
|
||||
|
||||
from applications.common.utils.http import table_api, success_api, fail_api
|
||||
from applications.common.utils.rights import authorize
|
||||
from applications.extensions import db
|
||||
from applications.models import RightsPower, RightsRole, CompanyUser
|
||||
|
||||
@@ -37,7 +35,6 @@ def batch_remove_role(role_ids):
|
||||
|
||||
class RoleRolesResource(Resource):
|
||||
# 表格数据
|
||||
@authorize("admin:role:main", log=True)
|
||||
def get(self):
|
||||
parser = reqparse.RequestParser(bundle_errors=True)
|
||||
parser.add_argument('page', type=int, default=1)
|
||||
@@ -66,8 +63,6 @@ class RoleRolesResource(Resource):
|
||||
'total': paginate.total}
|
||||
, code=0)
|
||||
|
||||
@authorize("admin:role:remove", log=True)
|
||||
@login_required
|
||||
def delete(self):
|
||||
parser = reqparse.RequestParser()
|
||||
parser.add_argument('ids[]', action='append', dest='ids')
|
||||
@@ -80,7 +75,6 @@ class RoleRolesResource(Resource):
|
||||
|
||||
class RoleRoleResource(Resource):
|
||||
|
||||
@authorize("admin:role:add", log=True)
|
||||
def post(self, role_id):
|
||||
parser = reqparse.RequestParser()
|
||||
parser.add_argument('details', type=str)
|
||||
@@ -103,7 +97,6 @@ class RoleRoleResource(Resource):
|
||||
return success_api(message="成功")
|
||||
|
||||
# 更新角色
|
||||
@authorize("admin:role:edit", log=True)
|
||||
def put(self, role_id):
|
||||
parser = reqparse.RequestParser()
|
||||
parser.add_argument('roleId', dest='role_id', type=int)
|
||||
@@ -133,7 +126,6 @@ class RoleRoleResource(Resource):
|
||||
class RoleEnableResource(Resource):
|
||||
"""启用用户"""
|
||||
|
||||
@authorize("admin:role:edit", log=True)
|
||||
def put(self, role_id):
|
||||
ret = RightsRole.query.get(role_id)
|
||||
ret.enable = not ret.enable
|
||||
@@ -147,7 +139,6 @@ class RoleEnableResource(Resource):
|
||||
|
||||
class RolePowerResource(Resource):
|
||||
|
||||
@authorize("admin:role:main", log=True)
|
||||
def get(self, role_id):
|
||||
# 获取角色权限
|
||||
role = RightsRole.query.filter_by(id=role_id).first()
|
||||
@@ -166,7 +157,6 @@ class RolePowerResource(Resource):
|
||||
}
|
||||
|
||||
# 保存角色权限
|
||||
@authorize("admin:role:edit", log=True)
|
||||
def put(self, role_id):
|
||||
parser = reqparse.RequestParser()
|
||||
parser.add_argument('powerIds', dest='power_ids')
|
||||
@@ -190,7 +180,6 @@ class RolePowerResource(Resource):
|
||||
return success_api(message="授权成功")
|
||||
|
||||
# 角色删除
|
||||
@authorize("admin:role:remove", log=True)
|
||||
def delete(self, role_id):
|
||||
print(role_id)
|
||||
res = remove_role(role_id)
|
||||
|
||||
@@ -5,7 +5,6 @@ from flask_restful import Resource, marshal
|
||||
from sqlalchemy import desc
|
||||
|
||||
from applications.common.utils.http import fail_api, success_api, table_api
|
||||
from applications.common.utils.rights import authorize
|
||||
from applications.common.utils.upload import upload_one, delete_photo_by_id
|
||||
from applications.extensions import db
|
||||
from applications.models import FilePhoto
|
||||
@@ -13,7 +12,6 @@ from applications.models import FilePhoto
|
||||
|
||||
class FilePhotosResource(Resource):
|
||||
|
||||
@authorize("admin:file:main", log=True)
|
||||
def get(self):
|
||||
page = request.args.get('page', type=int)
|
||||
limit = request.args.get('limit', type=int)
|
||||
@@ -26,7 +24,6 @@ class FilePhotosResource(Resource):
|
||||
'total': photo_paginate.total, },
|
||||
code=0)
|
||||
|
||||
@authorize("admin:file:add", log=True)
|
||||
def post(self):
|
||||
if 'file' in request.files:
|
||||
photo = request.files['file']
|
||||
@@ -43,7 +40,6 @@ class FilePhotosResource(Resource):
|
||||
return jsonify(res)
|
||||
return fail_api()
|
||||
|
||||
@authorize("admin:file:delete", log=True)
|
||||
def delete(self):
|
||||
"""图片批量删除"""
|
||||
# TODO bugs 图片删除失败
|
||||
@@ -63,7 +59,6 @@ class FilePhotosResource(Resource):
|
||||
class FilePhotoResource(Resource):
|
||||
"""图片数据"""
|
||||
|
||||
@authorize("admin:file:delete", log=True)
|
||||
def delete(self, photo_id):
|
||||
res = delete_photo_by_id(photo_id)
|
||||
if res:
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
from flask import render_template, make_response
|
||||
from flask import session, redirect, url_for, request
|
||||
from flask import session, redirect, url_for
|
||||
from flask_login import current_user, login_user
|
||||
from flask_restful import Resource, reqparse
|
||||
|
||||
@@ -10,10 +10,6 @@ from applications.models import CompanyUser
|
||||
|
||||
|
||||
class LoginResource(Resource):
|
||||
login_req = reqparse.RequestParser(bundle_errors=True)
|
||||
login_req.add_argument('username', type=str, help='请输入用户名', required=True)
|
||||
login_req.add_argument('password', type=str, help='请输入密码', required=True)
|
||||
login_req.add_argument('captcha', type=str, help='请输入验证码', required=True)
|
||||
|
||||
def get(self):
|
||||
if current_user.is_authenticated:
|
||||
@@ -21,8 +17,11 @@ class LoginResource(Resource):
|
||||
return make_response(render_template('index/login.html'))
|
||||
|
||||
def post(self):
|
||||
|
||||
req = self.login_req.parse_args()
|
||||
login_req = reqparse.RequestParser(bundle_errors=True)
|
||||
login_req.add_argument('username', type=str, help='请输入用户名', required=True)
|
||||
login_req.add_argument('password', type=str, help='请输入密码', required=True)
|
||||
login_req.add_argument('captcha', type=str, help='请输入验证码', required=True)
|
||||
req = login_req.parse_args()
|
||||
|
||||
s_code = session.get("code", None)
|
||||
|
||||
|
||||
@@ -47,7 +47,6 @@ class UserAvatarResource(Resource):
|
||||
|
||||
class UserInfoResource(Resource):
|
||||
|
||||
@login_required
|
||||
def put(self, user_id):
|
||||
parser = reqparse.RequestParser()
|
||||
parser.add_argument('realName', type=str, dest='real_name')
|
||||
@@ -70,7 +69,6 @@ class UserInfoResource(Resource):
|
||||
class UserPasswordResource(Resource):
|
||||
"""前用户密码"""
|
||||
|
||||
@login_required
|
||||
def put(self, user_id):
|
||||
parser = reqparse.RequestParser()
|
||||
parser.add_argument('oldPassword', type=str, required=True, help='旧密码不得为空')
|
||||
|
||||
@@ -4,10 +4,9 @@ from flask_restful import Resource, reqparse
|
||||
from sqlalchemy import desc
|
||||
|
||||
from applications.common.utils.http import fail_api, success_api, table_api
|
||||
from applications.common.utils.rights import authorize
|
||||
from applications.extensions import db
|
||||
from applications.models import LoggingModel
|
||||
from applications.models import CompanyUser, RightsRole, CompanyDepartment
|
||||
from applications.models import LoggingModel
|
||||
|
||||
|
||||
def get_current_user_logs():
|
||||
@@ -60,7 +59,6 @@ def update_user_role(_id, roles_list):
|
||||
class UserUsersResource(Resource):
|
||||
"""用户列表数据操作"""
|
||||
|
||||
@authorize("admin:user:main", log=True)
|
||||
def get(self):
|
||||
parser = reqparse.RequestParser()
|
||||
parser.add_argument('page', type=int, default=1)
|
||||
@@ -98,7 +96,6 @@ class UserUsersResource(Resource):
|
||||
'total': paginate.total}
|
||||
, code=0)
|
||||
|
||||
@authorize("admin:user:add", log=True)
|
||||
def post(self):
|
||||
"""新建单个用户"""
|
||||
parser = reqparse.RequestParser()
|
||||
@@ -130,7 +127,6 @@ class UserUsersResource(Resource):
|
||||
|
||||
return success_api(message="增加成功", code=0)
|
||||
|
||||
@authorize("admin:user:remove", log=True)
|
||||
def delete(self):
|
||||
"""批量删除"""
|
||||
ids = request.form.getlist('ids[]')
|
||||
@@ -141,7 +137,6 @@ class UserUsersResource(Resource):
|
||||
class UserUserResource(Resource):
|
||||
"""修改用户数据"""
|
||||
|
||||
@authorize("admin:user:add", log=True)
|
||||
def post(self, user_id):
|
||||
"""新建单个用户"""
|
||||
parser = reqparse.RequestParser()
|
||||
@@ -173,7 +168,6 @@ class UserUserResource(Resource):
|
||||
|
||||
return success_api(message="增加成功", code=0)
|
||||
|
||||
@authorize("admin:user:remove", log=True)
|
||||
def delete(self, user_id):
|
||||
# 删除用户
|
||||
res = delete_by_id(user_id)
|
||||
@@ -183,7 +177,6 @@ class UserUserResource(Resource):
|
||||
|
||||
|
||||
class UserRoleResource(Resource):
|
||||
@authorize("admin:user:edit", log=True)
|
||||
def put(self, user_id):
|
||||
parser = reqparse.RequestParser()
|
||||
parser.add_argument('roleIds', type=str, dest='role_ids')
|
||||
|
||||
@@ -1,17 +0,0 @@
|
||||
#
|
||||
MYSQL_HOST = '127.0.0.1'
|
||||
MYSQL_PORT = '3306'
|
||||
MYSQL_DATABASE = 'PearAdminFlask'
|
||||
MYSQL_USERNAME = 'root'
|
||||
MYSQL_PASSWORD = 'root'
|
||||
|
||||
MYSQL_DB_URI = "mysql+pymysql://{username}:{password}@{host}:{port}/{db}?charset=utf8".format(username=USERNAME,
|
||||
password=PASSWORD,
|
||||
host=HOST,
|
||||
port=PORT,
|
||||
db=DATABASE)
|
||||
|
||||
SQLALCHEMY_DATABASE_URI = MYSQL_DB_URI
|
||||
SQLALCHEMY_TRACK_MODIFICATIONS = True
|
||||
SQLALCHEMY_ECHO = False
|
||||
SQLALCHEMY_POOL_RECYCLE = 8
|
||||
@@ -59,24 +59,3 @@ def permission_required(permission: str) -> t.Callable:
|
||||
return wrapper
|
||||
|
||||
return decorator
|
||||
|
||||
|
||||
def authorize(power: str, log: bool = False):
|
||||
def decorator(func):
|
||||
@login_required
|
||||
@wraps(func)
|
||||
def wrapper(*args, **kwargs):
|
||||
if power not in session.get('permissions'):
|
||||
if log:
|
||||
record_logging()
|
||||
if request.method == 'GET':
|
||||
abort(403)
|
||||
else:
|
||||
return jsonify(success=False, msg="权限不足!")
|
||||
if log:
|
||||
record_logging()
|
||||
return func(*args, **kwargs)
|
||||
|
||||
return wrapper
|
||||
|
||||
return decorator
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
"phone": "12312345679",
|
||||
"email": "123qq.com",
|
||||
"status": 1,
|
||||
"remark": null,
|
||||
"comment": null,
|
||||
"address": "这是总公司",
|
||||
"create_at": null,
|
||||
"update_at": "2021-06-01 17:23:20"
|
||||
@@ -22,7 +22,7 @@
|
||||
"phone": "12312345678",
|
||||
"email": "1234qq.com",
|
||||
"status": 1,
|
||||
"remark": null,
|
||||
"comment": null,
|
||||
"address": "这是济南",
|
||||
"create_at": "2021-06-01 17:24:33",
|
||||
"update_at": "2021-06-01 17:25:19"
|
||||
@@ -36,7 +36,7 @@
|
||||
"phone": "12312345678",
|
||||
"email": "123@qq.com",
|
||||
"status": 1,
|
||||
"remark": null,
|
||||
"comment": null,
|
||||
"address": "这是唐山",
|
||||
"create_at": "2021-06-01 17:25:15",
|
||||
"update_at": "2021-06-01 17:25:20"
|
||||
@@ -50,7 +50,7 @@
|
||||
"phone": "12312345678",
|
||||
"email": "123@qq.com",
|
||||
"status": 1,
|
||||
"remark": null,
|
||||
"comment": null,
|
||||
"address": "测试",
|
||||
"create_at": "2021-06-01 17:27:39",
|
||||
"update_at": "2021-06-01 17:27:39"
|
||||
@@ -64,7 +64,7 @@
|
||||
"phone": "12312345678",
|
||||
"email": "123@qq.com",
|
||||
"status": 1,
|
||||
"remark": null,
|
||||
"comment": null,
|
||||
"address": "测试部",
|
||||
"create_at": "2021-06-01 17:28:27",
|
||||
"update_at": "2021-06-01 17:28:27"
|
||||
|
||||
@@ -1 +1,38 @@
|
||||
[{"id": 1, "username": "admin", "password_hash": "pbkdf2:sha256:150000$raM7mDSr$58fe069c3eac01531fc8af85e6fc200655dd2588090530084d182e6ec9d52c85", "create_at": null, "update_at": "2021-06-01 17:28:55", "enable": 1, "realname": "超级管理", "remark": "要是不能把握时机,就要终身蹭蹬,一事无成!", "avatar": "http://127.0.0.1:5000/_uploads/photos/1617291580000.jpg", "dept_id": 1}, {"id": 7, "username": "test", "password_hash": "pbkdf2:sha256:150000$cRS8bYNh$adb57e64d929863cf159f924f74d0634f1fecc46dba749f1bfaca03da6d2e3ac", "create_at": "2021-03-22 20:03:42", "update_at": "2021-06-01 17:29:47", "enable": 1, "realname": "超级管理", "remark": "要是不能把握时机,就要终身蹭蹬,一事无成", "avatar": "/static/admin/admin/images/avatar.jpg", "dept_id": 1}, {"id": 8, "username": "wind", "password_hash": "pbkdf2:sha256:150000$skME1obT$6a2c20cd29f89d7d2f21d9e373a7e3445f70ebce3ef1c3a555e42a7d17170b37", "create_at": "2021-06-01 17:30:39", "update_at": "2021-06-01 17:30:52", "enable": 1, "realname": "风", "remark": null, "avatar": "/static/admin/admin/images/avatar.jpg", "dept_id": 7}]
|
||||
[
|
||||
{
|
||||
"id": 1,
|
||||
"username": "admin",
|
||||
"password_hash": "pbkdf2:sha256:150000$raM7mDSr$58fe069c3eac01531fc8af85e6fc200655dd2588090530084d182e6ec9d52c85",
|
||||
"create_at": null,
|
||||
"update_at": "2021-06-01 17:28:55",
|
||||
"enable": 1,
|
||||
"realname": "超级管理",
|
||||
"remark": "要是不能把握时机,就要终身蹭蹬,一事无成!",
|
||||
"avatar": "http://127.0.0.1:5000/_uploads/photos/1617291580000.jpg",
|
||||
"dept_id": 1
|
||||
},
|
||||
{
|
||||
"id": 7,
|
||||
"username": "test",
|
||||
"password_hash": "pbkdf2:sha256:150000$cRS8bYNh$adb57e64d929863cf159f924f74d0634f1fecc46dba749f1bfaca03da6d2e3ac",
|
||||
"create_at": "2021-03-22 20:03:42",
|
||||
"update_at": "2021-06-01 17:29:47",
|
||||
"enable": 1,
|
||||
"realname": "超级管理",
|
||||
"remark": "要是不能把握时机,就要终身蹭蹬,一事无成",
|
||||
"avatar": "/static/admin/admin/images/avatar.jpg",
|
||||
"dept_id": 1
|
||||
},
|
||||
{
|
||||
"id": 8,
|
||||
"username": "wind",
|
||||
"password_hash": "pbkdf2:sha256:150000$skME1obT$6a2c20cd29f89d7d2f21d9e373a7e3445f70ebce3ef1c3a555e42a7d17170b37",
|
||||
"create_at": "2021-06-01 17:30:39",
|
||||
"update_at": "2021-06-01 17:30:52",
|
||||
"enable": 1,
|
||||
"realname": "风",
|
||||
"remark": null,
|
||||
"avatar": "/static/admin/admin/images/avatar.jpg",
|
||||
"dept_id": 7
|
||||
}
|
||||
]
|
||||
@@ -1 +1,24 @@
|
||||
[{"id": 1, "name": "管理员", "code": "admin", "remark": null, "details": "管理员", "sort": 1, "create_time": null, "update_time": null, "enable": 1}, {"id": 2, "name": "普通用户", "code": "common", "remark": null, "details": "只有查看,没有增删改权限", "sort": 2, "create_time": "2021-03-22 20:02:38", "update_time": "2021-04-01 22:29:56", "enable": 1}]
|
||||
[
|
||||
{
|
||||
"id": 1,
|
||||
"name": "管理员",
|
||||
"code": "admin",
|
||||
"remark": null,
|
||||
"details": "管理员",
|
||||
"sort": 1,
|
||||
"create_time": null,
|
||||
"update_time": null,
|
||||
"enable": 1
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"name": "普通用户",
|
||||
"code": "common",
|
||||
"remark": null,
|
||||
"details": "只有查看,没有增删改权限",
|
||||
"sort": 2,
|
||||
"create_time": "2021-03-22 20:02:38",
|
||||
"update_time": "2021-04-01 22:29:56",
|
||||
"enable": 1
|
||||
}
|
||||
]
|
||||
@@ -1,7 +1,7 @@
|
||||
from flask import render_template
|
||||
|
||||
from applications.view import index_bp
|
||||
from applications.common.utils.rights import authorize, view_logging_required, permission_required
|
||||
from applications.common.utils.rights import view_logging_required, permission_required
|
||||
|
||||
|
||||
@index_bp.get('/file')
|
||||
|
||||
@@ -3,7 +3,7 @@ from sqlalchemy import desc
|
||||
from flask_restful import marshal
|
||||
|
||||
from applications.common.utils.http import table_api
|
||||
from applications.common.utils.rights import authorize, permission_required
|
||||
from applications.common.utils.rights import permission_required
|
||||
from applications.models import LoggingModel
|
||||
|
||||
logs_bp = Blueprint('logs', __name__, url_prefix='/logs')
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
from flask import render_template
|
||||
|
||||
from applications.common.utils.rights import authorize, permission_required, view_logging_required
|
||||
from applications.common.utils.rights import permission_required, view_logging_required
|
||||
from applications.models import RightsPower
|
||||
from applications.view import index_bp
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
from flask import Blueprint, render_template
|
||||
|
||||
from applications.common.utils.rights import authorize, permission_required, view_logging_required
|
||||
from applications.common.utils.rights import permission_required, view_logging_required
|
||||
|
||||
from applications.models import RightsRole
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@ from flask import render_template
|
||||
from flask_login import login_required, current_user
|
||||
from sqlalchemy import desc
|
||||
|
||||
from applications.common.utils.rights import authorize, permission_required, view_logging_required
|
||||
from applications.common.utils.rights import permission_required, view_logging_required
|
||||
from applications.models import LoggingModel, RightsRole, CompanyUser
|
||||
from . import index_bp
|
||||
|
||||
|
||||
Reference in New Issue
Block a user