KiokuX::User::ID - L<KiokuDB::Role::ID> integration for user objects


KiokuX-User documentation Contained in the KiokuX-User distribution.

Index


Code Index:

NAME

Top

KiokuX::User::ID - KiokuDB::Role::ID integration for user objects

SYNOPSIS

Top

    with qw(KiokuX::User::ID);

DESCRIPTION

Top

This role provides an id attribute for user objects, and self registers in the KiokuDB directory with the object ID user:$user_id.

Using this role implies that user IDs are immutable.

METHODS

Top

kiokudb_object_id

Implements the required method from KiokuX::User::ID by prefixing the id attribute with user:.

id_for_user $username

Mangles the username into an ID by prefixing the string user:.

Can be overriden to provide custom namespacing.

Can also be used as a class method from the model:

    sub get_identity_by_username {
        my ( $self, $username ) = @_;

        my $object_id = MyFoo::Schema::Identity::Username->id_for_user($username);

        return $self->lookup($object_id);
    }

ATTRIBUTES

Top

id

This is the user's ID in the system. It is not the object ID, but the object ID is derived from it.


KiokuX-User documentation Contained in the KiokuX-User distribution.

#!/usr/bin/perl

package KiokuX::User::ID;
use MooseX::Role::Parameterized;

use namespace::clean -except => 'meta';

parameter id_attribute => (
    isa     => 'Str',
    default => 'id',
);

parameter user_prefix => (
    isa     => 'Str',
    default => 'user:',
);

role {
    my ($p) = @_;
    my $id_attr = $p->id_attribute;
    my $user_prefix = $p->user_prefix;

    with qw(KiokuDB::Role::ID);

    method id_for_user => sub {
        my ( $self, $id ) = @_;
        return $user_prefix . $id;
    };

    method kiokudb_object_id => sub {
        my $self = shift;
        $self->id_for_user($self->$id_attr);
    };

    has $id_attr => (
        isa      => "Str",
        is       => "ro",
        required => 1,
    );
};

__PACKAGE__

__END__

# ex: set sw=4 et: