Author image Guillermo Roditi
and 1 contributors

NAME

DBIx::Class::DigestColumns - Automatic digest columns

SYNOPSIS

In your DBIx::Class table class:

  __PACKAGE__->load_components(qw/DigestColumns ... Core/);

  __PACKAGE__->digestcolumns(
      columns   => [qw/ password /],
      algorithm => 'MD5',
      encoding  => 'base64',
      dirty     => 1,
      auto      => 1,
  );

Note: The component needs to be loaded before Core.

Alternatively you could call each method individually

  __PACKAGE__->digest_columns(qw/ password /);
  __PACKAGE__->digest_algorithm('MD5');
  __PACKAGE__->digest_encoding('base64');
  __PACKAGE__->digest_dirty(1);
  __PACKAGE__->digest_auto(1);

DESCRIPTION

This DBIx::Class component can be used to automatically insert a message digest of selected columns. By default DigestColumns will use Digest::MD5 to insert a 128-bit hexadecimal message digest of the column value.

The length of the inserted string will be 32 and it will only contain characters from this set: '0'..'9' and 'a'..'f'.

If you would like to use a specific digest module to create your message digest, you can set "digest_algorithm":

  __PACKAGE__->digest_algorithm('SHA-1');

METHODS

digestcolumns

  __PACKAGE__->digestcolumns(
      columns   => [qw/ password /],
      algorithm => $algorithm',
      encoding  => $encoding,
      dirty     => 1,
      auto      => 1,
  );

Calls "digest_columns", "digest_algorithm", and "digest_encoding" and "digest_auto" if the corresponding argument is defined.

digest_columns

Takes a list of columns to be convert to a message digest during insert.

  __PACKAGE__->digest_columns(qw/ password /);

digest_algorithm

Takes the name of a digest algorithm to be used to calculate the message digest.

  __PACKAGE__->digest_algorithm('SHA-1');

If a suitible digest module could not be loaded an exception will be thrown.

Supported digest algorithms are:

  MD5
  MD4
  MD2
  SHA-1
  SHA-256
  SHA-384
  SHA-512
  CRC-16
  CRC-32
  CRC-CCITT
  HMAC-SHA-1
  HMAC-MD5
  Whirlpool
  Adler-32

digest_algorithm defaults to MD5.

digest_encoding

Selects the encoding to use for the message digest.

  __PACKAGE__->digest_encoding('base64');

Possilbe encoding schemes are:

  binary
  hex
  base64

digest_encoding defaults to hex.

_digest_column_values

Handles the actual encoding of column values into digests.

This method is called by insert and update when automatic digests are turned on. If dirty is enabled it will only digest the values of dirtied columns.

digest_auto

  __PACKAGE__->digest_auto(1);

Turns on and off automatic digest columns. When on, this feature makes all UPDATEs and INSERTs automatically insert a message digest of selected columns.

The default is for digest_auto is to be on.

digest_dirty

  __PACKAGE__->digest_dirty(1);

Turns on and off the limiting of automatic digests to only dirty columns. When on, only columns that have been dirtied will have their values digested during UPDATEs and INSERTs. If auto is set to off this option does nothing.

The default is for digest_dirty is to be off to mantain compatibility with older versions of this module.

EXTENDED METHODS

The following DBIx::Class::Row methods are extended by this module:-

insert
update

SEE ALSO

DBIx::Class, Digest

AUTHOR

Tom Kirkpatrick (tkp) <tkp@cpan.org>

With contributions from Guillermo Roditi (groditi) <groditi@cpan.org>

LICENSE

You may distribute this code under the same terms as Perl itself.