Showing 3 changed files with 39 additions and 10 deletions
+7 -2
lib/Gitprep/Manager.pm
... ...
@@ -167,15 +167,18 @@ sub delete_user {
167 167
   # Delete user
168 168
   my $dbi = $self->app->dbi;
169 169
   my $error;
170
+  my $count;
170 171
   eval {
171 172
     $dbi->connector->txn(sub {
172
-      eval { $self->_delete_db_user($user) };
173
+      eval { $count = $self->_delete_db_user($user) };
173 174
       croak $error = $@ if $@;
174 175
       eval {$self->_delete_user_dir($user) };
175 176
       croak $error = $@ if $@;
176 177
     });
177 178
   };
178 179
   croak $error if $@;
180
+  
181
+  return $count;
179 182
 }
180 183
 
181 184
 sub original_project {
... ...
@@ -505,7 +508,9 @@ sub _delete_db_user {
505 508
   my ($self, $user) = @_;
506 509
   
507 510
   # Delete database user
508
-  $self->app->dbi->model('user')->delete(id => $user);
511
+  my $count = $self->app->dbi->model('user')->delete(id => $user);
512
+  
513
+  return $count;
509 514
 }
510 515
 
511 516
 sub _delete_user_dir {
+10 -5
templates/auto/_admin/users.html.ep
... ...
@@ -11,8 +11,6 @@
11 11
     my $rule = [
12 12
       user => [
13 13
         ['not_blank' => 'User name is empty.'],
14
-        [{'regex' => qr/^[a-zA-Z0-9_]+$/} => 'User name contains invalid character.'],
15
-        [{'length' => {max => 20}} => 'User name is too long.']
16 14
       ]
17 15
     ];
18 16
     my $vresult = $validator->validate($params, $rule);
... ...
@@ -24,14 +22,21 @@
24 22
       my $user = $params->{user};
25 23
       
26 24
       # Delete user
27
-      eval { app->manager->delete_user($user) };
25
+      my $count;
26
+      eval { $count = app->manager->delete_user($user) };
28 27
       if ($@) {
29
-        app->log->error($@);
28
+        app->log->error("/_admin/users?op=delete: $@");
29
+        $errors = ['Internal Error'];
30
+      }
31
+      elsif ($count == 0) {
32
+        app->log->error("/_admin/users?op=delete: User $user not exists");
30 33
         $errors = ['Internal Error'];
31 34
       }
32 35
       else {
33
-        $self->flash(message => "User $user is deleted");
36
+        $self->flash(message => "User $user is deleted.");
34 37
         $self->redirect_to('current');
38
+        $self->finish_rendering;
39
+        return;
35 40
       }
36 41
     }
37 42
     else { $errors = $vresult->messages }
+22 -3
xt/admin.t
... ...
@@ -98,7 +98,7 @@ note 'Login as admin user';
98 98
   
99 99
   note 'Admin User page';
100 100
   {
101
-    $t->post_ok('/_admin/users')->content_like(qr/Admin Users/);
101
+    $t->get_ok('/_admin/users')->content_like(qr/Admin Users/);
102 102
   }
103 103
 
104 104
   note 'Create User page';
... ...
@@ -176,7 +176,26 @@ note 'Login as admin user';
176 176
     $t->post_ok('/reset-password?user=kimoto&op=reset', form => {password => 'a', password2 => 'a'})
177 177
       ->content_like(qr/Success.*changed/)
178 178
     ;
179
-    
180
-    
179
+  }
180
+
181
+  note 'Delete user';
182
+  {
183
+    # Create user
184
+    $t->post_ok('/_admin/user/create?op=create', form => {id => 'kimoto-tmp', password => 'a', password2 => 'a'})
185
+      ->content_like(qr/kimoto-tmp/);
186
+    $t->get_ok('/_admin/users')
187
+      ->content_like(qr/kimoto-tmp/);
188
+
189
+    # User not exists
190
+    $t->post_ok('/_admin/users?op=delete', form => {user => 'kimoto-notting'})
191
+      ->content_like(qr/Internal/);
192
+
193
+    # User not exists
194
+    $t->post_ok('/_admin/users?op=delete', form => {user => 'kimoto-tmp'})
195
+      ->content_like(qr/User.*deleted/);
196
+    $t->get_ok('/_admin/users')
197
+      ->content_unlike(qr/kimoto-tmp/);
198
+
199
+    ;
181 200
   }
182 201
 }