]> iEval git - gruntmaster-data.git/blobdiff - lib/Gruntmaster/Data/Result/User.pm
Purge affected pages on insert/update/delete
[gruntmaster-data.git] / lib / Gruntmaster / Data / Result / User.pm
index 740d87a88605e13a360d2b932697f873e92be16f..73fe6abae0088e7d0c7229e875139fff209110c6 100644 (file)
@@ -6,7 +6,7 @@ package Gruntmaster::Data::Result::User;
 
 =head1 NAME
 
-Gruntmaster::Data::Result::User
+Gruntmaster::Data::Result::User - List of users
 
 =cut
 
@@ -28,16 +28,36 @@ __PACKAGE__->table("users");
   data_type: 'text'
   is_nullable: 0
 
+=head2 passphrase
+
+  data_type: 'text'
+  is_nullable: 1
+
+RFC2307-encoded passphrase
+
+=head2 admin
+
+  data_type: 'boolean'
+  default_value: false
+  is_nullable: 0
+
 =head2 name
 
   data_type: 'text'
   is_nullable: 1
 
+Full name of user
+
 =head2 email
 
   data_type: 'text'
   is_nullable: 1
 
+=head2 phone
+
+  data_type: 'text'
+  is_nullable: 1
+
 =head2 town
 
   data_type: 'text'
@@ -53,20 +73,30 @@ __PACKAGE__->table("users");
   data_type: 'text'
   is_nullable: 1
 
+Highschool, Undergraduate, Master, Doctorate or Other
+
 =head2 lastjob
 
   data_type: 'bigint'
   is_nullable: 1
 
+Unix time when this user last submitted a job
+
 =cut
 
 __PACKAGE__->add_columns(
   "id",
   { data_type => "text", is_nullable => 0 },
+  "passphrase",
+  { data_type => "text", is_nullable => 1 },
+  "admin",
+  { data_type => "boolean", default_value => \"false", is_nullable => 0 },
   "name",
   { data_type => "text", is_nullable => 1 },
   "email",
   { data_type => "text", is_nullable => 1 },
+  "phone",
+  { data_type => "text", is_nullable => 1 },
   "town",
   { data_type => "text", is_nullable => 1 },
   "university",
@@ -91,6 +121,21 @@ __PACKAGE__->set_primary_key("id");
 
 =head1 RELATIONS
 
+=head2 contest_statuses
+
+Type: has_many
+
+Related object: L<Gruntmaster::Data::Result::ContestStatus>
+
+=cut
+
+__PACKAGE__->has_many(
+  "contest_statuses",
+  "Gruntmaster::Data::Result::ContestStatus",
+  { "foreign.owner" => "self.id" },
+  { cascade_copy => 0, cascade_delete => 0 },
+);
+
 =head2 contests
 
 Type: has_many
@@ -136,6 +181,21 @@ __PACKAGE__->has_many(
   { cascade_copy => 0, cascade_delete => 0 },
 );
 
+=head2 problem_statuses
+
+Type: has_many
+
+Related object: L<Gruntmaster::Data::Result::ProblemStatus>
+
+=cut
+
+__PACKAGE__->has_many(
+  "problem_statuses",
+  "Gruntmaster::Data::Result::ProblemStatus",
+  { "foreign.owner" => "self.id" },
+  { cascade_copy => 0, cascade_delete => 0 },
+);
+
 =head2 problems
 
 Type: has_many
@@ -152,9 +212,59 @@ __PACKAGE__->has_many(
 );
 
 
-# Created by DBIx::Class::Schema::Loader v0.07039 @ 2014-03-06 12:41:16
-# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:CHRtUlZf3hs+lg6Nqi2LPA
+# Created by DBIx::Class::Schema::Loader v0.07042 @ 2014-12-19 16:54:00
+# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:LiA2+ZpTTelwZJtFpZRsbw
+
+use Class::Method::Modifiers qw/after/;
+
+after qw/insert update delete/ => sub {
+       my ($self) = @_;
+       Gruntmaster::Data::purge '/us/';
+       Gruntmaster::Data::purge '/us/' . $self->id;
+};
+
+use Authen::Passphrase;
+use Authen::Passphrase::BlowfishCrypt;
+
+sub check_passphrase {
+       my ($self, $pw) = @_;
+       Authen::Passphrase->from_rfc2307($self->passphrase)->match($pw)
+}
 
+sub set_passphrase {
+       my ($self, $pw) = @_;
+       $self->update({passphrase => Authen::Passphrase::BlowfishCrypt->new(
+               cost => 10,
+               passphrase => $pw,
+               salt_random => 1,
+       )->as_rfc2307});
+}
 
-# You can replace this text with custom code or comments, and it will be preserved on regeneration
 1;
+
+__END__
+
+=head1 METHODS
+
+=head2 check_passphrase(I<$passphrase>)
+
+Returns true if I<$passphrase> is the correct passphrase, false otherwise.
+
+=head2 set_passphrase(I<$passphrase>)
+
+Changes the passphrase to I<$passphrase>.
+
+=head1 AUTHOR
+
+Marius Gavrilescu E<lt>marius@ieval.roE<gt>
+
+=head1 COPYRIGHT AND LICENSE
+
+Copyright (C) 2014 by Marius Gavrilescu
+
+This library is free software; you can redistribute it and/or modify
+it under the same terms as Perl itself, either Perl version 5.18.1 or,
+at your option, any later version of Perl 5 you may have available.
+
+
+=cut
This page took 0.026189 seconds and 4 git commands to generate.