Showing 2 changed files with 26 additions and 3 deletions
+2 -2
lib/Gitprep/Manager.pm
... ...
@@ -474,7 +474,7 @@ sub update_authorized_keys_file {
474 474
     }
475 475
     
476 476
     # Parse file
477
-    my $result = $self->_parse_authorized_keys_file($authorized_keys_file);
477
+    my $result = $self->parse_authorized_keys_file($authorized_keys_file);
478 478
     my $before_part = $result->{before_part};
479 479
     my $gitprep_part = $result->{gitprep_part};
480 480
     my $after_part = $result->{after_part};
... ...
@@ -524,7 +524,7 @@ sub update_authorized_keys_file {
524 524
   }
525 525
 }
526 526
 
527
-sub _parse_authorized_keys_file {
527
+sub parse_authorized_keys_file {
528 528
   my ($self, $file) = @_;
529 529
   
530 530
   my $start_symbol = "# gitprep start";
+24 -1
templates/user-settings/ssh.html.ep
... ...
@@ -29,6 +29,7 @@
29 29
         ],
30 30
         key => [
31 31
           ['not_blank' => 'key is empty'],
32
+          # Check if key format is valid
32 33
           sub {
33 34
             my ($original_key, $args, $vc) = @_;
34 35
             
... ...
@@ -49,7 +50,29 @@
49 50
                   return {result => 0, message => 'Key already exists'};
50 51
                 }
51 52
                 else {
52
-                  return {result => 1, output => $key}
53
+                  my $key_is_contained;
54
+                  my $authorized_keys_file = app->manager->authorized_keys_file;
55
+                  if (defined $authorized_keys_file) {
56
+                    my $result
57
+                      = app->manager->parse_authorized_keys_file($authorized_keys_file);
58
+
59
+                    my $before_part = $result->{before_part};
60
+                    my $after_part = $result->{after_part};
61
+                    my $other_part = "$before_part\n$after_part";
62
+                    if ($other_part =~ /\s\Q$original_key_edit\E(\s|$)/) {
63
+                      $key_is_contained = 1;
64
+                    }
65
+                  }
66
+                  
67
+                  if ($key_is_contained) {
68
+                    return {
69
+                      result => 0,
70
+                      message => "authorized_keys file already contain this key"
71
+                    };
72
+                  }
73
+                  else {
74
+                    return {result => 1, output => $key}
75
+                  }
53 76
                 }
54 77
               }
55 78
               else {