)]}'
{"keystone/api/users.py":[{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"6c55ecbf423ed2f17b2eaa437d92f3cd5d204667","unresolved":false,"context_lines":[{"line_number":206,"context_line":"        try:"},{"line_number":207,"context_line":"            PROVIDERS.identity_api.change_password("},{"line_number":208,"context_line":"                user_id\u003duser_id,"},{"line_number":209,"context_line":"                original_password\u003duser_data.get(\u0027original_password\u0027),"},{"line_number":210,"context_line":"                new_password\u003duser_data.get(\u0027password\u0027),"},{"line_number":211,"context_line":"                initiator\u003dself.audit_initiator)"},{"line_number":212,"context_line":"        except AssertionError as e:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_0fb5af19","line":209,"range":{"start_line":209,"start_character":34,"end_line":209,"end_character":68},"updated":"2018-10-31 02:40:26.000000000","message":"The input is not optional. So just use user_data[\u0027original_password\u0027]","commit_id":"b3dd6200d2a98920ecdb872bc8ad0441fa2b569c"},{"author":{"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},"change_message_id":"52806549eb02a983271a6927418c40fe01f5e5c8","unresolved":false,"context_lines":[{"line_number":206,"context_line":"        try:"},{"line_number":207,"context_line":"            PROVIDERS.identity_api.change_password("},{"line_number":208,"context_line":"                user_id\u003duser_id,"},{"line_number":209,"context_line":"                original_password\u003duser_data.get(\u0027original_password\u0027),"},{"line_number":210,"context_line":"                new_password\u003duser_data.get(\u0027password\u0027),"},{"line_number":211,"context_line":"                initiator\u003dself.audit_initiator)"},{"line_number":212,"context_line":"        except AssertionError as e:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_d52c2496","line":209,"range":{"start_line":209,"start_character":34,"end_line":209,"end_character":68},"in_reply_to":"3f79a3b5_0fb5af19","updated":"2018-11-13 22:43:25.000000000","message":"Done","commit_id":"b3dd6200d2a98920ecdb872bc8ad0441fa2b569c"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"6c55ecbf423ed2f17b2eaa437d92f3cd5d204667","unresolved":false,"context_lines":[{"line_number":207,"context_line":"            PROVIDERS.identity_api.change_password("},{"line_number":208,"context_line":"                user_id\u003duser_id,"},{"line_number":209,"context_line":"                original_password\u003duser_data.get(\u0027original_password\u0027),"},{"line_number":210,"context_line":"                new_password\u003duser_data.get(\u0027password\u0027),"},{"line_number":211,"context_line":"                initiator\u003dself.audit_initiator)"},{"line_number":212,"context_line":"        except AssertionError as e:"},{"line_number":213,"context_line":"            raise ks_exception.Unauthorized("}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_cf3497ae","line":210,"updated":"2018-10-31 02:40:26.000000000","message":"ditto","commit_id":"b3dd6200d2a98920ecdb872bc8ad0441fa2b569c"},{"author":{"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},"change_message_id":"52806549eb02a983271a6927418c40fe01f5e5c8","unresolved":false,"context_lines":[{"line_number":207,"context_line":"            PROVIDERS.identity_api.change_password("},{"line_number":208,"context_line":"                user_id\u003duser_id,"},{"line_number":209,"context_line":"                original_password\u003duser_data.get(\u0027original_password\u0027),"},{"line_number":210,"context_line":"                new_password\u003duser_data.get(\u0027password\u0027),"},{"line_number":211,"context_line":"                initiator\u003dself.audit_initiator)"},{"line_number":212,"context_line":"        except AssertionError as e:"},{"line_number":213,"context_line":"            raise ks_exception.Unauthorized("}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_f5292083","line":210,"in_reply_to":"3f79a3b5_cf3497ae","updated":"2018-11-13 22:43:25.000000000","message":"Done","commit_id":"b3dd6200d2a98920ecdb872bc8ad0441fa2b569c"}],"keystone/identity/schema.py":[{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"6c55ecbf423ed2f17b2eaa437d92f3cd5d204667","unresolved":false,"context_lines":[{"line_number":80,"context_line":""},{"line_number":81,"context_line":"_password_change_properties \u003d {"},{"line_number":82,"context_line":"    \u0027original_password\u0027: {"},{"line_number":83,"context_line":"        \u0027type\u0027: \u0027string\u0027"},{"line_number":84,"context_line":"    },"},{"line_number":85,"context_line":"    \u0027password\u0027: {"},{"line_number":86,"context_line":"        \u0027type\u0027: \u0027string\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_8fda1f48","line":83,"updated":"2018-10-31 02:40:26.000000000","message":"it is good to add max length check using CONF.identity.max_password_length as well.\nLike:\n\n_password_change_properties \u003d {\n    \u0027original_password\u0027: {\n        \u0027type\u0027: \u0027string\u0027\n    },\n    \u0027password\u0027: {\n        \u0027type\u0027: \u0027string\u0027\n    }\n}\nif CONF.strict_password_check:\n    _password_change_properties[\u0027original_password\u0027][\u0027maxLength\u0027] \u003d CONF.identity.max_password_length\n\n\nAnd \"pattern\" using CONF.security_compliance.password_regex. Then the related validation code can be removed as well.","commit_id":"b3dd6200d2a98920ecdb872bc8ad0441fa2b569c"},{"author":{"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},"change_message_id":"52806549eb02a983271a6927418c40fe01f5e5c8","unresolved":false,"context_lines":[{"line_number":80,"context_line":""},{"line_number":81,"context_line":"_password_change_properties \u003d {"},{"line_number":82,"context_line":"    \u0027original_password\u0027: {"},{"line_number":83,"context_line":"        \u0027type\u0027: \u0027string\u0027"},{"line_number":84,"context_line":"    },"},{"line_number":85,"context_line":"    \u0027password\u0027: {"},{"line_number":86,"context_line":"        \u0027type\u0027: \u0027string\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_95446c50","line":83,"in_reply_to":"3f79a3b5_8fda1f48","updated":"2018-11-13 22:43:25.000000000","message":"Done","commit_id":"b3dd6200d2a98920ecdb872bc8ad0441fa2b569c"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"5ad20be1768c28cb2750b5ce0ed680c9936e9292","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from keystone.identity.backends import resource_options as ro"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"CONF \u003d cfg.CONF"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"_identity_name \u003d {"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_e0bfd6a9","line":20,"range":{"start_line":20,"start_character":0,"end_line":20,"end_character":15},"updated":"2018-11-19 21:28:25.000000000","message":"Shouldn\u0027t this be using:\n\n  import keystone.conf\n  ...\n  CONF \u003d keystone.conf.CONF\n\nIs there a particular reason we\u0027re pulling from oslo.config directly?","commit_id":"79e8a0451549b90ae114149405bede814334654d"},{"author":{"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},"change_message_id":"18e605ba4037f23275529fdf8d8120d7e6731917","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from keystone.identity.backends import resource_options as ro"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"CONF \u003d cfg.CONF"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"_identity_name \u003d {"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_04d142f9","line":20,"range":{"start_line":20,"start_character":0,"end_line":20,"end_character":15},"in_reply_to":"3f79a3b5_e0bfd6a9","updated":"2018-11-27 20:58:33.000000000","message":"Bad copy/paste, fixed.","commit_id":"79e8a0451549b90ae114149405bede814334654d"}]}
