handling data from the client properly for gzdecoding and
[gwvp-mini.git] / gwvpmini / gwvpmini_gitrepo.php
index d642c92..d9d9fef 100644 (file)
@@ -232,13 +232,32 @@ function gwvpmini_RepoCreate()
        if($clonefrom !== false && $fromremote == false) {
                // check the local repo exists
                $rn = gwvpmini_getRepo(null, $clonefrom, null);
+               $uid = $_SESSION["id"];
+               
                if($rn == false) {
-                       gwvpmini_SendMessage("error", "local repo $clonefrom given as upstream clone, however $clonefrom doesnt exist on this site");
+                       gwvpmini_SendMessage("error", "local repo $clonefrom given as upstream clone, however $clonefrom doesnt exist on this site (or you cant read it unbake)");
+                       header("Location: $BASE_URL/repos");
+                       return;
+               }
+               
+               // resolve repo permissions on the read/clone
+               if(gwvpmini_GetRepoPerm($rn["id"], $uid) < 1) {
+                       gwvpmini_SendMessage("error", "local repo $clonefrom given as upstream clone, however $clonefrom doesnt exist on this site (or you cant read it bake)");
                        header("Location: $BASE_URL/repos");
                        return;
                }
        }
        
+       $defperms = "a";
+       switch($_REQUEST["perms"]) {
+               case "perms-registered":
+                       $defperms = "r";
+                       break;
+               case "perms-onlywrite":
+                       $defperms = "x";
+                       break;
+       }
+       
        if(!$inputcheck) {
                gwvpmini_SendMessage("error", "$inputcheckerror");\r
                header("Location: $BASE_URL/repos");
@@ -248,8 +267,9 @@ function gwvpmini_RepoCreate()
                        gwvpmini_SendMessage("error", "Repo ".$_REQUEST["reponame"]." already exists");\r
                        header("Location: $BASE_URL/repos");
                } else {
-                       gwvpmini_createGitRepo($_REQUEST["reponame"], $_SESSION["id"], $_REQUEST["repodesc"], $_REQUEST["perms"], $clonefrom);
-                       gwvpmini_SendMessage("info", "Repo ".$_REQUEST["reponame"]." has been created");
+                       if(gwvpmini_createGitRepo($_REQUEST["reponame"], $_SESSION["id"], $_REQUEST["repodesc"], $defperms, $clonefrom, $fromremote)) {
+                               gwvpmini_SendMessage("info", "Repo ".$_REQUEST["reponame"]." has been created");
+                       }
                        header("Location: $BASE_URL/repos");
                }
        } else {