Commit | Line | Data |
ad93b3e9 |
1 | package TestApp::Schema::User; |
2 | |
3 | use strict; |
4 | use warnings; |
5 | use base 'DBIx::Class'; |
6 | |
7 | __PACKAGE__->load_components(qw/ Core /); |
8 | |
9 | __PACKAGE__->table( 'user' ); |
6d4bea88 |
10 | |
11 | __PACKAGE__->add_columns( qw/id username email status role_text session_data/ ); |
12 | |
13 | __PACKAGE__->add_column(password => { accessor => 'password_accessor' }); |
14 | |
ad93b3e9 |
15 | __PACKAGE__->set_primary_key( 'id' ); |
16 | |
17 | __PACKAGE__->has_many( 'map_user_role' => 'TestApp::Schema::UserRole' => 'user' ); |
18 | |
19 | __PACKAGE__->many_to_many( roles => 'map_user_role', 'role'); |
20 | |
b3c995e9 |
21 | use Set::Object; |
22 | |
23 | sub t_check_roles { |
24 | my ( $self, $roles, $wanted_roles ) = @_; |
25 | |
26 | if ( grep { $_ eq 'superadmin' } @$roles ) { |
27 | return 1; |
28 | } |
29 | |
30 | my $have = Set::Object->new(@$roles); |
31 | my $need = Set::Object->new(@$wanted_roles); |
32 | |
33 | if ( $have->superset($need) ) { |
34 | return 1; |
35 | } |
36 | } |
37 | |
38 | sub t_check_roles_any { |
39 | my ( $self, $roles, $wanted_roles ) = @_; |
40 | |
41 | if ( grep { $_ eq 'superadmin' } @$roles ) { |
42 | return 1; |
43 | } |
44 | |
45 | my $have = Set::Object->new(@$roles); |
46 | my $need = Set::Object->new(@$wanted_roles); |
47 | |
48 | if ( $have->intersection($need)->size > 0 ) { |
49 | return 1; |
50 | } |
51 | } |
52 | |
ad93b3e9 |
53 | 1; |