Add a register api

- Add a register api
- Change requirements, which flask version should be over 2.0
This commit is contained in:
Lost-MSth
2022-04-10 21:02:46 +08:00
parent 35c34f25d5
commit e8c15f5069
8 changed files with 294 additions and 32 deletions

View File

@@ -1,19 +1,34 @@
from flask import jsonify
def code_get_msg(code):
# api接口code获取msg返回字符串
msg = {
'0': '',
'-1': 'See status code',
'-2': 'No data',
'-3': 'No data or user',
'-4': 'No user_id',
'-100': 'Wrong post data',
'-101': 'Wrong data type',
'-102': 'Wrong query parameter',
'-103': 'Wrong sort parameter',
'-104': 'Wrong sort order parameter',
'-201': 'Wrong username or password',
'-202': 'User is banned',
'-999': 'Unknown error'
0: '',
-1: 'See status code',
-2: 'No data',
-3: 'No data or user',
-4: 'No user_id',
-100: 'Wrong post data',
-101: 'Wrong data type',
-102: 'Wrong query parameter',
-103: 'Wrong sort parameter',
-104: 'Wrong sort order parameter',
-201: 'Wrong username or password',
-202: 'User is banned',
-203: 'Username exists',
-204: 'Email address exists',
-999: 'Unknown error'
}
return msg[str(code)]
return msg[code]
def return_encode(code: int = 0, data: dict = {}, status: int = 200, msg: str = ''):
# 构造返回返回jsonify处理过后的response_class
if msg == '':
msg = code_get_msg(code)
if code < 0:
return jsonify({'status': status, 'code': code, 'data': {}, 'msg': msg})
else:
return jsonify({'status': status, 'code': code, 'data': data, 'msg': msg})

View File

@@ -3,12 +3,13 @@ from flask import (
)
import functools
import api.api_auth
import api.users
from . import users
import api.songs
from api.api_code import code_get_msg
from .api_code import code_get_msg, return_encode
bp = Blueprint('api', __name__, url_prefix='/api/v1')
bp.register_blueprint(users.bp)
class Query():
@@ -62,16 +63,6 @@ def get_query_parameter(request, query_able=[], sort_able=[]):
return decorator
def return_encode(code: int = 0, data: dict = {}, status: int = 200, msg: str = ''):
# 构造返回返回jsonify处理过后的response_class
if msg == '':
msg = code_get_msg(code)
if code < 0:
return jsonify({'status': status, 'code': code, 'data': {}, 'msg': msg})
else:
return jsonify({'status': status, 'code': code, 'data': data, 'msg': msg})
@bp.route('/')
def ping():
return return_encode()
@@ -111,7 +102,7 @@ def token_delete(user):
def users_get(query, user):
# 查询全用户信息
data = api.users.get_users(query)
data = users.get_users(query)
if not data:
return return_encode(-2)
@@ -133,7 +124,7 @@ def users_user_get(user, user_id):
if user_id != user.user_id and not 'select' in user.power and user.user_id != 0: # 查别人需要select权限
return return_encode(-1, {}, 403, 'No permission')
data = api.users.get_user_info(user_id)
data = users.get_user_info(user_id)
if not data:
return return_encode(-3)
@@ -152,7 +143,7 @@ def users_user_b30_get(user, user_id):
if user_id != user.user_id and not 'select' in user.power and user.user_id != 0: # 查别人需要select权限
return return_encode(-1, {}, 403, 'No permission')
data = api.users.get_user_b30(user_id)
data = users.get_user_b30(user_id)
if data['data'] == []:
return return_encode(-3)
@@ -173,7 +164,7 @@ def users_user_best_get(query, user, user_id):
if user_id != user.user_id and not 'select' in user.power and user.user_id != 0: # 查别人需要select权限
return return_encode(-1, {}, 403, 'No permission')
data = api.users.get_user_best(user_id, query)
data = users.get_user_best(user_id, query)
if data['data'] == []:
return return_encode(-3)
@@ -192,7 +183,7 @@ def users_user_r30_get(user, user_id):
if user_id != user.user_id and not 'select' in user.power and user.user_id != 0: # 查别人需要select权限
return return_encode(-1, {}, 403, 'No permission')
data = api.users.get_user_r30(user_id)
data = users.get_user_r30(user_id)
if data['data'] == []:
return return_encode(-3)

View File

@@ -1,9 +1,48 @@
from flask import (
Blueprint, request, jsonify
)
from .api_code import code_get_msg, return_encode
from .api_auth import role_required
from core.user import RegisterUser
from core.error import ArcError, PostError
from server.sql import Connect
from server.sql import Sql
import time
import web.webscore
import server.info
bp = Blueprint('users', __name__, url_prefix='/users')
@bp.route('', methods=['POST'])
@role_required(request, ['change'])
def users_post(user):
# 注册用户
with Connect() as c:
new_user = RegisterUser(c)
try:
if 'name' in request.json:
new_user.set_name(request.json['name'])
else:
raise PostError('No name provided.')
if 'password' in request.json:
new_user.set_password(request.json['password'])
else:
raise PostError('No password provided.')
if 'email' in request.json:
new_user.set_email(request.json['email'])
else:
raise PostError('No email provided.')
new_user.register()
except ArcError as e:
return return_encode(e.api_error_code)
return return_encode(0, {'user_id': new_user.user_id, 'user_code': new_user.user_code})
def get_users(query=None):
# 获取全用户信息,返回字典列表