File Coverage

File:lib/Yukki/User.pm
Coverage:86.2%

linestmtbrancondsubpodtimecode
1package Yukki::User;
2
3
2
2
15
5
use v5.24;
4
2
2
2
7
3
8
use utf8;
5
2
2
2
30
7
8
use Moo;
6
7with 'Yukki::Role::Savable';
8
9
2
2
2
456
3
14
use Types::Standard qw( Str ArrayRef );
10
2
2
2
1149
2
7
use Yukki::Types qw( LoginName );
11
12
2
2
2
639
2
11
use namespace::clean;
13
14# ABSTRACT: Encapsulates Yukki users
15
16 - 43
=head1 SYNOPSIS

    use Yukki::User;

    my $user_file = $app->locate('user_path', 'bob');
    my $user = Yukki::User->load_yaml($user_file);

    say "login name: ", $user->login_name;
    say "password: ", $user->password;
    say "name: ", $user->name;
    say "email: ", $user->email;
    say "groups: ", join(', ', $user->groups->@*);

=head1 DESCRIPTION

Encapsulates the definition of a user object. Users are defined to provide information about the author of each change in the wiki.

=head1 ROLES

L<Yukki::Role::Savable>

=head1 ATTRIBUTES

=head2 login_name

This is the name the user uses to login.

=cut
44
45has login_name => (
46    is          => 'ro',
47    isa         => LoginName,
48    required    => 1,
49);
50
51 - 55
=head2 password

This is the hashed password for the user.

=cut
56
57has password => (
58    is          => 'rw',
59    isa         => Str,
60    required    => 1,
61);
62
63 - 67
=head2 name

This is the full name of the user, used as the author name on commits.

=cut
68
69has name => (
70    is          => 'rw',
71    isa         => Str,
72    required    => 1,
73);
74
75 - 79
=head2 email

This is the email address of the user, used to uniquely identify the author in commits.

=cut
80
81has email => (
82    is          => 'rw',
83    isa         => Str,
84    required    => 1,
85);
86
87 - 91
=head2 groups

This is the list of groups to which the user belongs.

=cut
92
93has groups => (
94    is          => 'ro',
95    isa         => ArrayRef[Str],
96    required    => 1,
97    lazy        => 1,
98    default     => sub { [] },
99);
100
101 - 107
=head1 METHODS

=head2 groups_string

Returns the groups concatenated together into a single string.

=cut
108
109
0
1
sub groups_string { join ' ', shift->groups->@* }
110
111 - 115
=head2 savable_attributes

Returns the savable attributes.

=cut
116
117sub savable_attributes {
118
0
1
    qw(
119        login_name
120        password
121        name
122        email
123        groups
124    )
125}
126
1271;