Jifty::Plugin::OAuth::Token - Jifty::Plugin::OAuth::Token documentation


Jifty-Plugin-OAuth documentation Contained in the Jifty-Plugin-OAuth distribution.

Index


Code Index:

DESCRIPTION

Top

This just provides some helper methods for both token classes to use

generate_token

This will create a randomly generated 20-character token for use as a request or access token. The string is hexadecimal.

This does not check for uniqueness.

before_create

This does some checks and provides some defaults.

It tries a number of times to create a unique token using generate_token. If that fails, this method will DIE.

It will also create a secret using generate_token.

Finally, it will create a default valid_until of 1 hour from now.


Jifty-Plugin-OAuth documentation Contained in the Jifty-Plugin-OAuth distribution.
#!/usr/bin/env perl
package Jifty::Plugin::OAuth::Token;
use strict;
use warnings;
use Scalar::Util 'blessed';

sub generate_token {
    return join '', map { unpack('H2', chr(int rand 256)) } 1..10;
}

sub before_create {
    my ($self, $attr) = @_;

    # attempt 20 times to create a unique token string
    for (1..20) {
        $attr->{token} = generate_token();
        my $token = $self->new(current_user => Jifty::CurrentUser->superuser);
        $token->load_by_cols(token => $attr->{token});
        last if !$token->id;
        delete $attr->{token};
    }
    if (!defined $attr->{token}) {
        die "Failed 20 times to create a unique token. Giving up.";
        return;
    }

    # generate a secret. need not be unique, just hard to guess
    $attr->{secret} = generate_token();

    # default the lifetime of this token to 1 hour
    $attr->{valid_until} ||= DateTime->now->add(hours => 1);

    return 1;
}

1;