Ejemplo n.º 1
0
 async def get(self, *, code: str = None, state: str = None):
     self.check_oauth('jaccount')
     redirect_url = misc.generate_url(
         self.reverse_url('user_login_jaccount'))
     if self.has_priv(builtin.PRIV_USER_PROFILE):
         self.redirect(self.reverse_url('domain_main'))
     elif code:
         # redirected from jaccount oauth server
         # print(code)
         data = await oauth.get_profile(code, redirect_url)
         if not data:
             raise error.LoginError('')
         uid = int(data['code'])
         udoc = await user.get_by_uid(uid)
         if not udoc:
             mail = data['account'] + '@sjtu.edu.cn'
             await user.add(uid=uid,
                            uname=data['account'],
                            password=data['id'],
                            mail=mail,
                            regip=self.remote_ip,
                            realname=data['name'])
             udoc = await user.get_by_uid(uid)
         if not udoc:
             raise error.LoginError(data['account'])
         await asyncio.gather(
             user.set_by_uid(udoc['_id'],
                             loginat=datetime.datetime.utcnow(),
                             loginip=self.remote_ip),
             self.update_session(new_saved=True, uid=udoc['_id']))
         self.redirect(self.reverse_url('domain_main'))
     else:
         self.redirect(oauth.get_authorize_url(redirect_url))
Ejemplo n.º 2
0
Archivo: user.py Proyecto: JoshOY/vj4
 async def post(self, *, uname: str, password: str, rememberme: bool = False):
   udoc = await user.check_password_by_uname(uname, password)
   if not udoc:
     raise error.LoginError(uname)
   await asyncio.gather(user.set_by_uid(udoc['_id'],
                                        loginat=datetime.datetime.utcnow(),
                                        loginip=self.remote_ip),
                        self.update_session(new_saved=rememberme, uid=udoc['_id']))
   self.json_or_redirect(self.referer_or_main)