示例#1
0
文件: base.py 项目: baden/navi.cc
    def post(self):
        user = self.get_argument("name")
        password = passhash(self.get_argument("password"))

        exist = yield adb(self.db["users"].find_one, {"method": "raw", "user": user})
        if exist:  # Пользователь с таким именем уже существует
            if exist.get("password", "") != password:
                # raise tornado.web.HTTPError(500, 'Password is incorrect')
                self.write("<!DOCTYPE html><html><body>Пароль неверный</body></html>")
                self.finish()
                return
            result = exist.get("_id", None)
        else:
            result = yield adb(
                self.db["users"].save, {"method": "raw", "user": user, "password": password, "nickname": user}
            )

        if not result:
            raise tornado.web.HTTPError(404)
        else:
            self.set_secure_cookie("user", str(result))
            try:
                next = unquote_plus(self.get_argument("next"))
                if next:
                    self.redirect(next)
                else:
                    self.redirect("/")
            except:  # Внешний запрос - вернем 'AUTHENTICATION_SUCCESS'
                self.write("AUTHENTICATION_SUCCESS")
                self.finish()
示例#2
0
文件: base.py 项目: baden/navi.cc
 def _on_auth(self, user):
     if not user:
         raise tornado.web.HTTPError(500, "Google auth failed")
     exist = yield adb(self.db["users"].find_one, {"method": "google", "user": user["email"]})
     if exist:  # Пользователь с таким именем уже существует
         result = exist.get("_id", None)
     else:
         result = yield adb(
             self.db["users"].save,
             {
                 "method": "google",
                 "user": user["email"],
                 "nickname": user["name"],
                 "email": user["email"],
                 "name": user["name"],
                 "locale": user["locale"],
                 "first_name": user["first_name"],
                 "last_name": user["last_name"],
             },
         )
     if not result:
         raise tornado.web.HTTPError(404)
     else:
         self.set_secure_cookie("user", str(result))
         self.redirect(self.get_argument("next", "/"))
示例#3
0
文件: core.py 项目: baden/navi.cc
    def api(self, *args, **kwargs):
        global api_call_counter, api_call_concurent
        api_call_counter += 1
        api_call_concurent += 1
        log('  ApiBase:api:start(args=%s, kwargs=%s)' % (args, kwargs))
        self.set_header('Content-Type', 'application/json; charset=UTF-8')
        # callback = self.request.get('callback', None)
        #callback = self.request.arguments.get('callback', None)
        callback = self.get_argument('callback', None)

        # self.current_user = "******"

        if 'nologin' not in self.requred:
            log('    start: result = yield motor.Op...')
            #user = yield motor.Op(get_user, self.db, self.current_user)
            user = yield adb(users.get_user4, self.db, self.current_user)
            #user = yield adb(users.get_user4, self.db, "5049dbb9de72f216d3b8ec9f")
            if user:
                self.user = user.get('nickname', u'Ошибка')

            log('     done: result = yield motor.Op... [%s]' % repr(self.user))

        answ = yield gen.Task(self.parcer, *args, **kwargs)
        #answ = yield motor.Op(self.parcer, *args, **kwargs)
        # answ = self._parcer(*args, **kwargs)
        # print ' ret=', repr(answ)
        answ['api_statistics'] = {
            'call_counter': api_call_counter,
            'call_concurent': api_call_concurent
        }
        answ['user'] = self.user
        """
        res = yield adb(
                self.db['trash'].find({"i": {"$gt": 18, "$lt": 20}}).to_list
            )
        print ' === res=', repr(res)
        answ['trash'] = [
            repr(p) for p in res
        ]
        """
        if callback:
            self.write(callback + ' = ' + self.js_pre + json.dumps(answ, indent=2) + self.js_post + "\r")
        else:
            self.write(self.js_pre + json.dumps(answ, indent=2) + self.js_post + "\r")
        self.finish()
        api_call_concurent -= 1
        log('  ApiBase:api:finish')