add smid dump script.
[SMMID.git] / lib / SMMID / Authentication / User.pm
blob8dbaf81dbffe32a10813a423d3ac8c97c42a3e16
2 package SMMID::Authentication::User;
4 use Moose;
6 extends "Catalyst::Authentication::User";
8 has 'id' => (
9 isa => 'Maybe[Str]',
10 is => 'rw',
11 default => sub {
12 my $self = shift;
13 if ($self->user()) {
14 return $self->user()->username();
16 else {
17 return undef;
19 } );
21 has 'user' => (isa => 'Maybe[Ref]', is => 'rw' );
23 has 'object' => (isa => 'Maybe[Ref]', is => 'rw', writer => 'set_object', reader => 'get_object');
25 has 'supported_features' => (
26 isa => 'Ref',
27 is => 'ro',
28 default => sub {
29 return { roles => 1, self_check => 1 };
30 });
32 has 'roles' => (
33 isa => 'Maybe[ArrayRef]',
34 is => 'rw',
35 default => sub {
36 my $self = shift;
37 if ($self->user()) {
38 return ($self->user->get_object()->user_type());
40 else {
41 return ();
43 });
45 # sub id {
46 # my $self = shift;
47 # return $self->user()->username();
48 # }
50 # sub supported_features {
51 # my $self = shift;
52 # return { roles =>1, self_check=>1};
53 # }
55 # sub get_object {
56 # my $self = shift;
57 # return $self->user();;
58 # }
60 # sub set_object {
61 # my $self = shift;
62 # my $user = shift;
63 # $self->user($user);
64 # }
66 # sub roles {
67 # my $self = shift;
68 # return $self->user()->roles();
69 # }
71 sub check_roles {
72 my $self = shift;
73 my @roles = @_;
74 my %has_roles = ();
75 map { $has_roles{$_} = 1; } $self->roles();
77 foreach my $r (@roles) {
78 if (!exists($has_roles{$r})) {
79 return 0;
82 return 1;