{"action":"created","issue":{"url":"https://api.github.com/repos/BroadleafCommerce/BroadleafCommerce/issues/356","labels_url":"https://api.github.com/repos/BroadleafCommerce/BroadleafCommerce/issues/356/labels{/name}","comments_url":"https://api.github.com/repos/BroadleafCommerce/BroadleafCommerce/issues/356/comments","events_url":"https://api.github.com/repos/BroadleafCommerce/BroadleafCommerce/issues/356/events","html_url":"https://github.com/BroadleafCommerce/BroadleafCommerce/pull/356","id":19328993,"number":356,"title":"Admin session expiration event can lead to loss of data","user":{"login":"phillipuniverse","id":684275,"avatar_url":"https://avatars.githubusercontent.com/u/684275?v=3","gravatar_id":"","url":"https://api.github.com/users/phillipuniverse","html_url":"https://github.com/phillipuniverse","followers_url":"https://api.github.com/users/phillipuniverse/followers","following_url":"https://api.github.com/users/phillipuniverse/following{/other_user}","gists_url":"https://api.github.com/users/phillipuniverse/gists{/gist_id}","starred_url":"https://api.github.com/users/phillipuniverse/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/phillipuniverse/subscriptions","organizations_url":"https://api.github.com/users/phillipuniverse/orgs","repos_url":"https://api.github.com/users/phillipuniverse/repos","events_url":"https://api.github.com/users/phillipuniverse/events{/privacy}","received_events_url":"https://api.github.com/users/phillipuniverse/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/BroadleafCommerce/BroadleafCommerce/labels/difficulty-medium","name":"difficulty-medium","color":"207de5"},{"url":"https://api.github.com/repos/BroadleafCommerce/BroadleafCommerce/labels/module-admin","name":"module-admin","color":"207de5"},{"url":"https://api.github.com/repos/BroadleafCommerce/BroadleafCommerce/labels/type-feature","name":"type-feature","color":"009800"}],"state":"open","locked":false,"assignee":{"login":"ncrum","id":3411402,"avatar_url":"https://avatars.githubusercontent.com/u/3411402?v=3","gravatar_id":"","url":"https://api.github.com/users/ncrum","html_url":"https://github.com/ncrum","followers_url":"https://api.github.com/users/ncrum/followers","following_url":"https://api.github.com/users/ncrum/following{/other_user}","gists_url":"https://api.github.com/users/ncrum/gists{/gist_id}","starred_url":"https://api.github.com/users/ncrum/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ncrum/subscriptions","organizations_url":"https://api.github.com/users/ncrum/orgs","repos_url":"https://api.github.com/users/ncrum/repos","events_url":"https://api.github.com/users/ncrum/events{/privacy}","received_events_url":"https://api.github.com/users/ncrum/received_events","type":"User","site_admin":false},"milestone":{"url":"https://api.github.com/repos/BroadleafCommerce/BroadleafCommerce/milestones/4","labels_url":"https://api.github.com/repos/BroadleafCommerce/BroadleafCommerce/milestones/4/labels","id":359642,"number":4,"title":"Reviewed - Not Yet Assigned","description":"Used as a planning bucket for tasks that the Broadleaf team has looked over and reviewed and has determined as relevant but has not yet prioritized it for a sprint.","creator":{"login":"bpolster","id":1189191,"avatar_url":"https://avatars.githubusercontent.com/u/1189191?v=3","gravatar_id":"","url":"https://api.github.com/users/bpolster","html_url":"https://github.com/bpolster","followers_url":"https://api.github.com/users/bpolster/followers","following_url":"https://api.github.com/users/bpolster/following{/other_user}","gists_url":"https://api.github.com/users/bpolster/gists{/gist_id}","starred_url":"https://api.github.com/users/bpolster/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bpolster/subscriptions","organizations_url":"https://api.github.com/users/bpolster/orgs","repos_url":"https://api.github.com/users/bpolster/repos","events_url":"https://api.github.com/users/bpolster/events{/privacy}","received_events_url":"https://api.github.com/users/bpolster/received_events","type":"User","site_admin":false},"open_issues":55,"closed_issues":5,"state":"open","created_at":"2013-06-19T22:00:04Z","updated_at":"2015-01-28T03:49:00Z","due_on":"2025-06-29T07:00:00Z","closed_at":null},"comments":16,"created_at":"2013-09-11T16:04:11Z","updated_at":"2015-01-30T23:27:12Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/BroadleafCommerce/BroadleafCommerce/pulls/356","html_url":"https://github.com/BroadleafCommerce/BroadleafCommerce/pull/356","diff_url":"https://github.com/BroadleafCommerce/BroadleafCommerce/pull/356.diff","patch_url":"https://github.com/BroadleafCommerce/BroadleafCommerce/pull/356.patch"},"body":"1. Edit an entity in the admin\r\n2. Spend enough time on the form to warrant a session expiration\r\n3. Submit the form\r\n\r\nResult is that the user is taken back to the login page since their session expired. However, after the user logs in, they go back to the edit page but all of new data they filled out is lost.\r\n\r\nPotential solutions:\r\n- Show a banner when the session has expired, something like \"Your session has expired, please save all data offline before continuing\"\r\n- Show a banner warning when the session is < 1min from expiring as well as after it has expired\r\n- Save the POST data on the redirect to the login page and resubmit the original POST after successful login (potential security risk?)"},"comment":{"url":"https://api.github.com/repos/BroadleafCommerce/BroadleafCommerce/issues/comments/72288725","html_url":"https://github.com/BroadleafCommerce/BroadleafCommerce/pull/356#issuecomment-72288725","issue_url":"https://api.github.com/repos/BroadleafCommerce/BroadleafCommerce/issues/356","id":72288725,"user":{"login":"bpolster","id":1189191,"avatar_url":"https://avatars.githubusercontent.com/u/1189191?v=3","gravatar_id":"","url":"https://api.github.com/users/bpolster","html_url":"https://github.com/bpolster","followers_url":"https://api.github.com/users/bpolster/followers","following_url":"https://api.github.com/users/bpolster/following{/other_user}","gists_url":"https://api.github.com/users/bpolster/gists{/gist_id}","starred_url":"https://api.github.com/users/bpolster/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bpolster/subscriptions","organizations_url":"https://api.github.com/users/bpolster/orgs","repos_url":"https://api.github.com/users/bpolster/repos","events_url":"https://api.github.com/users/bpolster/events{/privacy}","received_events_url":"https://api.github.com/users/bpolster/received_events","type":"User","site_admin":false},"created_at":"2015-01-30T23:27:11Z","updated_at":"2015-01-30T23:27:11Z","body":"@ncrum This looks great.\r\n\r\n@elbertbautista, can you provide a code review of this when you get a chance.    You can delegate to someone else to do testing for you but I'd like you to review the JS code.      You can follow my comments and action items from this thread and see if you have any additional concerns or feedback before we accept this change."}}