users.py
2.8 KB
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
from flask import jsonify, request
from app.models import Users
from app.api.auths import Auth
from app import common
from app import db
from app.api import bp
from app.api.errors import bad_request
import re
# def init_api(app):
@bp.route('/register', methods=['POST'])
def register():
"""
用户注册
:return: json
"""
data = request.get_json()
if not data:
return bad_request('You must post JSON data.')
message = {}
if 'username' not in data or not data.get('username', None):
message['username'] = 'Please provide a valid username.'
pattern = '^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$'
if 'email' not in data or not re.match(pattern, data.get('email', None)):
message['email'] = 'Please provide a valid email address.'
if 'password' not in data or not data.get('password', None):
message['password'] = 'Please provide a valid password.'
if Users.query.filter_by(username=data.get('username', None)).first():
message['username'] = 'Please use a different username.'
if Users.query.filter_by(email=data.get('email', None)).first():
message['email'] = 'Please use a different email address.'
if message:
return bad_request(message)
user = Users(email=data['email'], username=data['username'], password=Users.set_password(Users, data['password']))
result = Users.add(Users, user)
if user.id:
returnUser = {
'id': user.id,
'username': user.username,
'email': user.email,
'login_time': user.login_time
}
return jsonify(common.trueReturn(returnUser, "用户注册成功"))
else:
return jsonify(common.falseReturn('', '用户注册失败'))
@bp.route('/login', methods=['POST'])
def login():
"""
用户登录
:return: json
"""
data = request.get_json()
# username = data.get('username')
# password = data.get('password')
username = request.form.get('username')
password = request.form.get('password')
if (not username or not password):
return jsonify(common.falseReturn('', '用户名和密码不能为空'))
else:
return Auth.authenticate(Auth, username, password)
@bp.route('/user', methods=['GET'])
def get():
"""
获取用户信息
:return: json
"""
result = Auth.identify(Auth, request)
print (result['status'],result['data'])
if (result['status'] and result['data']):
user = Users.get(Users, result['data'])
returnUser = {
'id': user.id,
'username': user.username,
'email': user.email,
'login_time': user.login_time
}
result = common.trueReturn(returnUser, "请求成功")
return jsonify(result)