google-nomulus/java/google/registry
guyben 6bddd5a8cb Send the "resource" ID in each resource action
This is an intermediate CL, part of the Registrar Console cleanup.

TL;DR:
- the current state: resource.js points to a resource TYPE on the server (only registrars can be resources right now), but the specific resource is selected based on the user (we select the "first resource of this type that the user has access to)
- new state: resource.js points to a SPECIFIC resource (TYPE + ID).

In this CL the server still chooses the resource like before (first one that user has access to) but we make sure the returned resource is the same one we requested.

In a subsequent CL we will use the requested ID to load the resource, and then make sure the user has access to that resource.

---------------------------

When loading the RegistrarConsole HTML page, the server determines which clientId belongs to the user ("guesses" it by looking for the first registrar that has this user as contact). It sends the relevant clientId back with the page load.

However, this information isn't currently used in the JS requests to read / update the registrar. Instead, currently the client ID is guessed again for each JS access to the server. It is also saved again in the client's "session" cookie.

As a result, it is theoretically possible to have the JS access a different clientID than the original page load (not likely, since it requires a single user registered for multiple registrars AND that the contacts change for the original registrar).

So our goal is to only have a single clientID "value" instead of the 3 we currently have for JS requests (the one from the initial page load, the one saved in the session cookie, the one guessed on the JS request)

As a first step, we send over the "initial page load" clientId on every JS request, and make sure the "session + guessed" value is equal to that one. Later we will remove the "session+guessed" values from the RegistrarSettings, using the "initial page load" clientID instead.

In addition to the "nicer code" implications, having the clientID from the initial page load always used means it'll be easy to have a clientID selection option for users who have access to multiple clientIDs (such as admins)

SECURITY NOTE:the choice of clientID has no security implication since we make sure the user has access to the clientID no matter how we actually choose the clientID on every single server request.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=214459506
2018-10-03 11:55:50 -04:00
..
backup Clean up third_party imports in BUILD files 2018-07-14 01:11:51 -04:00
batch Delete the verify entity integrity mapreduce 2018-09-20 11:19:36 -04:00
beam Handle Purchase Order numbers explicitly in billing pipeline 2018-09-20 11:19:36 -04:00
bigquery Use @DefaultCredential for Cloud API access in GAE 2018-09-20 11:19:36 -04:00
builddefs Remove the deprecated, now no-op, "data" transition 2018-08-10 13:44:25 -04:00
config Use @DefaultCredential for Cloud API access in GAE 2018-09-20 11:19:36 -04:00
cron Clean up third_party imports in BUILD files 2018-07-14 01:11:51 -04:00
dns Update dependencies to satisfy strictness and remove -jpl_strict_deps feature 2018-09-14 21:33:08 -04:00
env Delete the verify entity integrity mapreduce 2018-09-20 11:19:36 -04:00
export Use @DefaultCredential for Cloud API access in GAE 2018-09-20 11:19:36 -04:00
flows Remove checking of SNI headers 2018-09-14 21:34:44 -04:00
gcs Clean up annotation imports in BUILD files 2018-06-27 15:28:53 -04:00
groups Refactor DelegatedCredential provisioning for GSuite domains 2018-09-11 14:18:41 -04:00
idn Update IDN tables to comply with https://www.iana.org/help/idn-repository-procedure 2018-02-01 21:59:14 -05:00
keyring Introduce simplified Default credential provision 2018-09-08 00:16:09 -04:00
loadtest Clean up annotation imports in BUILD files 2018-06-27 15:28:53 -04:00
mapreduce Use locking on async mapreduces 2018-08-10 13:44:25 -04:00
model Index the allocation token's redemption history entry field 2018-10-03 11:52:31 -04:00
module Use shorter includes on DNS writer packages 2018-09-20 11:19:36 -04:00
monitoring/whitebox Use @DefaultCredential for Cloud API access in GAE 2018-09-20 11:19:36 -04:00
pricing Clean up third_party imports in BUILD files 2018-07-14 01:11:51 -04:00
proxy Move GCP proxy code to the old [] proxy's location 2018-09-20 11:19:36 -04:00
rdap RDAP: Add registrar entities to nameserver query results 2018-09-08 00:08:29 -04:00
rde Move the RDE TAR file encoding to a dedicated file 2018-08-10 13:46:48 -04:00
reporting Use @DefaultCredential for Cloud API access in GAE 2018-09-20 11:19:36 -04:00
request Refactor DelegatedCredential provisioning for GSuite domains 2018-09-11 14:18:41 -04:00
security Improve internal build system speed 2018-06-27 15:28:52 -04:00
storage/drive Clean up third_party imports in BUILD files 2018-07-14 01:11:51 -04:00
tldconfig/idn Clean up third_party imports in BUILD files 2018-07-14 01:11:51 -04:00
tmch Clean up annotation imports in BUILD files 2018-06-27 15:28:53 -04:00
tools Add nomulus command for deleting AllocationTokens 2018-10-03 11:54:10 -04:00
ui Send the "resource" ID in each resource action 2018-10-03 11:55:50 -04:00
util Add newline after closing boundary in multipart upload of LORDN 2018-09-14 11:49:12 -04:00
whois Clean up annotation imports in BUILD files 2018-06-27 15:28:53 -04:00
xjc Run bazel installer as a argument to bash 2018-08-10 13:44:25 -04:00
xml Pretty-print actual XML in tests 2018-07-14 01:37:03 -04:00
BUILD Remove deprecated DNS subsystem 2018-09-14 12:01:08 -04:00
repositories.bzl Remove references to stale domain-registry GCS repo 2018-08-10 16:01:51 -04:00