完善开发文档与合并 admin_log 文件
This commit is contained in:
@@ -1,18 +1,96 @@
|
||||
from io import BytesIO
|
||||
from flask import make_response
|
||||
from flask_login import current_user
|
||||
|
||||
from flask import session, make_response
|
||||
|
||||
from applications.common.utils.validate import str_escape
|
||||
from applications.common.utils.captcha import vieCode
|
||||
from applications.extensions import db
|
||||
from applications.models import AdminLog
|
||||
|
||||
|
||||
# 生成验证码
|
||||
def get_captcha():
|
||||
"""
|
||||
生成验证码图片及其对应的验证码字符串。
|
||||
|
||||
:return: 返回验证码图片的响应对象和验证码字符串。
|
||||
"""
|
||||
image, code = vieCode().GetCodeImage()
|
||||
code = ''.join(code).lower()
|
||||
out = BytesIO()
|
||||
# session["code"] = code
|
||||
image.save(out, 'png')
|
||||
out.seek(0)
|
||||
resp = make_response(out.read())
|
||||
resp.content_type = 'image/png'
|
||||
return resp, code
|
||||
return resp, code
|
||||
|
||||
|
||||
def normal_log(method, url, ip, user_agent, desc, uid, is_access):
|
||||
"""
|
||||
记录通用日志信息到数据库。
|
||||
|
||||
:param method: 请求方法(如 GET、POST)。
|
||||
:param url: 请求的 URL。
|
||||
:param ip: 客户端的 IP 地址。
|
||||
:param user_agent: 客户端的 User-Agent 信息。
|
||||
:param desc: 日志描述信息。
|
||||
:param uid: 用户 ID。
|
||||
:param is_access: 是否成功访问(True 或 False)。
|
||||
:return: 返回日志记录的 ID。
|
||||
"""
|
||||
info = {
|
||||
'method': method,
|
||||
'url': url,
|
||||
'ip': ip,
|
||||
'user_agent': user_agent,
|
||||
'desc': desc,
|
||||
'uid': uid,
|
||||
'success': int(is_access)
|
||||
}
|
||||
log = AdminLog(
|
||||
url=info.get('url'),
|
||||
ip=info.get('ip'),
|
||||
user_agent=info.get('user_agent'),
|
||||
desc=info.get('desc'),
|
||||
uid=info.get('uid'),
|
||||
method=info.get('method'),
|
||||
success=info.get('success')
|
||||
)
|
||||
db.session.add(log)
|
||||
db.session.commit()
|
||||
return log.id
|
||||
|
||||
|
||||
def login_log(request, uid, is_access):
|
||||
"""
|
||||
记录用户登录日志。
|
||||
|
||||
:param request: Flask 请求对象。
|
||||
:param uid: 用户 ID。
|
||||
:param is_access: 是否成功登录(True 或 False)。
|
||||
:return: 返回日志记录的 ID。
|
||||
"""
|
||||
method = request.method
|
||||
url = request.path
|
||||
ip = request.remote_addr
|
||||
user_agent = str_escape(request.headers.get('User-Agent'))
|
||||
desc = str_escape(request.form.get('username'))
|
||||
return normal_log(method, url, ip, user_agent, desc, uid, is_access)
|
||||
|
||||
|
||||
def admin_log(request, is_access, desc=None):
|
||||
"""
|
||||
记录管理员操作日志。
|
||||
|
||||
:param request: Flask 请求对象。
|
||||
:param is_access: 是否成功操作(True 或 False)。
|
||||
:param desc: 日志描述信息(可选)。如果未提供,则从请求数据中提取。
|
||||
:return: 返回日志记录的 ID。
|
||||
"""
|
||||
method = request.method
|
||||
url = request.path
|
||||
ip = request.remote_addr
|
||||
user_agent = str_escape(request.headers.get('User-Agent'))
|
||||
request_data = request.json if request.headers.get('Content-Type') == 'application/json' else request.values
|
||||
if desc is None:
|
||||
desc = str_escape(str(dict(request_data)))
|
||||
return normal_log(method, url, ip, user_agent, desc, current_user.id, is_access)
|
||||
|
||||
@@ -1,49 +0,0 @@
|
||||
from flask_login import current_user
|
||||
|
||||
from applications.common.utils.validate import str_escape
|
||||
from applications.extensions import db
|
||||
from applications.models import AdminLog
|
||||
|
||||
|
||||
def normal_log(method, url, ip, user_agent, desc, uid, is_access):
|
||||
info = {
|
||||
'method': method,
|
||||
'url': url,
|
||||
'ip': ip,
|
||||
'user_agent': user_agent,
|
||||
'desc': desc,
|
||||
'uid': uid,
|
||||
'success': int(is_access)
|
||||
}
|
||||
log = AdminLog(
|
||||
url=info.get('url'),
|
||||
ip=info.get('ip'),
|
||||
user_agent=info.get('user_agent'),
|
||||
desc=info.get('desc'),
|
||||
uid=info.get('uid'),
|
||||
method=info.get('method'),
|
||||
success=info.get('success')
|
||||
)
|
||||
db.session.add(log)
|
||||
db.session.commit()
|
||||
return log.id
|
||||
|
||||
|
||||
def login_log(request, uid, is_access):
|
||||
method = request.method
|
||||
url = request.path
|
||||
ip = request.remote_addr
|
||||
user_agent = str_escape(request.headers.get('User-Agent'))
|
||||
desc = str_escape(request.form.get('username'))
|
||||
return normal_log(method, url, ip, user_agent, desc, uid, is_access)
|
||||
|
||||
|
||||
def admin_log(request, is_access, desc=None):
|
||||
method = request.method
|
||||
url = request.path
|
||||
ip = request.remote_addr
|
||||
user_agent = str_escape(request.headers.get('User-Agent'))
|
||||
request_data = request.json if request.headers.get('Content-Type') == 'application/json' else request.values
|
||||
if desc is None:
|
||||
desc = str_escape(str(dict(request_data)))
|
||||
return normal_log(method, url, ip, user_agent, desc, current_user.id, is_access)
|
||||
@@ -1,7 +1,7 @@
|
||||
from functools import wraps
|
||||
from flask import abort, request, jsonify, session, current_app
|
||||
from flask_login import login_required, current_user
|
||||
from applications.common.admin_log import admin_log
|
||||
from applications.common.admin import admin_log
|
||||
|
||||
|
||||
def authorize(power: str, log: bool = False):
|
||||
|
||||
Reference in New Issue
Block a user