正在显示
3 个修改的文件
包含
50 行增加
和
24 行删除
| @@ -93,7 +93,9 @@ class DataManager(BlueprintApi): | @@ -93,7 +93,9 @@ class DataManager(BlueprintApi): | ||
| 93 | log = OAuthLog(user_id=user.id, username=user.username, | 93 | log = OAuthLog(user_id=user.id, username=user.username, |
| 94 | auth_type=AuthEnum.Other.name.lower(), | 94 | auth_type=AuthEnum.Other.name.lower(), |
| 95 | message="认证成功", create_time=datetime.now(), | 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 | db.session.add(log) | 99 | db.session.add(log) |
| 98 | db.session.commit() | 100 | db.session.commit() |
| 99 | 101 | ||
| @@ -145,7 +147,9 @@ class DataManager(BlueprintApi): | @@ -145,7 +147,9 @@ class DataManager(BlueprintApi): | ||
| 145 | log = OAuthLog(user_id=user.id, username=user.username, | 147 | log = OAuthLog(user_id=user.id, username=user.username, |
| 146 | auth_type=AuthEnum.Other.name.lower(), | 148 | auth_type=AuthEnum.Other.name.lower(), |
| 147 | message="注销成功", create_time=datetime.now(), | 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 | db.session.add(log) | 153 | db.session.add(log) |
| 150 | db.session.commit() | 154 | db.session.commit() |
| 151 | 155 | ||
| @@ -263,6 +267,7 @@ class DataManager(BlueprintApi): | @@ -263,6 +267,7 @@ class DataManager(BlueprintApi): | ||
| 263 | @bp.route("/oa/callback", methods=["GET"]) | 267 | @bp.route("/oa/callback", methods=["GET"]) |
| 264 | def oa_callback(): | 268 | def oa_callback(): |
| 265 | try: | 269 | try: |
| 270 | + print(request.remote_addr) | ||
| 266 | client = oauth2.WebApplicationClient( | 271 | client = oauth2.WebApplicationClient( |
| 267 | configure.OA["client_id"]) | 272 | configure.OA["client_id"]) |
| 268 | 273 | ||
| @@ -341,9 +346,11 @@ class DataManager(BlueprintApi): | @@ -341,9 +346,11 @@ class DataManager(BlueprintApi): | ||
| 341 | response.set_cookie('id_token', id_token, | 346 | response.set_cookie('id_token', id_token, |
| 342 | max_age=configure.expiretime) | 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 | message="三方认证成功", create_time=datetime.now(), | 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 | db.session.add(log) | 354 | db.session.add(log) |
| 348 | db.session.commit() | 355 | db.session.commit() |
| 349 | 356 |
| 1 | # coding=utf-8 | 1 | # coding=utf-8 |
| 2 | -#author: qianyingz | 2 | +# author: qianyingz |
| 3 | # createtime: 2022/03/09 | 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 | from .models import * | 8 | from .models import * |
| 7 | from app.util.component.ApiTemplate import ApiTemplate | 9 | from app.util.component.ApiTemplate import ApiTemplate |
| 8 | -import time | 10 | +import json |
| 9 | 11 | ||
| 10 | 12 | ||
| 11 | class Api(ApiTemplate): | 13 | class Api(ApiTemplate): |
| @@ -22,10 +24,31 @@ class Api(ApiTemplate): | @@ -22,10 +24,31 @@ class Api(ApiTemplate): | ||
| 22 | # 业务逻辑 | 24 | # 业务逻辑 |
| 23 | page_index = int(self.para.get("page_index", "0")) | 25 | page_index = int(self.para.get("page_index", "0")) |
| 24 | page_size = int(self.para.get("page_size", "1000")) | 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 | log_query = OAuthLog.query | 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 | log_query = log_query.order_by(OAuthLog.create_time.desc()) | 52 | log_query = log_query.order_by(OAuthLog.create_time.desc()) |
| 30 | 53 | ||
| 31 | count = log_query.count() | 54 | count = log_query.count() |
| @@ -40,14 +63,6 @@ class Api(ApiTemplate): | @@ -40,14 +63,6 @@ class Api(ApiTemplate): | ||
| 40 | "auth_type": t.auth_type, | 63 | "auth_type": t.auth_type, |
| 41 | "displayname": t.displayname}, logs))} | 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 | # userLinq = User.query.order_by(User.id.desc()) | 67 | # userLinq = User.query.order_by(User.id.desc()) |
| 53 | # if name: | 68 | # if name: |
| @@ -83,10 +98,14 @@ class Api(ApiTemplate): | @@ -83,10 +98,14 @@ class Api(ApiTemplate): | ||
| 83 | "type": "int", | 98 | "type": "int", |
| 84 | "description": "条数", | 99 | "description": "条数", |
| 85 | "default": 1000}, | 100 | "default": 1000}, |
| 86 | - {"name": "sort_key", | 101 | + {"name": "order_by", |
| 87 | "in": "query", | 102 | "in": "query", |
| 88 | "type": "string", | 103 | "type": "string", |
| 89 | - "description": "排序"} | 104 | + "description": "排序"}, |
| 105 | + {"name": "filter_param", | ||
| 106 | + "in": "query", | ||
| 107 | + "type": "json", | ||
| 108 | + "description": "过滤"} | ||
| 90 | ], | 109 | ], |
| 91 | "responses": { | 110 | "responses": { |
| 92 | 200: { | 111 | 200: { |
| 1 | -from sqlalchemy import Column, Integer, Text, Time, ForeignKey, column | 1 | +from sqlalchemy import Column, Integer, Text, Time, ForeignKey, DateTime |
| 2 | from app.models import db | 2 | from app.models import db |
| 3 | from authlib.integrations.sqla_oauth2 import ( | 3 | from authlib.integrations.sqla_oauth2 import ( |
| 4 | OAuth2ClientMixin, | 4 | OAuth2ClientMixin, |
| @@ -21,8 +21,8 @@ class User (db.Model): | @@ -21,8 +21,8 @@ class User (db.Model): | ||
| 21 | position = Column(Text) | 21 | position = Column(Text) |
| 22 | phone = Column(Text) | 22 | phone = Column(Text) |
| 23 | email = Column(Text) | 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 | role = Column(Text) | 26 | role = Column(Text) |
| 27 | displayname = Column(Text, nullable=True) # 昵称 | 27 | displayname = Column(Text, nullable=True) # 昵称 |
| 28 | # 用户来源,默认dmap平台用户 | 28 | # 用户来源,默认dmap平台用户 |
| @@ -89,6 +89,6 @@ class OAuthLog(db.Model): | @@ -89,6 +89,6 @@ class OAuthLog(db.Model): | ||
| 89 | # 登录方式:password,三方登录 | 89 | # 登录方式:password,三方登录 |
| 90 | auth_type = Column(Text) | 90 | auth_type = Column(Text) |
| 91 | message = Column(Text) # 登录返回提示 | 91 | message = Column(Text) # 登录返回提示 |
| 92 | - create_time = Column(Time) # 记录创建时间 | 92 | + create_time = Column(DateTime) # 记录创建时间 |
| 93 | operate_type = Column(Integer, nullable=False) # 操作类型,登录,注销 | 93 | operate_type = Column(Integer, nullable=False) # 操作类型,登录,注销 |
| 94 | token = Column(Text) | 94 | token = Column(Text) |
请
注册
或
登录
后发表评论