1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
import json
from functools import wraps
from django.http import HttpResponse
from alpha_types.venus.error import ERROR as CODES
from helios.rpc import RPCFaultException
from libs.utils import DictWrapperUseDot
from engine.logger import auth_logger
from engine.rpc import get_current_rpc_invoker
def get_user_by_request(request):
"""获取用户信息"""
try:
user_info = request.rpc["venus/account/user/self_user_detail"]().unwrap()
except:
return None
if not user_info["logined"]:
return None
info = {
"id": user_info["user_id"],
"user_id": user_info["user_id"],
"nick_name": user_info["nick_name"],
"profile_pic": user_info["profile_pic"],
"city_id": user_info["city_id"],
"gender": user_info["gender"],
"register_time": user_info["register_time"],
}
return DictWrapperUseDot(info)
def get_user_by_ids(user_ids):
"""获取用户信息"""
try:
rpc = get_current_rpc_invoker()
users_info = rpc["venus/account/user/userinfo_list"](user_ids=user_ids).unwrap()
except:
return None
return users_info
def user_exists_by_names(names):
"""获取用户信息"""
try:
rpc = get_current_rpc_invoker()
users_info = rpc["venus/account/user/user_exists_by_names"](names=names).unwrap()
except Exception as e:
raise Exception(e)
return []
return users_info
def auth(request):
user_info = get_user_by_request(request)
if not user_info:
return False
request.user = user_info
return True
def login_required(view_func):
"""登录校验"""
@wraps(view_func)
def _wrapped_view(request, *args, **kwargs):
if auth(request):
return view_func(request, *args, **kwargs)
request_data = {'request': {key: value for key, value in request.REQUEST.items()}}
auth_logger.error(json.dumps(request_data))
result = {
'error': 1,
'message': CODES.getDesc(CODES.LOGIN_REQUIRED),
'error_code': CODES.LOGIN_REQUIRED,
}
return HttpResponse(status=403, content=json.dumps(result))
return _wrapped_view