import rt 2.0.14
[freeside.git] / rt / lib / RT / GroupMember.pm
1 # $Header: /home/cvs/cvsroot/freeside/rt/lib/RT/GroupMember.pm,v 1.1 2002-08-12 06:17:07 ivan Exp $
2 # Copyright 2000 Jesse Vincent <jesse@fsck.com>
3 # Released under the terms of the GNU Public License
4
5 =head1 NAME
6
7   RT::GroupMember - a member of an RT Group
8
9 =head1 SYNOPSIS
10
11 RT::GroupMember should never be called directly. It should generally
12 only be accessed through the helper functions in RT::Group;
13
14 =head1 DESCRIPTION
15
16
17
18
19 =head1 METHODS
20
21
22 =begin testing
23
24 ok (require RT::TestHarness);
25 ok (require RT::GroupMember);
26
27 =end testing
28
29
30 =cut
31
32 package RT::GroupMember;
33 use RT::Record;
34 use vars qw|@ISA|;
35 @ISA= qw(RT::Record);
36
37 # {{{ sub _Init
38 sub _Init {
39   my $self = shift; 
40   $self->{'table'} = "GroupMembers";
41   return($self->SUPER::_Init(@_));
42 }
43 # }}}
44
45 # {{{ sub _Accessible 
46 sub _Accessible  {
47     my $self = shift;
48     my %Cols = (
49                 GroupId => 'read',
50                 UserId => 'read'
51                 );
52
53     return $self->SUPER::_Accessible(@_, %Cols);
54 }
55 # }}}
56
57 # {{{ sub Create
58
59 # a helper method for Add
60
61 sub Create {
62     my $self = shift;
63     my %args = ( GroupId => undef,
64                  UserId => undef,
65                  @_
66                );
67     
68     unless( $self->CurrentUser->HasSystemRight('AdminGroups')) {
69         return (0, 'Permission Denied');
70     }
71
72     return ($self->SUPER::Create(GroupId => $args{'GroupId'},
73                                  UserId => $args{'UserId'}))
74 }
75 # }}}
76
77 # {{{ sub Add
78
79 =head2 Add
80
81 Takes a paramhash of UserId and GroupId.  makes that user a memeber
82 of that group
83
84 =cut
85
86 sub Add {
87     my $self = shift;
88     return ($self->Create(@_));
89 }
90 # }}}
91
92 # {{{ sub Delete
93
94 =head2 Delete
95
96 Takes no arguments. deletes the currently loaded member from the 
97 group in question.
98
99 =cut
100
101 sub Delete {
102     my $self = shift;
103     unless ($self->CurrentUser->HasSystemRight('AdminGroups')) {
104         return (0, 'Permission Denied');
105     }
106     return($self->SUPER::Delete(@_));
107 }
108
109 # }}}
110
111 # {{{ sub UserObj
112
113 =head2 UserObj
114
115 Returns an RT::User object for the user specified by $self->UserId
116
117 =cut
118
119 sub UserObj {
120     my $self = shift;
121     unless (defined ($self->{'user_obj'})) {
122         $self->{'user_obj'} = new RT::User($self->CurrentUser);
123         $self->{'user_obj'}->Load($self->UserId);
124     }
125     return($self->{'user_obj'});
126 }
127
128 # {{{ sub _Set
129 sub _Set {
130     my $self = shift;
131     unless ($self->CurrentUser->HasSystemRight('AdminGroups')) {
132         return (0, 'Permission Denied');
133     }
134     return($self->SUPER::_Set(@_));
135 }
136 # }}}