正在显示
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) |
请
注册
或
登录
后发表评论