def post(self): try: email = self.request.get('email') hkey = self.request.get('hkey') tenant_id = tenant.get_tenant_id(email) namespace_manager.set_namespace(tenant_id) if User.get_by_key_name(email): raise AppError(u'このメールアドレスは、既に登録されています。') if self.request.get('button') == 'Send Activate Key': key = ActivateKey.make(email) self.send_activate_key(email, key[:12]) hkey = key[12:] self.render_template('signup.html', {'email': email, 'hkey': hkey}) return else: key = self.request.get('key1') + self.request.get('key2') + self.request.get('key3') + self.request.get('hkey') if not ActivateKey.validate(email, key): raise AppError(u'不正な Activate Key です。') password = self.request.get('password') if not string.strip(password): raise AppError(u'パスワードが未入力です。') user = User(key_name=email, email=email, password=hashlib.md5(email + password).hexdigest()) user.put() self.redirect('/') except AppError, e: self.render_template('signup.html', {'error_msg': e.message, 'email': email, 'hkey': hkey})
def get(self): try: user = basic_auth.get_current_user() email = self.request.get('email') if email: if user.email == email: self.redirect('/list_book') return else: friend = User.get_by_key_name(email) if not friend: raise AppError(u'指定されたメールアドレスに該当するユーザはいません。') ubooks = UsersBook.get_by_user(friend) else: friend = None ubooks = UsersBook.get_by_user(user) books = [Book.get_by_key_name(ubook.book_id) for ubook in ubooks] self.render_template('list_book.html', {'books': books, 'friend': friend}) except AppError, e: self.render_template('list_book.html', {'error_msg': e.message})
def handler(self, *args, **kw): try: (method, encoded) = self.request.headers['AUTHORIZATION'].split() if method.lower() == 'basic': (login_id, password) = base64.b64decode(encoded).split(':') tenant_id = tenant.get_tenant_id(login_id) namespace_manager.set_namespace(tenant_id) user = User.get_by_key_name(login_id) if not user: raise BasicAuthError if user.password == hashlib.md5(login_id + password).hexdigest(): globals()['get_current_user'] = lambda : user return func(self, *args, **kw) raise BasicAuthError except (KeyError, BasicAuthError), e: self.response.set_status(401) self.response.headers['WWW-Authenticate'] = 'Basic realm="%s"' % (realm or 'Default') self.response.write(e) return
def get(self): try: user = basic_auth.get_current_user() email = self.request.get('email') if email: if user.email == email: self.redirect('/list_book') return else: friend = User.get_by_key_name(email) if not friend: raise AppError(u'指定されたメールアドレスに該当するユーザはいません。') ubooks = UsersBook.get_by_user(friend) else: friend = None ubooks = UsersBook.get_by_user(user) books = [Book.get_by_key_name(ubook.book_id) for ubook in ubooks] self.render_template('list_book.html', { 'books': books, 'friend': friend }) except AppError, e: self.render_template('list_book.html', {'error_msg': e.message})