Secret is now checked against bcrypt, default cost now 13
New AuthReason::BadKey
Meant to give us more specific auth responses but main isn't dealing w/ it yet
More generally members now has a proper looking insert new member function
Added new combinational permision for basic users
Reworked DATBASE_URL initialization for the API's environment variable
Nearly there to conditionally running the server, only need to add one more guard
* send_message fails when a non-existant channel is specified
* send_message now works with existant channel
* send_message: notifies client of bad channel parameters
* send_message: sends a generic 500 on every other error
* create channel now responds correctly given various parameters
* insert channel now errors out properly with ? syntax
* new uses added to align with sql types
Base member creation being added in this commit notes to follow
struct Member has had its field types changed to db_types::* types
Member::to_json was added to support simple json serialization into responses
struct InsertableMember added because `id` is generated by SQL for us
- this means we have to do two queries 1 to insert and 2 to fetch
- mysql_async does not provide an inlined way of fetching a recently added row
func general_new_user is only checking for a `name`parameter
- falls back to a basic default name for those that don't set a name on jooin
- handles its own sub errors so the main dispatcher doesn't care about after move
Generally more explicit behavior is provided
*NOTE: if this call succeeds then we have fully authenticated and subsequent calls should have acccess to "secret" in the serialized params structure, thus unwraps should be fine as they'll be proven via informal induction