package Contentment::Security::Role; use strict; use warnings; our $VERSION = '0.05'; use base 'Oryx::Class'; =head1 NAME Contentment::Security::Role - Contentment security roles =head1 DESCRIPTION =cut sub name { 'security_role' } our $schema = { attributes => [ { name => 'title', type => 'String', }, { name => 'description', type => 'String', }, { name => 'is_special', type => 'Boolean', }, ], associations => [ { role => 'permissions', class => 'Contentment::Security::Permission', type => 'Array', }, ], }; sub fetch_permission_options { return [ map { [ $_->id, q() .$_->title.q(), $_->description, ] } Contentment::Security::Permission->search ]; } sub process_edit_form { my $submission = shift; my $results = $submission->results; # They've asked for an update if ($results->{submit} eq 'Update') { # Are we editting? if ($results->{id}) { my $role = Contentment::Security::Role->retrieve($results->{id}); $role->title($results->{title}); $role->description($results->{description}); @{ $role->permissions } = grep { defined $_ } map { Contentment::Security::Permission->retrieve($_) } @{ $results->{permissions} }; $role->update; $role->commit; } # Are we creating? else { my $role = Contentment::Security::Role->create({ title => $results->{title}, description => $results->{description}, }); @{ $role->permissions } = grep { defined $_ } map { Contentment::Security::Permission->retrieve($_) } @{ $results->{permissions} }; $role->update; $role->commit; } } # They cancled. # else { do nothing } } =head1 AUTHOR Andrew Sterling Hanenkamp, Ehanenkamp@cpan.orgE =head1 COPYRIGHT AND LICENSE Copyright 2005 Andrew Sterling Hanenkamp. All Rights Reserved. Contentment is licensed and distributed under the same terms as Perl itself. =cut 1