display is now 'email', allowing ::Auth to email after register.
[scpubgit/stemmatology.git] / lib / Text / Tradition / User.pm
index 9ba694b..868c25b 100644 (file)
@@ -6,10 +6,12 @@ use warnings;
 use Moose;
 with qw(KiokuX::User);
 
-## 'id' provided by KiokuX::User stores our username
+## 'id' provided by KiokuX::User stores our username (email for local users, openid url for openid/google)
 has 'password'   => (is => 'rw', required => 1);
+has 'email' => (is => 'rw', lazy => 1, builder => '_build_email');
 ## Change this default active value if you want/need to have an admin confirm a user after they self-create.
 has 'active'     => (is => 'rw', default => sub { 1; });
+has 'role'       => (is => 'rw', default => sub { 'user' });
 # 'traits' => ['Array'] ?
 # https://metacpan.org/module/Moose::Meta::Attribute::Native::Trait::Array
 has 'traditions' => (is => 'rw', 
@@ -27,17 +29,30 @@ after add_tradition => sub {
         unless $tradition->has_user && $tradition->user->id eq $self->id;
 };
 
+sub _build_email {
+    my ($self) = @_;
+
+    ## no email set, so use username/id
+    return $self->id;
+}
+
 sub remove_tradition {
     my ($self, $tradition) = @_;
 
     ## FIXME: Is "name" a good unique field to compare traditions on?
     my @traditions = @{$self->traditions};
-    @traditions = grep { $tradition->name ne $_->name } @traditions;
+    @traditions = grep { $tradition != $_ } @traditions;
 
     $tradition->clear_user;
     $self->traditions(\@traditions);
 }
 
+sub is_admin {
+    my ($self) = @_;
+
+    return $self->role && $self->role eq 'admin';
+}
+
 1;
 
 =head1 NAME