Alex Vandiver


Jifty::LetMe - A way to expose single-link URLs to your applications


Create a new "LetMe" authentication object; it takes no parameters. It calls "_init" to do any initialization.

A LetMe is a way to provide a one-time-use URL for a particular purpose. All LetMe objects give you a way to validate a user's identity and to allow them a very small set of possible actions or page-access permissions.

For example, you can put a LetMe URL in an email to a new user, so that when they click on the URL you know that their email address is valid.

_init @_

Called with whatever "new" was called with. By default, does nothing.


Contains an app-specific "user" object.


If the user has presented a valid token, returns an (app-specific subclass of the) Jifty::CurrentUser object for the user who has the email address in $self->email. If no user has that email address, returns undef.

_user_from_email ADDRESS

Returns an (app-specific subclass of the) Jifty::CurrentUser object for the user who has the email address ADDRESS.


Returns an authentication checksum for the current combination of:



Generate a slightly more pronounceable version of the checksum using String::Koremutake. Due to hex -> integer limitations, this is imprecise and may vary depending on the platform it is used on; as such, it is deprecated.

from_token PATH

Parse a string of the form


      email =>,
      path  => 'update_task/23'
      until => 20050101,
      checksum_provided => bekidrikufryvagygefuba


Returns the "letme" token for this set of credentials. This should round trip cleanly with from_token


A variant of as_token that encodes the user's email address suitably for passing in a URL


Returns the fully qualified URL for this LetMe. It's composed of Jifty->web->url, "base_path" and "as_encoded_token"


By default, all "LetMe" actions live at URLs under '/let' inside your application. Override this subroutine to change that.

By default, it returns '/let/'


Returns true if the credentials the user presented validate OK. Returns false otherwise.


Returns true if the checksum the user provided is correct. Doesn't actually do much input checking. You want to call "validate"