diff --git a/addons/game_base/controllers/game_api.py b/addons/game_base/controllers/game_api.py index 444330d..9d6ed42 100644 --- a/addons/game_base/controllers/game_api.py +++ b/addons/game_base/controllers/game_api.py @@ -183,7 +183,11 @@ class GameApiController(http.Controller): password = data.get('password') or '' if not login or not password: return _json({'ok': False, 'error': '账号和密码必填'}) - uid = request.session.authenticate(db, login, password) + try: + auth_info = request.session.authenticate(db, {'type': 'password', 'login': login, 'password': password}) + uid = auth_info['uid'] + except Exception: + return _json({'ok': False, 'error': '账号或密码错误'}) if uid: user = request.env['res.users'].sudo().browse(uid) return _json({'ok': True, 'uid': uid, 'name': user.name, 'login': user.login}) @@ -213,8 +217,10 @@ class GameApiController(http.Controller): 'password': password, 'groups_id': [(6, 0, [portal.id])], }) + request.env.cr.commit() # 让新用户立即对其他游标可见,便于随后自动登录 db = request.session.db or 'game' - uid = request.session.authenticate(db, login, password) + auth_info = request.session.authenticate(db, {'type': 'password', 'login': login, 'password': password}) + uid = auth_info['uid'] if uid: return _json({'ok': True, 'uid': uid, 'name': user.name, 'login': user.login}) return _json({'ok': True, 'uid': user.id, 'name': user.name, 'login': user.login}) diff --git a/addons/game_base/static/description/icon.png b/addons/game_base/static/description/icon.png new file mode 100644 index 0000000..c4cf0a7 Binary files /dev/null and b/addons/game_base/static/description/icon.png differ diff --git a/addons/game_base/static/description/index.html b/addons/game_base/static/description/index.html new file mode 100644 index 0000000..013833d --- /dev/null +++ b/addons/game_base/static/description/index.html @@ -0,0 +1,112 @@ + + +
+ +
+ Game 宇森沙盘游戏后台基础模块
+沉淀游戏世界观内容,为前端 /game/api/* 提供只读数据;同时打通 Odoo res.users,提供玩家登录/注册能力。
GET /game/api/codex?db=gameGET /game/api/rules?db=gameGET /game/api/threads?db=gameGET /game/api/announcements?db=gamePOST /game/api/login?db=gamePOST /game/api/register?db=game仅依赖 base,安装简单,无额外第三方模块。