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 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 __init__(self): self._authenticate() self.tenant_id = tenant.get_tenant_id(self.bearer_token, self.org_guid, self.space_guid) self.logger = TestLogger(__name__)