正在显示
3 个修改的文件
包含
50 行增加
和
24 行删除
| ... | ... | @@ -93,7 +93,9 @@ class DataManager(BlueprintApi): |
| 93 | 93 | log = OAuthLog(user_id=user.id, username=user.username, |
| 94 | 94 | auth_type=AuthEnum.Other.name.lower(), |
| 95 | 95 | message="认证成功", create_time=datetime.now(), |
| 96 | - operate_type=OperateEnum.Login) | |
| 96 | + operate_type=OperateEnum.Login, | |
| 97 | + displayname=user.displayname, ip=request.remote_addr | |
| 98 | + ) | |
| 97 | 99 | db.session.add(log) |
| 98 | 100 | db.session.commit() |
| 99 | 101 | |
| ... | ... | @@ -145,7 +147,9 @@ class DataManager(BlueprintApi): |
| 145 | 147 | log = OAuthLog(user_id=user.id, username=user.username, |
| 146 | 148 | auth_type=AuthEnum.Other.name.lower(), |
| 147 | 149 | message="注销成功", create_time=datetime.now(), |
| 148 | - operate_type=OperateEnum.Logout, token=access_token) | |
| 150 | + operate_type=OperateEnum.Logout, token=access_token, | |
| 151 | + displayname=user.displayname, ip=request.remote_addr | |
| 152 | + ) | |
| 149 | 153 | db.session.add(log) |
| 150 | 154 | db.session.commit() |
| 151 | 155 | |
| ... | ... | @@ -263,6 +267,7 @@ class DataManager(BlueprintApi): |
| 263 | 267 | @bp.route("/oa/callback", methods=["GET"]) |
| 264 | 268 | def oa_callback(): |
| 265 | 269 | try: |
| 270 | + print(request.remote_addr) | |
| 266 | 271 | client = oauth2.WebApplicationClient( |
| 267 | 272 | configure.OA["client_id"]) |
| 268 | 273 | |
| ... | ... | @@ -341,9 +346,11 @@ class DataManager(BlueprintApi): |
| 341 | 346 | response.set_cookie('id_token', id_token, |
| 342 | 347 | max_age=configure.expiretime) |
| 343 | 348 | |
| 344 | - log = OAuthLog(user_id=user.id, username=user_name, auth_type=AuthEnum.Other.name.lower(), | |
| 349 | + log = OAuthLog(user_id=user.id, username=user_name, | |
| 350 | + auth_type=AuthEnum.Other.name.lower(), | |
| 345 | 351 | message="三方认证成功", create_time=datetime.now(), |
| 346 | - operate_type=OperateEnum.Login, token=access_token) | |
| 352 | + operate_type=OperateEnum.Login, token=access_token, | |
| 353 | + displayname=display_name, ip=request.remote_addr) | |
| 347 | 354 | db.session.add(log) |
| 348 | 355 | db.session.commit() |
| 349 | 356 | ... | ... |
| 1 | 1 | # coding=utf-8 |
| 2 | -#author: qianyingz | |
| 2 | +# author: qianyingz | |
| 3 | 3 | # createtime: 2022/03/09 |
| 4 | -#email: qianyingz@chinadci.com | |
| 5 | -from datetime import datetime | |
| 4 | +# email: qianyingz@chinadci.com | |
| 5 | +from tokenize import String | |
| 6 | +from numpy import number | |
| 7 | +from sqlalchemy import or_ | |
| 6 | 8 | from .models import * |
| 7 | 9 | from app.util.component.ApiTemplate import ApiTemplate |
| 8 | -import time | |
| 10 | +import json | |
| 9 | 11 | |
| 10 | 12 | |
| 11 | 13 | class Api(ApiTemplate): |
| ... | ... | @@ -22,10 +24,31 @@ class Api(ApiTemplate): |
| 22 | 24 | # 业务逻辑 |
| 23 | 25 | page_index = int(self.para.get("page_index", "0")) |
| 24 | 26 | page_size = int(self.para.get("page_size", "1000")) |
| 25 | - #name = self.para.get("name") | |
| 26 | - sort_key = self.para.get("sort_key") | |
| 27 | + # name = self.para.get("name") | |
| 28 | + order_by = self.para.get("order_by") | |
| 29 | + filter_param = self.para.get("filter_param", "") | |
| 30 | + filter_param_json = {} if filter_param == "" else json.loads( | |
| 31 | + filter_param) | |
| 32 | + kw = filter_param_json["kw"] if "kw" in filter_param_json else None | |
| 33 | + type = filter_param_json["type"] if "type" in filter_param_json else None | |
| 27 | 34 | |
| 28 | 35 | log_query = OAuthLog.query |
| 36 | + | |
| 37 | + if kw != None: | |
| 38 | + if isinstance(kw, str): | |
| 39 | + filter_username_query = log_query.filter(OAuthLog.username.like( | |
| 40 | + "%" + kw + "%")) | |
| 41 | + filter_display_query = log_query.filter( | |
| 42 | + OAuthLog.displayname.like("%" + kw + "%")) | |
| 43 | + log_query = filter_username_query.union( | |
| 44 | + filter_display_query) | |
| 45 | + | |
| 46 | + if type != None: | |
| 47 | + if isinstance(type, (str,int)): | |
| 48 | + log_query = log_query.filter(OAuthLog.operate_type == type) | |
| 49 | + elif isinstance(type, list): | |
| 50 | + log_query = log_query.filter(OAuthLog.operate_type.in_(type)) | |
| 51 | + | |
| 29 | 52 | log_query = log_query.order_by(OAuthLog.create_time.desc()) |
| 30 | 53 | |
| 31 | 54 | count = log_query.count() |
| ... | ... | @@ -40,14 +63,6 @@ class Api(ApiTemplate): |
| 40 | 63 | "auth_type": t.auth_type, |
| 41 | 64 | "displayname": t.displayname}, logs))} |
| 42 | 65 | |
| 43 | - # if id: | |
| 44 | - # tmp_user = User.query.filter_by(id=id).first() | |
| 45 | - # res["data"] = {"guid": tmp_user.id, "username": tmp_user.username, | |
| 46 | - # "role": tmp_user.role, "company": tmp_user.company, | |
| 47 | - # "position": tmp_user.position, "email": tmp_user.email, | |
| 48 | - # "phone": tmp_user.phone, "display_name": tmp_user.display_name, | |
| 49 | - # "status": tmp_user.status} | |
| 50 | - # else: | |
| 51 | 66 | # # 获取集合 |
| 52 | 67 | # userLinq = User.query.order_by(User.id.desc()) |
| 53 | 68 | # if name: |
| ... | ... | @@ -83,10 +98,14 @@ class Api(ApiTemplate): |
| 83 | 98 | "type": "int", |
| 84 | 99 | "description": "条数", |
| 85 | 100 | "default": 1000}, |
| 86 | - {"name": "sort_key", | |
| 101 | + {"name": "order_by", | |
| 87 | 102 | "in": "query", |
| 88 | 103 | "type": "string", |
| 89 | - "description": "排序"} | |
| 104 | + "description": "排序"}, | |
| 105 | + {"name": "filter_param", | |
| 106 | + "in": "query", | |
| 107 | + "type": "json", | |
| 108 | + "description": "过滤"} | |
| 90 | 109 | ], |
| 91 | 110 | "responses": { |
| 92 | 111 | 200: { | ... | ... |
| 1 | -from sqlalchemy import Column, Integer, Text, Time, ForeignKey, column | |
| 1 | +from sqlalchemy import Column, Integer, Text, Time, ForeignKey, DateTime | |
| 2 | 2 | from app.models import db |
| 3 | 3 | from authlib.integrations.sqla_oauth2 import ( |
| 4 | 4 | OAuth2ClientMixin, |
| ... | ... | @@ -21,8 +21,8 @@ class User (db.Model): |
| 21 | 21 | position = Column(Text) |
| 22 | 22 | phone = Column(Text) |
| 23 | 23 | email = Column(Text) |
| 24 | - create_time = Column(Time) | |
| 25 | - update_time = Column(Time) | |
| 24 | + create_time = Column(DateTime) | |
| 25 | + update_time = Column(DateTime) | |
| 26 | 26 | role = Column(Text) |
| 27 | 27 | displayname = Column(Text, nullable=True) # 昵称 |
| 28 | 28 | # 用户来源,默认dmap平台用户 |
| ... | ... | @@ -89,6 +89,6 @@ class OAuthLog(db.Model): |
| 89 | 89 | # 登录方式:password,三方登录 |
| 90 | 90 | auth_type = Column(Text) |
| 91 | 91 | message = Column(Text) # 登录返回提示 |
| 92 | - create_time = Column(Time) # 记录创建时间 | |
| 92 | + create_time = Column(DateTime) # 记录创建时间 | |
| 93 | 93 | operate_type = Column(Integer, nullable=False) # 操作类型,登录,注销 |
| 94 | 94 | token = Column(Text) | ... | ... |
请
注册
或
登录
后发表评论