)]}'
{"keystone/identity/core.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"1d72d994a8c081f2d30b156f622a0086b8c9a9b6","unresolved":false,"context_lines":[{"line_number":423,"context_line":"            for token_id in self.token_api.list_tokens(context, user_id):"},{"line_number":424,"context_line":"                self.token_api.delete_token(context, token_id)"},{"line_number":425,"context_line":"        except exception.NotImplemented:"},{"line_number":426,"context_line":"            # The password has been changed but tokens remain valid for"},{"line_number":427,"context_line":"            # backends that can\u0027t list tokens for users"},{"line_number":428,"context_line":"            LOG.warning(\u0027User %s disabled, but existing tokens remain \u0027"},{"line_number":429,"context_line":"                        \u0027valid\u0027 % user_id)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAHX%2F%2F8%2FY%3D","line":426,"updated":"2012-05-11 15:13:29.000000000","message":"copy/pasta issue :)","commit_id":"a814ea718ce2703e872fca495191e6c1dc18b048"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"7641bdf69e2e322d10a458331dc6fb1fa833ebda","unresolved":false,"context_lines":[{"line_number":429,"context_line":"        self.identity_api.delete_user(context, user_id)"},{"line_number":430,"context_line":""},{"line_number":431,"context_line":"    def set_user_enabled(self, context, user_id, user):"},{"line_number":432,"context_line":"        return self.update_user(context, user_id, user)"},{"line_number":433,"context_line":""},{"line_number":434,"context_line":"    def set_user_password(self, context, user_id, user):"},{"line_number":435,"context_line":"        return self.update_user(context, user_id, user)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAHX%2F%2F7Cw%3D","line":432,"updated":"2012-05-16 17:19:54.000000000","message":"nice :)","commit_id":"ccbcf9908f91e02f78d8ebb0ab7db7de2a01eed7"}],"keystone/service.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"1d72d994a8c081f2d30b156f622a0086b8c9a9b6","unresolved":false,"context_lines":[{"line_number":319,"context_line":"                                                    context\u003dcontext,"},{"line_number":320,"context_line":"                                                    user_id\u003duser_ref[\u0027id\u0027])"},{"line_number":321,"context_line":"            if not current_user_ref.get(\u0027enabled\u0027, True):"},{"line_number":322,"context_line":"                raise exception.Forbidden(message\u003d\u0027User has been disabled\u0027)"},{"line_number":323,"context_line":""},{"line_number":324,"context_line":"            tenants \u003d self.identity_api.get_tenants_for_user(context,"},{"line_number":325,"context_line":"                                                             user_ref[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAHX%2F%2F8%2FU%3D","line":322,"updated":"2012-05-11 15:13:29.000000000","message":"Do we want to expose that the user is disabled?","commit_id":"a814ea718ce2703e872fca495191e6c1dc18b048"},{"author":{"_account_id":6,"name":"Joe Heck","email":"heckj@mac.com","username":"heckj"},"change_message_id":"70bdfeb1963bae8b47700a54782c59174af3d42a","unresolved":false,"context_lines":[{"line_number":319,"context_line":"                                                    context\u003dcontext,"},{"line_number":320,"context_line":"                                                    user_id\u003duser_ref[\u0027id\u0027])"},{"line_number":321,"context_line":"            if not current_user_ref.get(\u0027enabled\u0027, True):"},{"line_number":322,"context_line":"                raise exception.Forbidden(message\u003d\u0027User has been disabled\u0027)"},{"line_number":323,"context_line":""},{"line_number":324,"context_line":"            tenants \u003d self.identity_api.get_tenants_for_user(context,"},{"line_number":325,"context_line":"                                                             user_ref[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAHX%2F%2F76o%3D","line":322,"in_reply_to":"AAAAHX%2F%2F8%2BI%3D","updated":"2012-05-15 06:43:50.000000000","message":"I think we want to just report \"unauthorized\" to the user and log \"User disabled\" to the local system so that a system admin/operator can figure out *why* they were denied auth.","commit_id":"a814ea718ce2703e872fca495191e6c1dc18b048"},{"author":{"_account_id":1926,"name":"Derek Higgins","email":"derekh@redhat.com","username":"derekh"},"change_message_id":"469b4ad28b791ebdff158a66f2117df31e247576","unresolved":false,"context_lines":[{"line_number":319,"context_line":"                                                    context\u003dcontext,"},{"line_number":320,"context_line":"                                                    user_id\u003duser_ref[\u0027id\u0027])"},{"line_number":321,"context_line":"            if not current_user_ref.get(\u0027enabled\u0027, True):"},{"line_number":322,"context_line":"                raise exception.Forbidden(message\u003d\u0027User has been disabled\u0027)"},{"line_number":323,"context_line":""},{"line_number":324,"context_line":"            tenants \u003d self.identity_api.get_tenants_for_user(context,"},{"line_number":325,"context_line":"                                                             user_ref[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAHX%2F%2F8%2BI%3D","line":322,"in_reply_to":"AAAAHX%2F%2F8%2FU%3D","updated":"2012-05-11 15:21:10.000000000","message":"this is whats done for username/password auth \nhttps://github.com/openstack/keystone/blob/master/keystone/service.py#L278\nshould I change both to a less revealing status?","commit_id":"a814ea718ce2703e872fca495191e6c1dc18b048"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"7641bdf69e2e322d10a458331dc6fb1fa833ebda","unresolved":false,"context_lines":[{"line_number":279,"context_line":"                # If the user is disabled don\u0027t allow them to authenticate"},{"line_number":280,"context_line":"                if not user_ref.get(\u0027enabled\u0027, True):"},{"line_number":281,"context_line":"                    LOG.warning(\u0027User %s is disabled\u0027 % user_id)"},{"line_number":282,"context_line":"                    raise exception.Unauthorized(message\u003d\u0027Authentication \u0027"},{"line_number":283,"context_line":"                                                 \u0027required\u0027)"},{"line_number":284,"context_line":"            except AssertionError as e:"},{"line_number":285,"context_line":"                raise exception.Unauthorized(e.message)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAHX%2F%2F7CY%3D","line":282,"updated":"2012-05-16 17:19:54.000000000","message":"You can actually remove the message kw; the class\u0027 docstring is used as the message by default.","commit_id":"ccbcf9908f91e02f78d8ebb0ab7db7de2a01eed7"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"7641bdf69e2e322d10a458331dc6fb1fa833ebda","unresolved":false,"context_lines":[{"line_number":325,"context_line":"                                                    user_id\u003duser_ref[\u0027id\u0027])"},{"line_number":326,"context_line":"            if not current_user_ref.get(\u0027enabled\u0027, True):"},{"line_number":327,"context_line":"                LOG.warning(\u0027User %s is disabled\u0027 % user_ref[\u0027id\u0027])"},{"line_number":328,"context_line":"                raise exception.Unauthorized(message\u003d\u0027Authentication required\u0027)"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"            tenants \u003d self.identity_api.get_tenants_for_user(context,"},{"line_number":331,"context_line":"                                                             user_ref[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAHX%2F%2F7CQ%3D","line":328,"updated":"2012-05-16 17:19:54.000000000","message":"same as above; remove message kw","commit_id":"ccbcf9908f91e02f78d8ebb0ab7db7de2a01eed7"}],"tests/test_keystoneclient.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"1d72d994a8c081f2d30b156f622a0086b8c9a9b6","unresolved":false,"context_lines":[{"line_number":318,"context_line":"        admin_client.users.update_enabled(user\u003dself.user_foo[\u0027id\u0027], enabled\u003dFalse)"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"        self.assertRaises(client_exceptions.Unauthorized, foo_client.tokens.authenticate,"},{"line_number":321,"context_line":"                          token\u003dfoo_client.auth_token)"},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"    def test_user_create_update_delete(self):"},{"line_number":324,"context_line":"        from keystoneclient import exceptions as client_exceptions"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAHX%2F%2F8%2FQ%3D","line":321,"updated":"2012-05-11 15:13:29.000000000","message":"Should also test that a fresh auth now raises 403 forbidden","commit_id":"a814ea718ce2703e872fca495191e6c1dc18b048"},{"author":{"_account_id":1926,"name":"Derek Higgins","email":"derekh@redhat.com","username":"derekh"},"change_message_id":"469b4ad28b791ebdff158a66f2117df31e247576","unresolved":false,"context_lines":[{"line_number":318,"context_line":"        admin_client.users.update_enabled(user\u003dself.user_foo[\u0027id\u0027], enabled\u003dFalse)"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"        self.assertRaises(client_exceptions.Unauthorized, foo_client.tokens.authenticate,"},{"line_number":321,"context_line":"                          token\u003dfoo_client.auth_token)"},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"    def test_user_create_update_delete(self):"},{"line_number":324,"context_line":"        from keystoneclient import exceptions as client_exceptions"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAHX%2F%2F8%2BY%3D","line":321,"in_reply_to":"AAAAHX%2F%2F8%2FQ%3D","updated":"2012-05-11 15:21:10.000000000","message":"Will do","commit_id":"a814ea718ce2703e872fca495191e6c1dc18b048"}]}
