731 karma · joined October 29, 2013
Sorry about that!
WorkOS only handles SSO, so all of our users are still stored in our own database. This is one of the big reasons we went with WorkOS as opposed to something like Auth0 or AWS Cognito.
SSO is free, and they offer other enterprise-focused features, like directory sync and audit trails.
It makes sure that you never pass a `LocationId` where a `UserId` is expected; the type system literally will not allow it.
It's amazing just how little friction there is for you to get an API endpoint backed by a datastore up and running. That being said, there are a bunch of unknowns. Having my entire application, even down the language it's implemented in, being proprietary is a little scary.
Will definitely be looking forward to playing around with this. Just as soon as I get my signup email ;)
> Our reservation business requires that contact data entities are only accepted if all of the following conditions are satisfied:
>
> - The e-mail address is valid
> - The phone number is valid
> - Either e-mail address, or phone number, or both are present
In this case, all of the above rules can be encoded into the type system itself. Here's how I would approach this particular problem: struct PhoneNumber(String);
impl PhoneNumber {
fn new(value: String) -> Result<Self, ValidationError> {
if is_valid_phone_number(value) {
Ok(Self(value))
} else {
Err(ValidationError)
}
}
}
struct EmailAddress(String);
impl EmailAddress {
fn new(value: String) -> Result<Self, ValidationError> {
if is_valid_email_address(value) {
Ok(Self(value))
} else {
Err(ValidationError)
}
}
}
enum ContactData {
PhoneOnly(PhoneNumber),
EmailOnly(EmailAddress),
PhoneAndEmail {
phone: PhoneNumber,
email: EmailAddress
}
}
This approach, when applied alongside Rust's modules and visibility modifiers, would make it impossible for any of these types to be in an invalid state.- Work less, achieve more
- No alcohol
- Read more
- Write more
- Practice my Mandarin
- Produce 1 song/week (https://weeklybeats.com/)
- Continue to make one thing every day
It also allows you to do really cool stuff like in their recursive routing example [2].
Currently upgrading my company's existing website, and was looking into WordPress as a CMS. The security concerns and the resource costs of using WordPress were key detractors, but this sounds like it could be the answer for us as well.
Because my college campus seems like the perfect place to test it out for a little induced chaos, but I'd rather not get in trouble with the network admins.