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
+
+
+ utilisateur |
+ supprimer |
+ administrateur |
+
+
+ <% FOREACH pair IN allusers.pairs %>
+
+ <% pair.key %> |
+
+
+
+ |
+
+
+ <% IF pair.value == 1 %>
+
+ <% ELSE %>
+
+ <% END %>
|
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 @@
<% FOREACH domain in domains %>
+ <% domain %> |
+
- <% domain %>
+
|
- Supprimer
+
|
<% 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 %>
-