--- trunk/lib/SQLSession/CurrentUser.pm 2007/01/21 12:41:35 47 +++ trunk/lib/SQLSession/CurrentUser.pm 2007/01/25 13:08:06 58 @@ -4,6 +4,13 @@ package SQLSession::CurrentUser; use base qw/Jifty::CurrentUser/; +=head2 _init + +This function will load user data from database and turn on admin mode in +Jifty if user has C role. + +=cut + sub _init { my $self = shift; my %args = (@_); @@ -15,9 +22,22 @@ } elsif( keys %args ) { $self->user_object( SQLSession::Model::User->new( current_user => $self ) ); $self->user_object->load_by_cols( %args ); + } $self->SUPER::_init(%args); + + if ( $self->current_user->id ) { + my $r = SQLSession::Model::Role->new(); + $r->load_by_cols( + user_id => $self->current_user->id, + role => 'admin', + ); + if ($r->id) { + warn "turn on AdminMode for ", $self->current_user->user_object->email, $/; + $self->is_superuser(1); + } + } } =head2 role @@ -34,6 +54,8 @@ return 0 unless ($self->current_user->id); + return 1 if ($role eq 'admin' && $self->current_user->is_superuser); + my $r = SQLSession::Model::Role->new(); $r->load_by_cols( user_id => $self->current_user->id, @@ -44,8 +66,6 @@ $r->id ? 'OK' : 'DENY', $/; return $r->id; - - return 0; }