Showing 1 changed files with 63 additions and 55 deletions
+63 -55
templates/auto/_new.html.ep
... ...
@@ -13,66 +13,74 @@
13 13
   }
14 14
   
15 15
   my $errors;
16
-  if ($op eq 'create') {
17
-    # Parameters
18
-    my $project_id = param('project');
19
-    my $description = param('description');
20
-    my $readme = param('readme');
21
-    my $private = param('private');
22
-    
23
-    # Validator
24
-    my $vc = app->vc;
25
-    
26
-    # Validation
27
-    my $validation = $vc->validation;
28
-    
29
-    # "project"
30
-    if (!(defined $project_id && length $project_id)) {
31
-      $validation->add_failed(project => 'Repository name is empty');
32
-    }
33
-    elsif (!$vc->check($project_id, 'project_name')) {
34
-      $validation->add_failed(project => 'Invalid repository name');
35
-    }
36
-    elsif (app->manager->exists_project($session_user->{id}, $project_id)) {
37
-      $validation->add_failed(project => 'Repository already exists');
38
-    }
39
-    
40
-    # "description"
41
-    $description ||= '';
42
-    
43
-    # "readme"
44
-    $readme = $readme ? 1 :0;
45
-    
46
-    # "private"
47
-    $private = $private ? 1 : 0;
48
-    
49
-    # Git
50
-    if ($validation->is_valid) {
51
-      # Not logined
52
-      unless ($api->logined) {
53
-        return $self->reply->exception;
54
-      }
16
+  if (lc $self->req->method eq 'post') {
17
+    if ($op eq 'create') {
18
+      # Parameters
19
+      my $project_id = param('project');
20
+      my $description = param('description');
21
+      my $readme = param('readme');
22
+      my $private = param('private');
55 23
       
56
-      my $manager = app->manager;
57
-      # Create repository
58
-      eval {
59
-        $manager->create_project(
60
-          $session_user->{id},
61
-          $project_id,
62
-          {description => $description, readme => $readme, private => $private}
63
-        );
64
-      };
24
+      # Validator
25
+      my $vc = app->vc;
65 26
       
66
-      if (my $e = $@) {
67
-        app->log->error(url_for . ": $e");
68
-        $errors = ['Internal error'];
27
+      # Validation
28
+      my $validation = $vc->validation;
29
+      
30
+      # "project"
31
+      if (!(defined $project_id && length $project_id)) {
32
+        $validation->add_failed(project => 'Repository name is empty');
33
+      }
34
+      elsif (length $project_id > 300) {
35
+        $validation->add_failed(project => 'Repository name is too long');
36
+      }
37
+      elsif (!$vc->check($project_id, 'project_name')) {
38
+        $validation->add_failed(project => 'Invalid repository name');
69 39
       }
70
-      else {
71
-        $self->redirect_to("/$session_user->{id}/$project_id");
72
-        return;
40
+      elsif (app->manager->exists_project($session_user->{id}, $project_id)) {
41
+        $validation->add_failed(project => 'Repository already exists');
42
+      }
43
+      
44
+      # "description"
45
+      $description ||= '';
46
+      if (length $description > 300) {
47
+        $validation->add_failed(description => 'description is too long');
48
+      }
49
+      
50
+      # "readme"
51
+      $readme = $readme ? 1 :0;
52
+      
53
+      # "private"
54
+      $private = $private ? 1 : 0;
55
+      
56
+      # Git
57
+      if ($validation->is_valid) {
58
+        # Not logined
59
+        unless ($api->logined) {
60
+          return $self->reply->exception;
61
+        }
62
+        
63
+        my $manager = app->manager;
64
+        # Create repository
65
+        eval {
66
+          $manager->create_project(
67
+            $session_user->{id},
68
+            $project_id,
69
+            {description => $description, readme => $readme, private => $private}
70
+          );
71
+        };
72
+        
73
+        if (my $e = $@) {
74
+          app->log->error(url_for . ": $e");
75
+          $errors = ['Internal error'];
76
+        }
77
+        else {
78
+          $self->redirect_to("/$session_user->{id}/$project_id");
79
+          return;
80
+        }
73 81
       }
82
+      else { $errors = $validation->messages }
74 83
     }
75
-    else { $errors = $validation->messages }
76 84
   }
77 85
 %>
78 86