diff options
| author | Ziad Sawalha <github@highbridgellc.com> | 2011-06-01 05:36:41 -0500 |
|---|---|---|
| committer | Ziad Sawalha <github@highbridgellc.com> | 2011-06-01 05:39:23 -0500 |
| commit | 83e6764f8139fbb08e7c83926dfb323c0db799d5 (patch) | |
| tree | 88538f28c93f8a9942a66cbdc2b5b3405b31ffa2 | |
| parent | df49b1dd7182f2c2205912a637cf02e91eec7ab5 (diff) | |
Fixed issue #6
| -rw-r--r-- | keystone/logic/service.py | 29 | ||||
| -rw-r--r-- | keystone/logic/types/auth.py | 28 | ||||
| -rw-r--r-- | keystone/server.py | 3 |
3 files changed, 42 insertions, 18 deletions
diff --git a/keystone/logic/service.py b/keystone/logic/service.py index d503257c..24e05079 100644 --- a/keystone/logic/service.py +++ b/keystone/logic/service.py @@ -73,7 +73,7 @@ class IdentityService(object): dtoken.expires = datetime.now() + timedelta(days=1) db_api.token_create(dtoken) - return self.__get_auth_data(dtoken, duser) + return self.__get_auth_data(dtoken) def validate_token(self, admin_token, token_id, belongs_to=None): self.__validate_token(admin_token) @@ -88,7 +88,7 @@ class IdentityService(object): if not user.enabled: raise fault.UserDisabledFault("The user %s has been disabled!" % user.id) - return self.__get_auth_data(token, user) + return self.__get_validate_data(token, user) def revoke_token(self, admin_token, token_id): self.__validate_token(admin_token) @@ -822,24 +822,21 @@ class IdentityService(object): # - def __get_auth_data(self, dtoken, duser): - """return AuthData object for a token/user pair""" + def __get_auth_data(self, dtoken): + """return AuthData object for a token""" + + token = auth.Token(dtoken.expires, dtoken.token_id, dtoken.tenant_id) + + return auth.AuthData(token) + + def __get_validate_data(self, dtoken, duser): + """return ValidateData object for a token/user pair""" token = auth.Token(dtoken.expires, dtoken.token_id, dtoken.tenant_id) - """gs = [] - for ug in duser.groups: - dgroup = db_api.group_get(ug.group_id) - if dtoken.tenant_id: - if dgroup.tenant_id == dtoken.tenant_id: - gs.append(auth.Group(dgroup.id, dgroup.tenant_id)) - else: - if dgroup.tenant_id == None: - gs.append(auth.Group(dgroup.id)) - user = auth.User(duser.id, dtoken.tenant_id, gs) - """ user = auth.User(duser.id, duser.tenant_id, None) - return auth.AuthData(token, user) + + return auth.ValidateData(token, user) def __validate_token(self, token_id, admin=True): if not token_id: diff --git a/keystone/logic/types/auth.py b/keystone/logic/types/auth.py index 63dde05c..dd45073b 100644 --- a/keystone/logic/types/auth.py +++ b/keystone/logic/types/auth.py @@ -118,6 +118,32 @@ class User(object): class AuthData(object): "Authentation Information returned upon successful login." + def __init__(self, token): + self.token = token + + def to_xml(self): + dom = etree.Element("auth", + xmlns="http://docs.openstack.org/identity/api/v2.0") + token = etree.Element("token", + expires=self.token.expires.isoformat()) + token.set("id", self.token.token_id) + dom.append(token) + return etree.tostring(dom) + + def to_json(self): + token = {} + token["id"] = self.token.token_id + token["expires"] = self.token.expires.isoformat() + auth = {} + auth["token"] = token + ret = {} + ret["auth"] = auth + return json.dumps(ret) + + +class ValidateData(object): + "Authentation Information returned upon successful token validation." + def __init__(self, token, user): self.token = token self.user = user @@ -169,4 +195,4 @@ class AuthData(object): auth["user"] = user ret = {} ret["auth"] = auth - return json.dumps(ret) + return json.dumps(ret)
\ No newline at end of file diff --git a/keystone/server.py b/keystone/server.py index 678f71eb..abd9ef31 100644 --- a/keystone/server.py +++ b/keystone/server.py @@ -476,7 +476,8 @@ class RolesController(wsgi.Controller): rval = service.delete_role_ref(utils.get_auth_token(req), role_ref_id) return utils.send_result(204, req, rval) - + + class BaseURLsController(wsgi.Controller): """ BaseURL Controller - |
