async def get_by_secret(secret): """Get a file by secret. Returns MotorGridOut.""" file_id = await get_file_id(str(secret)) if file_id: return await get(file_id) else: raise error.NotFoundError(secret)
async def get(self): if self.has_priv(builtin.PRIV_USER_PROFILE): self.redirect(self.reverse_url('domain_main')) else: if len(self.request.query_string) > 0: if self.request.query_string.startswith("ticket="): ticket = self.request.query_string[7:] uinfo = await casclient.get_user_info(ticket) uname = uinfo['sid'][0] udoc = await user.get_by_uname(uname) if udoc is not None: uid = udoc['_id'] await asyncio.gather( user.set_by_uid(uid, loginat=datetime.datetime.utcnow(), loginip=self.remote_ip), self.update_session(new_saved=True, uid=uid)) self.json_or_redirect(self.referer_or_main) else: uid = await system.inc_user_counter() password = uuid.uuid4().hex if 'email' in uinfo: email = uinfo['email'][0] else: email = f'{uname}@mail.sustech.edu.cn' await user.add(uid, uname, password, email, self.remote_ip) await self.update_session(new_saved=False, uid=uid) self.json_or_redirect(self.reverse_url('domain_main')) else: raise error.NotFoundError(self.url) else: self.redirect('https://cas.sustech.edu.cn/cas/login?service=' + options.url_prefix + '/auth/login')
async def get(self): raise error.NotFoundError(self.url)