)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"c53490c70243a80f10f2f9950c3fc079944ed72e","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Automatically redirect to the password change when it\u0027s expired"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Unfortunately the only way we can know the user_id at this point is"},{"line_number":10,"context_line":"by parsing the error message."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"I also refactored the exceptions in openstack_auth to make them use"},{"line_number":13,"context_line":"different classes (but one common superclass)."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"7faddb67_6f332115","line":10,"range":{"start_line":9,"start_character":0,"end_line":10,"end_character":29},"updated":"2019-08-07 09:34:37.000000000","message":":(","commit_id":"349fca9d5a4afe306b35f6695b4902f58eedfb24"},{"author":{"_account_id":8648,"name":"Radomir Dopieralski","email":"openstack@dopieralski.pl","username":"thesheep"},"change_message_id":"6f9da76482608a2288c59442d4159309b63d2333","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Automatically redirect to the password change when it\u0027s expired"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Unfortunately the only way we can know the user_id at this point is"},{"line_number":10,"context_line":"by parsing the error message."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"I also refactored the exceptions in openstack_auth to make them use"},{"line_number":13,"context_line":"different classes (but one common superclass)."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"7faddb67_4136d8b6","line":10,"range":{"start_line":9,"start_character":0,"end_line":10,"end_character":29},"in_reply_to":"7faddb67_6f332115","updated":"2019-08-13 11:42:58.000000000","message":"Done","commit_id":"349fca9d5a4afe306b35f6695b4902f58eedfb24"}],"openstack_auth/plugin/base.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"de319f0e3c1fac6461b28a751da9b35b80a916ef","unresolved":false,"context_lines":[{"line_number":138,"context_line":"                    _(\u0027Password expired.\u0027))"},{"line_number":139,"context_line":"                mark \u003d \"for user: \""},{"line_number":140,"context_line":"                pos \u003d msg.find(mark) + len(mark)"},{"line_number":141,"context_line":"                exc.user_id \u003d msg[pos:pos + 32]"},{"line_number":142,"context_line":"                raise exc"},{"line_number":143,"context_line":"            msg \u003d _(\u0027Invalid credentials.\u0027)"},{"line_number":144,"context_line":"            raise exceptions.KeystoneCredentialsException(msg)"}],"source_content_type":"text/x-python","patch_set":9,"id":"5faad753_ad5a0627","line":141,"range":{"start_line":141,"start_character":44,"end_line":141,"end_character":46},"updated":"2019-09-12 09:17:32.000000000","message":"In case of works for older deployments which were deployed before keystone started to use UUID for user ID (IIRC integer UUID was used before), exc.user_id will have a period after the user ID extracted, so perhaps the password change form does not work.\n\nI think this is a good compromise at this point, but it is better to have a comment here and also document it in the setting guide.","commit_id":"5cc5c08f74c1fefd6eb14a645aeb1aebb7535974"},{"author":{"_account_id":8648,"name":"Radomir Dopieralski","email":"openstack@dopieralski.pl","username":"thesheep"},"change_message_id":"e67115909e381408887708556bf813f863556fe6","unresolved":false,"context_lines":[{"line_number":138,"context_line":"                    _(\u0027Password expired.\u0027))"},{"line_number":139,"context_line":"                mark \u003d \"for user: \""},{"line_number":140,"context_line":"                pos \u003d msg.find(mark) + len(mark)"},{"line_number":141,"context_line":"                exc.user_id \u003d msg[pos:pos + 32]"},{"line_number":142,"context_line":"                raise exc"},{"line_number":143,"context_line":"            msg \u003d _(\u0027Invalid credentials.\u0027)"},{"line_number":144,"context_line":"            raise exceptions.KeystoneCredentialsException(msg)"}],"source_content_type":"text/x-python","patch_set":9,"id":"5faad753_bf3d1090","line":141,"range":{"start_line":141,"start_character":44,"end_line":141,"end_character":46},"in_reply_to":"5faad753_ad5a0627","updated":"2019-09-16 06:31:59.000000000","message":"Thanks, I didn\u0027t know about different user_id format. I will make this use a regular expression to extract the user_id without assuming its length.","commit_id":"5cc5c08f74c1fefd6eb14a645aeb1aebb7535974"}],"openstack_auth/utils.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"c53490c70243a80f10f2f9950c3fc079944ed72e","unresolved":false,"context_lines":[{"line_number":139,"context_line":""},{"line_number":140,"context_line":"def allow_expired_passowrd_change():"},{"line_number":141,"context_line":"    \"\"\"Checks if users should be able to change their expired passwords.\"\"\""},{"line_number":142,"context_line":"    return getattr(settings, \u0027ALLOW_USERS_CHANGE_EXPIRED_PASSWORD\u0027, True)"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"def is_websso_enabled():"}],"source_content_type":"text/x-python","patch_set":6,"id":"7faddb67_ef07111d","line":142,"range":{"start_line":142,"start_character":30,"end_line":142,"end_character":65},"updated":"2019-08-07 09:34:37.000000000","message":"Please, add this config option to the documentation","commit_id":"349fca9d5a4afe306b35f6695b4902f58eedfb24"},{"author":{"_account_id":8648,"name":"Radomir Dopieralski","email":"openstack@dopieralski.pl","username":"thesheep"},"change_message_id":"6f9da76482608a2288c59442d4159309b63d2333","unresolved":false,"context_lines":[{"line_number":139,"context_line":""},{"line_number":140,"context_line":"def allow_expired_passowrd_change():"},{"line_number":141,"context_line":"    \"\"\"Checks if users should be able to change their expired passwords.\"\"\""},{"line_number":142,"context_line":"    return getattr(settings, \u0027ALLOW_USERS_CHANGE_EXPIRED_PASSWORD\u0027, True)"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"def is_websso_enabled():"}],"source_content_type":"text/x-python","patch_set":6,"id":"7faddb67_a1b9cc15","line":142,"range":{"start_line":142,"start_character":30,"end_line":142,"end_character":65},"in_reply_to":"7faddb67_7b30c39f","updated":"2019-08-13 11:42:58.000000000","message":"Done","commit_id":"349fca9d5a4afe306b35f6695b4902f58eedfb24"},{"author":{"_account_id":8648,"name":"Radomir Dopieralski","email":"openstack@dopieralski.pl","username":"thesheep"},"change_message_id":"f4eaccf15a5c992c45c9e5a89637d3e2974a2922","unresolved":false,"context_lines":[{"line_number":139,"context_line":""},{"line_number":140,"context_line":"def allow_expired_passowrd_change():"},{"line_number":141,"context_line":"    \"\"\"Checks if users should be able to change their expired passwords.\"\"\""},{"line_number":142,"context_line":"    return getattr(settings, \u0027ALLOW_USERS_CHANGE_EXPIRED_PASSWORD\u0027, True)"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"def is_websso_enabled():"}],"source_content_type":"text/x-python","patch_set":6,"id":"7faddb67_8603ea10","line":142,"range":{"start_line":142,"start_character":30,"end_line":142,"end_character":65},"in_reply_to":"7faddb67_a1b9cc15","updated":"2019-08-22 09:52:47.000000000","message":"The documentation is added with https://review.opendev.org/#/c/676167/","commit_id":"349fca9d5a4afe306b35f6695b4902f58eedfb24"},{"author":{"_account_id":8648,"name":"Radomir Dopieralski","email":"openstack@dopieralski.pl","username":"thesheep"},"change_message_id":"93f88847f85e5a130e328fb37d159ed1519d4025","unresolved":false,"context_lines":[{"line_number":139,"context_line":""},{"line_number":140,"context_line":"def allow_expired_passowrd_change():"},{"line_number":141,"context_line":"    \"\"\"Checks if users should be able to change their expired passwords.\"\"\""},{"line_number":142,"context_line":"    return getattr(settings, \u0027ALLOW_USERS_CHANGE_EXPIRED_PASSWORD\u0027, True)"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"def is_websso_enabled():"}],"source_content_type":"text/x-python","patch_set":6,"id":"7faddb67_7b30c39f","line":142,"range":{"start_line":142,"start_character":30,"end_line":142,"end_character":65},"in_reply_to":"7faddb67_ef07111d","updated":"2019-08-07 12:49:06.000000000","message":"I will add the documentation, defaults in settings.py and release notes in a follow-up patch shortly.","commit_id":"349fca9d5a4afe306b35f6695b4902f58eedfb24"}]}
