obsidiansystems / rhyolite

BSD 3-Clause "New" or "Revised" License
26 stars 17 forks source link

Make authentication easier to use and fix some things about ErrorV #213

Closed cgibbard closed 5 months ago

cgibbard commented 5 months ago

The forced polymorphism in handlePersonalAuthMapQuery was preventing use of ErrorV for handling authorization failures (because its operations are intentionally monomorphic).

liftErrorV was not a good primitive to make queries, it would have been fine for reporting success, but did not explicitly register interest in the error part. Because of that, cropV would have quietly deleted the errors from the view. I'd be surprised if anything using this managed to avoid this pitfall.

As such, liftErrorV has been replaced by two new primitives: queryErrorV for registering interest in a view wrapped in ErrorV, and successErrorV for constructing a successful Identity view.

I also removed unsafeProjectE / unsafeProjectV from ErrorV rather than reworking them because the things they did were not entirely sensible to begin with:

ali-abrar commented 5 months ago

Released as https://github.com/obsidiansystems/rhyolite/releases/tag/v1.1.0.0