def login(): """Login DMM from login form :return: rv """ post = request.form login_id = post.get('login_id', None) password = post.get('password', None) mode = int(post.get('mode', 1)) # Test mode for local debug test_mode = post.get('testMode', False) if test_mode: test_mode = True session['test_mode'] = test_mode session['mode'] = mode if app.config['ENV'] == 'development' and test_mode: return debug_login(login_id, password, mode) if mode == 5 and test_mode: # enable test mode in ios mode even in production environment return debug_login(login_id, password, mode) if login_id and password: kancolle_auth = KancolleAuth(login_id, password) if mode in (1, 2, 3, 5): try: kancolle_auth.get_entry() session['api_token'] = kancolle_auth.api_token session['api_starttime'] = kancolle_auth.api_starttime session['world_ip'] = kancolle_auth.world_ip if mode == 2: return redirect('/kcv') elif mode == 3: return redirect('/poi') elif mode == 5: return redirect('/ios') else: return redirect('/browser') except OOIAuthException as e: return render_minify_template('form.html', errmsg=e.message, mode=mode) elif mode == 4: try: osapi_url = kancolle_auth.get_osapi() session['osapi_url'] = osapi_url return redirect('/connector') except OOIAuthException as e: return render_minify_template('form.html', errmsg=e.message, mode=mode) else: return BadResponse("Invalid mode") else: return render_minify_template( 'form.html', errmsg='Please input your username and password.', mode=mode)
def login(self, request): """接受登录表单提交的数据,登录后跳转或登录失败后展示错误信息。 :param request: aiohttp.web.Request :return: aiohttp.web.HTTPFound or aiohttp.web.Response """ post = yield from request.post() session = yield from get_session(request) login_id = post.get('login_id', None) password = post.get('password', None) mode = int(post.get('mode', 1)) session['mode'] = mode dbc = DbConnect(localhost, 3306, username, password, db) if login_id and password and dbc.query(login_id): kancolle = KancolleAuth(login_id, password) dbc.update(login_id) dbc.close() del dbc if mode in (1, 2, 3): try: yield from kancolle.get_flash() session['api_token'] = kancolle.api_token session['api_starttime'] = kancolle.api_starttime session['world_ip'] = kancolle.world_ip if mode == 2: return aiohttp.web.HTTPFound('/kcv') elif mode == 3: return aiohttp.web.HTTPFound('/poi') else: return aiohttp.web.HTTPFound('/kancolle') except OOIAuthException as e: context = {'errmsg': e.message, 'mode': mode} return aiohttp_jinja2.render_template( 'form.html', request, context) elif mode == 4: try: osapi_url = yield from kancolle.get_osapi() session['osapi_url'] = osapi_url return aiohttp.web.HTTPFound('/connector') except OOIAuthException as e: context = {'errmsg': e.message, 'mode': mode} return aiohttp_jinja2.render_template( 'form.html', request, context) else: raise aiohttp.web.HTTPBadRequest() else: context = {'errmsg': '请输入完整的有效的ID和密码', 'mode': mode} dbc.close() del dbc return aiohttp_jinja2.render_template('form.html', request, context)
def login(self, request): """接受登录表单提交的数据,登录后跳转或登录失败后展示错误信息。 :param request: aiohttp.web.Request :return: aiohttp.web.HTTPFound or aiohttp.web.Response """ post = yield from request.post() session = yield from get_session(request) login_id = post.get('login_id', None) password = post.get('password', None) mode = int(post.get('mode', 1)) session['mode'] = mode f = open(config.white_list, encoding='utf-8') WhiteList = f.readlines() isre = False for item in WhiteList: if login_id.strip().upper() == item.upper().strip(): isre = True break if isre: if login_id and password: kancolle = KancolleAuth(login_id, password) if mode in (1, 2, 3): try: yield from kancolle.get_flash() session['api_token'] = kancolle.api_token session['api_starttime'] = kancolle.api_starttime session['world_ip'] = kancolle.world_ip if mode == 2: return aiohttp.web.HTTPFound('/kcv') elif mode == 3: return aiohttp.web.HTTPFound('/poi') else: return aiohttp.web.HTTPFound('/kancolle') except OOIAuthException as e: context = {'errmsg': e.message, 'mode': mode} return aiohttp_jinja2.render_template('form.html', request, context) elif mode == 4: try: osapi_url = yield from kancolle.get_osapi() session['osapi_url'] = osapi_url return aiohttp.web.HTTPFound('/connector') except OOIAuthException as e: context = {'errmsg': e.message, 'mode': mode} return aiohttp_jinja2.render_template('form.html', request, context) else: raise aiohttp.web.HTTPBadRequest() else: context = {'errmsg': '请输入完整的登录ID和密码', 'mode': mode} return aiohttp_jinja2.render_template('form.html', request, context) else: context = {'errmsg': 'ID不在白名单', 'mode': mode} return aiohttp_jinja2.render_template('form.html', request, context)
def login(self, request): """接受登录表单提交的数据,登录后跳转或登录失败后展示错误信息。 :param request: aiohttp.web.Request :return: aiohttp.web.HTTPFound or aiohttp.web.Response """ post = yield from request.post() session = yield from get_session(request) login_id = post.get('login_id', None) password = post.get('password', None) mode = int(post.get('mode', 1)) session['mode'] = mode if login_id and password: kancolle = KancolleAuth(login_id, password) if mode in (1, 2, 3): try: yield from kancolle.get_flash() session['api_token'] = kancolle.api_token session['api_starttime'] = kancolle.api_starttime session['world_ip'] = kancolle.world_ip if mode == 2: return aiohttp.web.HTTPFound('/kcv') elif mode == 3: return aiohttp.web.HTTPFound('/poi') else: return aiohttp.web.HTTPFound('/kancolle') except OOIAuthException as e: context = {'errmsg': e.message, 'mode': mode} return aiohttp_jinja2.render_template('form.html', request, context) elif mode == 4: try: osapi_url = yield from kancolle.get_osapi() session['osapi_url'] = osapi_url return aiohttp.web.HTTPFound('/connector') except OOIAuthException as e: context = {'errmsg': e.message, 'mode': mode} return aiohttp_jinja2.render_template('form.html', request, context) else: raise aiohttp.web.HTTPBadRequest() else: context = {'errmsg': '请输入完整的登录ID和密码', 'mode': mode} return aiohttp_jinja2.render_template('form.html', request, context)
def get_osapi(): """获取用户的内嵌游戏网页地址,返回一个JSON格式的字典。 结果中`status`键值为1时获取成功,`osapi_url`键值为内嵌网页地址;`status`为0时获取失败,`message`键值提供了错误信息。 :return: flask.Response """ data = request.form login_id = data.get('login_id', None) password = data.get('password', None) if login_id and password: headers = {'Content-Type': 'application/json'} kancolle = KancolleAuth(login_id, password) try: osapi_url = kancolle.get_osapi() result = {'status': 1, 'osapi_url': osapi_url} except OOIAuthException as e: result = {'status': 0, 'message': e.message} return JsonResponse(result, headers=headers) else: return BadResponse('Both username and password is required.')
def get_osapi(self, request): """获取用户的内嵌游戏网页地址,返回一个JSON格式的字典。 结果中`status`键值为1时获取成功,`osapi_url`键值为内嵌网页地址;`status`为0时获取失败,`message`键值提供了错误信息。 :param request: aiohttp.web.Request :return: aiohttp.web.Response or aiohttp.web.HTTPBadRequest """ data = yield from request.post() login_id = data.get('login_id', None) password = data.get('password', None) if login_id and password: headers = aiohttp.MultiDict({'Content-Type': 'application/json'}) kancolle = KancolleAuth(login_id, password) try: osapi_url = yield from kancolle.get_osapi() result = {'status': 1, 'osapi_url': osapi_url} except OOIAuthException as e: result = {'status': 0, 'message': e.message} return aiohttp.web.Response(body=json.dumps(result).encode(), headers=headers) else: return aiohttp.web.HTTPBadRequest()