Homec4science

When logged-out users hit a "Login Required" dialog, try to choose a better…

Authored by epriestley <git@epriestley.com> on Dec 17 2015, 15:10.

Description

When logged-out users hit a "Login Required" dialog, try to choose a better "next" URI

Summary:
Ref T10004. After a user logs in, we send them to the "next" URI cookie if there is one, but currently don't always do a very good job of selecting a "next" URI, especially if they tried to do something with a dialog before being asked to log in.

In particular, if a logged-out user clicks an action like "Edit Blocking Tasks" on a Maniphest task, the default behavior is to send them to the standalone page for that dialog after they log in. This can be pretty confusing.

See T2691 and D6416 for earlier efforts here. At that time, we added a mechanism to manually override the default behavior, and fixed the most common links. This worked, but I'd like to fix the default beahvior so we don't need to remember to setObjectURI() correctly all over the place.

ApplicationEditor has also introduced new cases which are more difficult to get right. While we could get them right by using the override and being careful about things, this also motivates fixing the default behavior.

Finally, we have better tools for fixing the default behavior now than we did in 2013.

Instead of using manual overrides, have JS include an "X-Phabricator-Via" header in Ajax requests. This is basically like a referrer header, and will contain the page the user's browser is on.

In essentially every case, this should be a very good place (and often the best place) to send them after login. For all pages currently using setObjectURI(), it should produce the same behavior by default.

I'll remove the setObjectURI() mechanism in the next diff.

Test Plan: Clicked various workflow actions while logged out, saw "next" get set to a reasonable value, was redirected to a sensible, non-confusing page after login (the page with whatever button I clicked on it).

Reviewers: chad

Reviewed By: chad

Maniphest Tasks: T10004

Differential Revision: https://secure.phabricator.com/D14804

Details

Committed
epriestley <git@epriestley.com>Dec 17 2015, 17:30
Pushed
aubortJan 31 2017, 17:16
Parents
rPHa5d23c9f3e88: Allow custom fields to be ordered ascending or descending
Branches
Unknown
Tags
Unknown

Event Timeline

epriestley <git@epriestley.com> committed rPHe869e7df0b79: When logged-out users hit a "Login Required" dialog, try to choose a better… (authored by epriestley <git@epriestley.com>).Dec 17 2015, 17:30