From bcbaa9915c7cbf99beaa3dc31ab1917c960f501e Mon Sep 17 00:00:00 2001 From: Lars Dieckow Date: Tue, 11 Jun 2013 19:47:29 +0200 Subject: [PATCH] dynamic runtime dispatch --- lib/NGCP/Panel/Controller/Domain.pm | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/lib/NGCP/Panel/Controller/Domain.pm b/lib/NGCP/Panel/Controller/Domain.pm index eaa2346fcf..e4b341c6f4 100644 --- a/lib/NGCP/Panel/Controller/Domain.pm +++ b/lib/NGCP/Panel/Controller/Domain.pm @@ -121,16 +121,34 @@ sub delete :Chained('base') :PathPart('delete') :Args(0) sub ajax :Chained('dom_list') :PathPart('ajax') :Args(0) :Does(ACL) :ACLDetachTo('/denied_page') :AllowedRole(admin) :AllowedRole(reseller) { my ($self, $c) = @_; - - my $resultset = $c->model('billing')->resultset('domains'); - + my $dispatch_to = '_ajax_resultset_' . $c->user->auth_realm; + my $resultset = $self->$dispatch_to($c); $c->forward( "/ajax_process_resultset", [$resultset, ["id", "domain"], - [0,1]]); - + [1]]); $c->detach( $c->view("JSON") ); } +sub _ajax_resultset_admin { + my ($self, $c) = @_; + return $c->model('billing')->resultset('domains'); +} + +sub _ajax_resultset_reseller { + my ($self, $c) = @_; + return $c->model('billing')->resultset('domains')->search_rs( + { + 'admins.id' => $c->user->id, + }, + { + join => {domain_resellers => {reseller => 'admins'}}, + id => {-ident => 'domain_resellers.id'}, + 'domain_resellers.reseller_id' => {-ident => 'resellers.id'}, + 'resellers.id' => {-ident => 'admins.reseller_id'}, + } + ); +} + sub preferences :Chained('base') :PathPart('preferences') :Args(0) :Does(ACL) :ACLDetachTo('/denied_page') :AllowedRole(admin) :AllowedRole(reseller) { my ($self, $c) = @_;