* Add mechanism for bundling UI assets.
The scripts/uigen.sh script will check out the UI repo, build assets,
create a static assets file, and clean up.
The dev Makefile target has been modified to run this script if no
assets file is found. There is also a build-ui target that will
unilaterally update (the dev target only builds if the file isn't found,
but doesn't update).
The handler has been updated to add the default org ID as a header if
the request path is "/".
Co-authored-by: Randall Morey <randall@randallmorey.com>
I realized we can handle the special case of `/index.html` by ensuring
that `/` does the right thing because that's _also_ standard behavior to
fetch `/index.html`. As a result this allows a lot of simplification.
This removes the ability for a grant string to switch projects, in
accordance with our updated design. It mostly removes code, with a few
test fixes, and also adds one additional check (and test) to ensure a
grant errors rather than do-nothing succeeds if both id and type are
empty.
* Create the organization Get handler.
* Added org listing.
* Make sure the cmp.Diff always sorts the returned organizations before comparing.
* Connect organization service to the Controller handler.
This adds parsing and validation for grant strings along with the ability to create canonical JSON and text strings from a grant.
It also adds an ACL implementation, allowing a collection of grant strings to then be checked against a resource/action tuple and indicate if it's allowed.
Note that only specific sets of provided data in grant strings is allowed. This vastly simplifies logic.
Test coverage is 100%.
A future update will consolidate and migrate types between this and IAM but I didn't want to mix that in with this.
* Create user handler stuff.
* Fixing Not Found errors from DB.
* Fixing param names.
* Update the proto's go package generation.
* Generate the user resource.
* Adding SDK methods for users.
* Fix the base type of Users and add tests.
* Connect user service to the controller handler.
* Attach the default org to the Test Controller's client.
* Take into account the provided request paths when the client builds the org/project path prefix.
* Adding comments to the API.
* rename repo function to repoFn.
* Fix typo in update mask errors.
* Clean up tests.
* Remove special checks for request url content in the api client and fix CORS test.
* Invalid Argument errors now return a per field error message.
* Creating an API error struct.
* SDK uses field error details proto.
* Adding tests specifically for handler helper error messages resulting in expected API output.
* Inlining the error checks into the table driven tests. Use protocmp for assertions to make printing out diffs easier to parse.
* Aggregate the invalid argument fields detected to be wrong.
* Make the returned order of fields deterministic in the error details..
* Fixing formatting issue in errors_test.go.
* Test to confirm unimplemented results in a 405 and not 404.