aboutsummaryrefslogtreecommitdiffstats
path: root/perllib/DBIx/Class/FixMyStreet/EncodedColumn.pm
diff options
context:
space:
mode:
authorMarius Halden <marius.h@lden.org>2019-10-30 19:28:55 +0100
committerMarius Halden <marius.h@lden.org>2019-10-30 19:28:55 +0100
commit377bd96aab7cad3434185c30eb908c9da447fe40 (patch)
tree7ec5527e205d5b62caaa862a7de8cd25199c8bf0 /perllib/DBIx/Class/FixMyStreet/EncodedColumn.pm
parent56f61b1441070aa0b9ddcfc74aca46c20313609f (diff)
parent92b253904062edd533e55c22824de6fd01e2f7c1 (diff)
Merge tag 'v2.6' into fiksgatami-dev
Diffstat (limited to 'perllib/DBIx/Class/FixMyStreet/EncodedColumn.pm')
-rw-r--r--perllib/DBIx/Class/FixMyStreet/EncodedColumn.pm48
1 files changed, 48 insertions, 0 deletions
diff --git a/perllib/DBIx/Class/FixMyStreet/EncodedColumn.pm b/perllib/DBIx/Class/FixMyStreet/EncodedColumn.pm
new file mode 100644
index 000000000..0d86c7639
--- /dev/null
+++ b/perllib/DBIx/Class/FixMyStreet/EncodedColumn.pm
@@ -0,0 +1,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