* hydra: project members can do stuff that the owner can do

This commit is contained in:
Rob Vermaas 2010-03-10 10:02:04 +00:00
parent f816a5a28d
commit 1c4585dae3
2 changed files with 96 additions and 3 deletions

View file

@ -139,9 +139,9 @@ sub requireProjectOwner {
my ($c, $project) = @_;
requireLogin($c) if !$c->user_exists;
error($c, "Only the project owner or administrators can perform this operation.")
unless $c->check_user_roles('admin') || $c->user->username eq $project->owner->username;
error($c, "Only the project members or administrators can perform this operation.")
unless $c->check_user_roles('admin') || $c->user->username eq $project->owner->username || defined $c->model('DB::ProjectMembers')->find({ project => $project, userName => $c->user->username });
}

View file

@ -0,0 +1,93 @@
package Hydra::Schema::ProjectMembers;
# Created by DBIx::Class::Schema::Loader
# DO NOT MODIFY THE FIRST PART OF THIS FILE
use strict;
use warnings;
use base 'DBIx::Class::Core';
=head1 NAME
Hydra::Schema::ProjectMembers
=cut
__PACKAGE__->table("ProjectMembers");
=head1 ACCESSORS
=head2 project
data_type: text
default_value: undef
is_foreign_key: 1
is_nullable: 0
size: undef
=head2 username
data_type: text
default_value: undef
is_foreign_key: 1
is_nullable: 0
size: undef
=cut
__PACKAGE__->add_columns(
"project",
{
data_type => "text",
default_value => undef,
is_foreign_key => 1,
is_nullable => 0,
size => undef,
},
"username",
{
data_type => "text",
default_value => undef,
is_foreign_key => 1,
is_nullable => 0,
size => undef,
},
);
__PACKAGE__->set_primary_key("project", "username");
=head1 RELATIONS
=head2 project
Type: belongs_to
Related object: L<Hydra::Schema::Projects>
=cut
__PACKAGE__->belongs_to("project", "Hydra::Schema::Projects", { name => "project" }, {});
=head2 username
Type: belongs_to
Related object: L<Hydra::Schema::Users>
=cut
__PACKAGE__->belongs_to(
"username",
"Hydra::Schema::Users",
{ username => "username" },
{},
);
# Created by DBIx::Class::Schema::Loader v0.05003 @ 2010-03-10 10:46:50
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:/5E52ddbqTr6+kf+ixYZGA
# You can replace this text with custom content, and it will be preserved on regeneration
1;