class

KemalIdentity::Accounts::Notifier

Inherits Reference < Object

Delivery. The shard decides what to say and the application decides how to say it.

There is no SMTP here, no templates, and no default implementation that quietly does nothing — docs/00-scope.md puts all three out of scope, and a null default would turn a forgotten configuration into password reset emails that are never sent, discovered by a user who cannot get into their account.

deliver must return promptly

This is a contract, not a suggestion, and it is load-bearing for a security property.

Service#request_password_reset must take the same time whether or not the address exists, or it becomes an account oracle — somebody enumerates a customer list by timing the forgot-password form. The service equalises everything it controls, but if deliver opens an SMTP connection and waits, the existing-account path is a network round trip longer than the other, and the oracle is back.

So: enqueue and return. Write a row, push to a job queue, hand it to a background fiber — anything that does not block on somebody else's server.

Instance methods

deliver(notification : Notification) : Nil
Source