added role self_check and self_check_any to User store
[catagits/Catalyst-Authentication-Store-DBIx-Class.git] / t / lib / TestApp / Schema / User.pm
index 7ad6ef8..7020de9 100644 (file)
@@ -18,4 +18,36 @@ __PACKAGE__->has_many( 'map_user_role' => 'TestApp::Schema::UserRole' => 'user'
 
 __PACKAGE__->many_to_many( roles => 'map_user_role', 'role');
 
+use Set::Object;
+
+sub t_check_roles {
+    my ( $self, $roles, $wanted_roles ) = @_;
+
+    if ( grep { $_ eq 'superadmin' } @$roles ) {
+        return 1;
+    }
+
+    my $have = Set::Object->new(@$roles);
+    my $need = Set::Object->new(@$wanted_roles);
+
+    if ( $have->superset($need) ) {
+        return 1;
+    }
+}
+
+sub t_check_roles_any {
+    my ( $self, $roles, $wanted_roles ) = @_;
+
+    if ( grep { $_ eq 'superadmin' } @$roles ) {
+        return 1;
+    }
+
+    my $have = Set::Object->new(@$roles);
+    my $need = Set::Object->new(@$wanted_roles);
+
+    if ( $have->intersection($need)->size > 0 ) {
+        return 1;
+    }
+}
+
 1;