)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"3307e3ac428a256540212c00f75eccf6800b15ba","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Christian Berendt \u003cberendt@b1-systems.de\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-11-25 14:42:14 +0100"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Log the username when using an invalid username or password"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Logging the username when using an invalid username or password"},{"line_number":10,"context_line":"helps to determine the causing account."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"5a890539_0ceaa173","line":7,"updated":"2014-11-25 14:56:20.000000000","message":"Commit message says about username, but this patchset is about logging user_id","commit_id":"357282ec7f0a610407f5248915094d25a6a377fa"}],"keystone/identity/backends/ldap.py":[{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"a9ed70f1d6a8314f5a7521e3b64b64ecdc966bd9","unresolved":false,"context_lines":[{"line_number":52,"context_line":"    # Identity interface"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def authenticate(self, user_id, password):"},{"line_number":55,"context_line":"        if not password:"},{"line_number":56,"context_line":"            raise AssertionError(_(\u0027Password not set\u0027))"},{"line_number":57,"context_line":"        if not user_id:"},{"line_number":58,"context_line":"            raise AssertionError(_(\u0027User id not set\u0027))"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a890539_e27d4b1d","line":55,"updated":"2014-11-26 00:24:52.000000000","message":"There is no objection to create an empty password: https://github.com/openstack/keystone/blob/master/keystone/identity/controllers.py#L60","commit_id":"ff3fd73809351dc4799704191dd56cee76aaeb47"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"05949851b944fc6e6e3eb5cef2085b865e98fbdc","unresolved":false,"context_lines":[{"line_number":52,"context_line":"    # Identity interface"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def authenticate(self, user_id, password):"},{"line_number":55,"context_line":"        if not password:"},{"line_number":56,"context_line":"            raise AssertionError(_(\u0027Password not set\u0027))"},{"line_number":57,"context_line":"        if not user_id:"},{"line_number":58,"context_line":"            raise AssertionError(_(\u0027User id not set\u0027))"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a890539_75bef701","line":55,"in_reply_to":"5a890539_e27d4b1d","updated":"2014-12-01 21:54:43.000000000","message":"Password isn\u0027t required for V3 either: \n\nhttps://github.com/openstack/identity-api/blob/master/v3/src/markdown/identity-api-v3.md#users-v3users\n\nwhich means this could be None","commit_id":"ff3fd73809351dc4799704191dd56cee76aaeb47"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"a9ed70f1d6a8314f5a7521e3b64b64ecdc966bd9","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        if not password:"},{"line_number":56,"context_line":"            raise AssertionError(_(\u0027Password not set\u0027))"},{"line_number":57,"context_line":"        if not user_id:"},{"line_number":58,"context_line":"            raise AssertionError(_(\u0027User id not set\u0027))"},{"line_number":59,"context_line":"        try:"},{"line_number":60,"context_line":"            user_ref \u003d self._get_user(user_id)"},{"line_number":61,"context_line":"        except exception.UserNotFound:"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a890539_2274b334","line":58,"updated":"2014-11-26 00:24:52.000000000","message":"Don\u0027t think it\u0027s possible to reach the driver without a set user_id.","commit_id":"ff3fd73809351dc4799704191dd56cee76aaeb47"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"29fbe28835f2e77ee796eae3aeae88e263e685eb","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        try:"},{"line_number":56,"context_line":"            user_ref \u003d self._get_user(user_id)"},{"line_number":57,"context_line":"        except exception.UserNotFound:"},{"line_number":58,"context_line":"            raise AssertionError(_(\u0027Invalid user id %s\u0027) % user_id)"},{"line_number":59,"context_line":"        conn \u003d None"},{"line_number":60,"context_line":"        try:"},{"line_number":61,"context_line":"            conn \u003d self.user.get_connection(user_ref[\u0027dn\u0027],"}],"source_content_type":"text/x-python","patch_set":6,"id":"5afe65bd_229b8ecb","line":58,"updated":"2015-06-02 01:52:15.000000000","message":"Technically speaking we should still say bad user or password here as well, this prevents leaking information back out such as \"this is a valid user so keep trying bad passwords\". Indicating the passed in ID is a totally reasonable change and should happen.","commit_id":"16a26083bc78932e8097cf0eceec2bf1548a1a2c"},{"author":{"_account_id":17123,"name":"Tom Cocozzello (tjcocozz)","email":"tjcocozz@us.ibm.com","username":"tcocozzello"},"change_message_id":"dddceeec14117ff392fe566e627ee75791364fde","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        try:"},{"line_number":56,"context_line":"            user_ref \u003d self._get_user(user_id)"},{"line_number":57,"context_line":"        except exception.UserNotFound:"},{"line_number":58,"context_line":"            raise AssertionError(_(\u0027Invalid user %s or invalid password\u0027) %"},{"line_number":59,"context_line":"                                 user_id)"},{"line_number":60,"context_line":"        if not user_id or not password:"},{"line_number":61,"context_line":"            raise AssertionError(_(\u0027Invalid user or invalid password\u0027))"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba15a1d1_67748067","line":58,"updated":"2015-09-16 23:18:50.000000000","message":"To make it easier for the translators I would recommend;\n\n_(\u0027Invalid user %(user_id)s or invalid password\u0027) % \u0027user_id\u0027: user_id)\n\nBecause the translators only receive what is passed to the \u0027_\u0027 function having a positional argument will help them better understand the context of the string.\n\nfor example in this context the \u0027%s\u0027 could be misinterpreted as a name.","commit_id":"c3636ab7555217142cfa163448e1aedf8da93fe9"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"89746d1bf457d852250ca572ccde7bce0af54f5d","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        try:"},{"line_number":56,"context_line":"            user_ref \u003d self._get_user(user_id)"},{"line_number":57,"context_line":"        except exception.UserNotFound:"},{"line_number":58,"context_line":"            raise AssertionError(_(\u0027Invalid user %s or invalid password\u0027) %"},{"line_number":59,"context_line":"                                 user_id)"},{"line_number":60,"context_line":"        if not user_id or not password:"},{"line_number":61,"context_line":"            raise AssertionError(_(\u0027Invalid user or invalid password\u0027))"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba15a1d1_8a8dad7d","line":58,"updated":"2015-09-14 03:22:01.000000000","message":"better as \u0027Invalid user \"%s\" or password\u0027.  stating invalid twice is redundant","commit_id":"c3636ab7555217142cfa163448e1aedf8da93fe9"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"89746d1bf457d852250ca572ccde7bce0af54f5d","unresolved":false,"context_lines":[{"line_number":58,"context_line":"            raise AssertionError(_(\u0027Invalid user %s or invalid password\u0027) %"},{"line_number":59,"context_line":"                                 user_id)"},{"line_number":60,"context_line":"        if not user_id or not password:"},{"line_number":61,"context_line":"            raise AssertionError(_(\u0027Invalid user or invalid password\u0027))"},{"line_number":62,"context_line":"        conn \u003d None"},{"line_number":63,"context_line":"        try:"},{"line_number":64,"context_line":"            conn \u003d self.user.get_connection(user_ref[\u0027dn\u0027],"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba15a1d1_ca93a5a2","line":61,"updated":"2015-09-14 03:22:01.000000000","message":"better as \u0027Invalid user or password\u0027.  stating invalid twice is redundant","commit_id":"c3636ab7555217142cfa163448e1aedf8da93fe9"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"89746d1bf457d852250ca572ccde7bce0af54f5d","unresolved":false,"context_lines":[{"line_number":64,"context_line":"            conn \u003d self.user.get_connection(user_ref[\u0027dn\u0027],"},{"line_number":65,"context_line":"                                            password, end_user_auth\u003dTrue)"},{"line_number":66,"context_line":"            if not conn:"},{"line_number":67,"context_line":"                raise AssertionError(_(\u0027Invalid user %s or invalid password\u0027) %"},{"line_number":68,"context_line":"                                     user_id)"},{"line_number":69,"context_line":"        except Exception:"},{"line_number":70,"context_line":"            raise AssertionError(_(\u0027Invalid user %s or invalid password\u0027) %"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba15a1d1_2ae9011b","line":67,"updated":"2015-09-14 03:22:01.000000000","message":"ditto","commit_id":"c3636ab7555217142cfa163448e1aedf8da93fe9"},{"author":{"_account_id":17123,"name":"Tom Cocozzello (tjcocozz)","email":"tjcocozz@us.ibm.com","username":"tcocozzello"},"change_message_id":"dddceeec14117ff392fe566e627ee75791364fde","unresolved":false,"context_lines":[{"line_number":64,"context_line":"            conn \u003d self.user.get_connection(user_ref[\u0027dn\u0027],"},{"line_number":65,"context_line":"                                            password, end_user_auth\u003dTrue)"},{"line_number":66,"context_line":"            if not conn:"},{"line_number":67,"context_line":"                raise AssertionError(_(\u0027Invalid user %s or invalid password\u0027) %"},{"line_number":68,"context_line":"                                     user_id)"},{"line_number":69,"context_line":"        except Exception:"},{"line_number":70,"context_line":"            raise AssertionError(_(\u0027Invalid user %s or invalid password\u0027) %"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba15a1d1_07da644c","line":67,"updated":"2015-09-16 23:18:50.000000000","message":"same as above","commit_id":"c3636ab7555217142cfa163448e1aedf8da93fe9"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"89746d1bf457d852250ca572ccde7bce0af54f5d","unresolved":false,"context_lines":[{"line_number":67,"context_line":"                raise AssertionError(_(\u0027Invalid user %s or invalid password\u0027) %"},{"line_number":68,"context_line":"                                     user_id)"},{"line_number":69,"context_line":"        except Exception:"},{"line_number":70,"context_line":"            raise AssertionError(_(\u0027Invalid user %s or invalid password\u0027) %"},{"line_number":71,"context_line":"                                 user_id)"},{"line_number":72,"context_line":"        finally:"},{"line_number":73,"context_line":"            if conn:"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba15a1d1_4aeeb523","line":70,"updated":"2015-09-14 03:22:01.000000000","message":"ditto","commit_id":"c3636ab7555217142cfa163448e1aedf8da93fe9"},{"author":{"_account_id":17123,"name":"Tom Cocozzello (tjcocozz)","email":"tjcocozz@us.ibm.com","username":"tcocozzello"},"change_message_id":"dddceeec14117ff392fe566e627ee75791364fde","unresolved":false,"context_lines":[{"line_number":67,"context_line":"                raise AssertionError(_(\u0027Invalid user %s or invalid password\u0027) %"},{"line_number":68,"context_line":"                                     user_id)"},{"line_number":69,"context_line":"        except Exception:"},{"line_number":70,"context_line":"            raise AssertionError(_(\u0027Invalid user %s or invalid password\u0027) %"},{"line_number":71,"context_line":"                                 user_id)"},{"line_number":72,"context_line":"        finally:"},{"line_number":73,"context_line":"            if conn:"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba15a1d1_c7df8c38","line":70,"updated":"2015-09-16 23:18:50.000000000","message":"same as above","commit_id":"c3636ab7555217142cfa163448e1aedf8da93fe9"}],"keystone/identity/backends/sql.py":[{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"29fbe28835f2e77ee796eae3aeae88e263e685eb","unresolved":false,"context_lines":[{"line_number":106,"context_line":"        try:"},{"line_number":107,"context_line":"            user_ref \u003d self._get_user(session, user_id)"},{"line_number":108,"context_line":"        except exception.UserNotFound:"},{"line_number":109,"context_line":"            raise AssertionError(_(\u0027Invalid user id %s\u0027) % user_id)"},{"line_number":110,"context_line":"        if not self._check_password(password, user_ref):"},{"line_number":111,"context_line":"            raise AssertionError(_(\u0027Invalid password for user %s\u0027) % user_id)"},{"line_number":112,"context_line":"        return identity.filter_user(user_ref.to_dict())"}],"source_content_type":"text/x-python","patch_set":6,"id":"5afe65bd_425faa0e","line":109,"updated":"2015-06-02 01:52:15.000000000","message":"See Above comment about leaking information out to the API. Please keep this generic/the same message everywhere.","commit_id":"16a26083bc78932e8097cf0eceec2bf1548a1a2c"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"5140690aa2bdfb7a610e353896ad9a2b6b5ed1eb","unresolved":false,"context_lines":[{"line_number":106,"context_line":"        try:"},{"line_number":107,"context_line":"            user_ref \u003d self._get_user(session, user_id)"},{"line_number":108,"context_line":"        except exception.UserNotFound:"},{"line_number":109,"context_line":"            raise AssertionError(_(\u0027Invalid user %s or invalid password\u0027) %"},{"line_number":110,"context_line":"                                 user_id)"},{"line_number":111,"context_line":"        if not self._check_password(password, user_ref):"},{"line_number":112,"context_line":"            raise AssertionError(_(\u0027Invalid user %s or invalid password\u0027) %"}],"source_content_type":"text/x-python","patch_set":7,"id":"da20952f_0808582c","line":109,"updated":"2015-09-03 17:17:44.000000000","message":"maybe put the %s between parenthesis ?","commit_id":"c3636ab7555217142cfa163448e1aedf8da93fe9"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"89746d1bf457d852250ca572ccde7bce0af54f5d","unresolved":false,"context_lines":[{"line_number":106,"context_line":"        try:"},{"line_number":107,"context_line":"            user_ref \u003d self._get_user(session, user_id)"},{"line_number":108,"context_line":"        except exception.UserNotFound:"},{"line_number":109,"context_line":"            raise AssertionError(_(\u0027Invalid user %s or invalid password\u0027) %"},{"line_number":110,"context_line":"                                 user_id)"},{"line_number":111,"context_line":"        if not self._check_password(password, user_ref):"},{"line_number":112,"context_line":"            raise AssertionError(_(\u0027Invalid user %s or invalid password\u0027) %"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba15a1d1_aadd1172","line":109,"in_reply_to":"da20952f_0808582c","updated":"2015-09-14 03:22:01.000000000","message":"paraenthesis or \"%s\".  something to indicate the user id word differently","commit_id":"c3636ab7555217142cfa163448e1aedf8da93fe9"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"89746d1bf457d852250ca572ccde7bce0af54f5d","unresolved":false,"context_lines":[{"line_number":109,"context_line":"            raise AssertionError(_(\u0027Invalid user %s or invalid password\u0027) %"},{"line_number":110,"context_line":"                                 user_id)"},{"line_number":111,"context_line":"        if not self._check_password(password, user_ref):"},{"line_number":112,"context_line":"            raise AssertionError(_(\u0027Invalid user %s or invalid password\u0027) %"},{"line_number":113,"context_line":"                                 user_id)"},{"line_number":114,"context_line":"        return identity.filter_user(user_ref.to_dict())"},{"line_number":115,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"ba15a1d1_cadac578","line":112,"updated":"2015-09-14 03:22:01.000000000","message":"ditto","commit_id":"c3636ab7555217142cfa163448e1aedf8da93fe9"}]}
