diff --git a/app/app.pm b/app/app.pm index a4b36b6..ae8347d 100644 --- a/app/app.pm +++ b/app/app.pm @@ -55,10 +55,9 @@ sub register_user { ${$self->um}->register_user($login, $passwd); } -# TODO sub set_admin { - my ($self, $login) = @_; - ${$self->um}->set_admin($login); + my ($self, $login, $val) = @_; + ${$self->um}->set_admin($login, $val); } sub update_passwd { @@ -131,6 +130,12 @@ sub get_all_domains { ${$self->um}->get_all_domains; } +sub get_all_users { + my ($self) = @_; + # % login admin + ${$self->um}->get_all_users; +} + sub new_tmp { my ($self, $login, $domain) = @_; my $ze = app::zone::edit->new(zname => $domain, zdir => $self->zdir); diff --git a/app/bdd/management.pm b/app/bdd/management.pm index b4b0149..0cafba7 100644 --- a/app/bdd/management.pm +++ b/app/bdd/management.pm @@ -153,7 +153,7 @@ sub get_domains { sub get_all_domains { my ($self) = @_; - my ($sth, $user, %domains); + my ($sth, %domains); $sth = $self->dbh->prepare('SELECT domain, login FROM domain'); unless ( $sth->execute()) { @@ -169,4 +169,35 @@ sub get_all_domains { %domains; } +sub get_all_users { + my ($self) = @_; + my ($sth, %users); + + $sth = $self->dbh->prepare('SELECT login, admin FROM user'); + unless ( $sth->execute()) { + $sth->finish(); + undef; + } + + while( my $ref = $sth->fetchrow_arrayref) { + $users{@$ref[0]} = @$ref[1]; + } + + $sth->finish(); + %users; +} + +sub set_admin { + my ($self, $login, $val) = @_; + + my $sth = $self->dbh->prepare('update user set admin=? where login=?'); + unless ( $sth->execute( $val, $login) ) { + $sth->finish(); + return 0; + } + + $sth->finish(); + return 1; +} + 1; diff --git a/www/lib/DNSManager.pm b/www/lib/DNSManager.pm index ad8faf0..5dbab4f 100644 --- a/www/lib/DNSManager.pm +++ b/www/lib/DNSManager.pm @@ -234,13 +234,15 @@ any ['get', 'post'] => '/admin' => sub { else { my %alldomains = $app->get_all_domains; + my %allusers = $app->get_all_users; my ($success, @domains) = $app->get_domains( session('login') ); template administration => { login => session('login') , admin => session('admin') , domains => [ @domains ] - , alldomains => { %alldomains } }; + , alldomains => { %alldomains } + , allusers => { %allusers } }; } } }; @@ -287,6 +289,69 @@ prefix '/user' => sub { }; } + }; + + get '/unsetadmin/:user' => sub { + + unless( defined param('user') ) + { + + # TODO ajouter une erreur à afficher + redirect request->referer; + + } + elsif(! defined session('login') ) + { + + redirect '/'; + + } + else { + + my $app = initco(); + + my ($auth_ok, $user, $isadmin) = $app->auth(session('login'), + session('password') ); + + if ( $auth_ok && $isadmin ) { + $app->set_admin(param('user'), 0); + } + + redirect request->referer; + + } + + }; + + get '/setadmin/:user' => sub { + + unless( defined param('user') ) + { + + # TODO ajouter une erreur à afficher + redirect request->referer; + + } + elsif(! defined session('login') ) + { + + redirect '/'; + + } + else { + + my $app = initco(); + + my ($auth_ok, $user, $isadmin) = $app->auth(session('login'), + session('password') ); + + if ( $auth_ok && $isadmin ) { + $app->set_admin(param('user'), 1); + } + + redirect request->referer; + + } }; diff --git a/www/views/administration.tt b/www/views/administration.tt index c336b1f..b979435 100644 --- a/www/views/administration.tt +++ b/www/views/administration.tt @@ -20,11 +20,43 @@ <% pair.value %> - sup. domaine + - sup. utilisateur + + + + + <% END %> + + + + +
+ +

Utilisateurs enregistrés

+ + + + + + + + <% FOREACH pair IN allusers.pairs %> + + + + + + diff --git a/www/views/home.tt b/www/views/home.tt index 86b609f..ce3eafa 100644 --- a/www/views/home.tt +++ b/www/views/home.tt @@ -23,12 +23,14 @@
utilisateursupprimeradministrateur
<% pair.key %> + + + <% IF pair.value == 1 %> + + <% ELSE %> + + <% END %>
<% FOREACH domain in domains %> + + <% END %> diff --git a/www/views/subscribe.tt b/www/views/subscribe.tt index 45889df..634345d 100644 --- a/www/views/subscribe.tt +++ b/www/views/subscribe.tt @@ -5,11 +5,20 @@ <% errmsg %>
- +

S'enregistrer

+
+ + +
+ +
+ + +
<% domain %> - <% domain %> + - Supprimer +