X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FText%2FTradition%2FUser.pm;h=868c25b880e79ff9c6f3a2edcad9cf19196ccc18;hb=a528f0f656c88f72ce332949963b0648193b3b84;hp=9ba694b6e2ea116769c09fadb5fc348bf215ebb6;hpb=ec7ea4e66a9c35cbf50ea39d092ad7187435b76e;p=scpubgit%2Fstemmatology.git diff --git a/lib/Text/Tradition/User.pm b/lib/Text/Tradition/User.pm index 9ba694b..868c25b 100644 --- a/lib/Text/Tradition/User.pm +++ b/lib/Text/Tradition/User.pm @@ -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