aboutsummaryrefslogtreecommitdiffstats
path: root/perllib/DBIx/Class/FixMyStreet/EncodedColumn.pm
blob: 0d86c763964e1a0bc7a1da05e958a473d72e51af (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
package DBIx::Class::FixMyStreet::EncodedColumn;

use strict;
use warnings;

use base qw/DBIx::Class::EncodedColumn/;

# mySociety override to allow direct setting without double encryption
sub set_column {
  my $self = shift;
  return DBIx::Class::Row::set_column($self, @_) unless defined $_[1] and not defined $_[2];
  $self->next::method(@_);
}

1;

__END__;

=head1 NAME

DBIx::Class::FixMyStreet::EncodedColumn - Automatically encode columns

=head1 SYNOPSIS

The same as DBIx::Class::EncodedColumn, but adding an extra optional second
argument to set_column to allow skipping encryption (so if we hold an
already-hashed password, we can set it directly).

In your application code:

   $row->password('plaintext');
   $row->password('hashed-password', 1);

=head1 EXTENDED METHODS

The following L<DBIx::Class::Row> methods are extended by this module:

=over 4

=item B<set_column> - Encode values whenever column is set.

=back

=head1 SEE ALSO

L<DBIx::Class::EncodedColumn>, L<DBIx::Class>

=cut