X-Git-Url: http://git.pjr.cc/?p=gwvp.git;a=blobdiff_plain;f=gwvplib%2Fgwvprepoadmin.php;h=cb533bfaeb67457fefae8068786fb6fe483fa307;hp=df122d6816dbbb292a42c2f0ae0f2f275a909ea2;hb=942b821d861aba1da43ef6c999141853e9f8b3a8;hpb=d5dbb5b8065eb6290c0a2b573e343f6ad3f8fb26 diff --git a/gwvplib/gwvprepoadmin.php b/gwvplib/gwvprepoadmin.php index df122d6..cb533bf 100644 --- a/gwvplib/gwvprepoadmin.php +++ b/gwvplib/gwvprepoadmin.php @@ -6,11 +6,14 @@ $MENU_ITEMS["20repos"]["link"] = "$BASE_URL/admin/repos"; function gwvp_RepoAdminCallMe() { + + error_log("in repoadmin callme"); if(isset($_REQUEST["q"])) { $query = $_REQUEST["q"]; $qspl = explode("/", $query); if(isset($qspl[0]) && isset($qspl[1])) { if($qspl[0] == "admin" && $qspl[1] == "repos") { + error_log("i got here, where next?"); if(isset($qspl[2])) { switch($qspl[2]) { case "create": @@ -19,6 +22,15 @@ function gwvp_RepoAdminCallMe() case "docreate": return "gwvp_DoCreateRepoPage"; break; + case "manage": + return "gwvp_ManageRepoPage"; + break; + case "updateperms": + return "gwvp_UpdateRepoPerms"; + break; + case "details": + return "gwvp_RepoDetailsPage"; + break; default: return "gwvp_RepoAdminPage"; } @@ -33,6 +45,11 @@ function gwvp_RepoAdminCallMe() return false; } +function gwvp_ManageRepoPage() +{ + gwvp_goMainPage("gwvp_ManageRepoPageBody"); +} + function gwvp_RepoAdminPage() { gwvp_goMainPage("gwvp_RepoAdminPageBody"); @@ -43,52 +60,163 @@ function gwvp_CreateRepoPage() gwvp_goMainPage("gwvp_CreateRepoPageBody"); } +function gwvp_RepoDetailsPage() +{ + gwvp_goMainPage("gwvp_RepoDetailsPageBody"); +} + +function gwvp_RepoDetailsPageBody() +{ + echo "I am a repo details page"; +} + +function gwvp_UpdateRepoPerms() +{ + global $LOGIN_TYPE, $BASE_URL; + + $rid = -1; + if(isset($_REQUEST["q"])) { + $query = $_REQUEST["q"]; + $qspl = explode("/", $query); + $rid = $qspl[3]; + } + + // a visible addition + if(isset($_REQUEST["visadd"])) { + foreach($_REQUEST["vismembersout"] as $mems) { + //gwvp_addRepoPermission($repoid, $permtype, $permref); + gwvp_addRepoPermission($rid, "visible", $mems); + } + } + + // a visible removal + if(isset($_REQUEST["visremove"])) { + foreach($_REQUEST["vismembersin"] as $rems) { + error_log("Remove permid, $rems"); + gwvp_removeRepoPermission($rems); + } + } + + // a read addition + if(isset($_REQUEST["readadd"])) { + foreach($_REQUEST["readmembersout"] as $mems) { + //gwvp_addRepoPermission($repoid, $permtype, $permref); + gwvp_addRepoPermission($rid, "read", $mems); + } + } + + // a read removal + if(isset($_REQUEST["readremove"])) { + foreach($_REQUEST["readmembersin"] as $rems) { + error_log("Remove permid, $rems"); + gwvp_removeRepoPermission($rems); + } + } + + // a write addition + if(isset($_REQUEST["writeadd"])) { + foreach($_REQUEST["writemembersout"] as $mems) { + //gwvp_addRepoPermission($repoid, $permtype, $permref); + gwvp_addRepoPermission($rid, "write", $mems); + } + } + + // a write removal + if(isset($_REQUEST["writeremove"])) { + foreach($_REQUEST["writemembersin"] as $rems) { + error_log("Remove permid, $rems"); + gwvp_removeRepoPermission($rems); + } + } + + gwvp_SendMessage("info", "Permissions Updated"); + header("Location: $BASE_URL/admin/repos/manage/$rid"); + return; +} + +//function gwvp_createGitRepo($name, $ownerid, $desc, $defaultperms=0, $bundle=null) + + function gwvp_DoCreateRepoPage() { global $BASE_URL; $reponame = $_REQUEST["reponame"]; + $repodesc = $_REQUEST["repodesc"]; - if(gwvp_createGitRepo($reponame)) { + $defperms = 0; + + if(isset($_REQUEST["defperms"])) { + switch($_REQUEST["defperms"]) { + case "permsall": + $defperms = 0; + break; + case "permsmeonly": + $defperms = 1; + break; + case "permsinvisible": + $defperms = 2; + break; + default: + $defperms = 2; + } + } + + // TODO: this code is bollocks, need to redo + if(gwvp_repoExists($reponame)) { + gwvp_SendMessage("error", "a repository with the name \"$reponame\" already exists"); + //header("Location: $BASE_URL/admin/repos/create?reponameobv=$reponame&repodescobv=$repodesc"); + } else if($_FILES["bundlefile"]["size"] > 0) { // if(isset($_FILES["bundlefile"]["size"])) <--- this needs to happen here TODO + error_log("bundle file tmpname is ".$_FILES["bundlefile"]["tmp_name"]); + // function gwvp_createGitRepo($name, $ownerid, $desc, $defaultperms=0, $bundle=null) + // TODO: deal with default perms + gwvp_createGitRepo($reponame, $_SESSION["id"], $repodesc, $_FILES["bundlefile"]["tmp_name"], $defperms); + gwvp_SendMessage("info", "Repo, $reponame, created"); + } else if(gwvp_createGitRepo($reponame, $_SESSION["id"], $repodesc, null, $defperms)) { gwvp_SendMessage("info", "Repo, $reponame, created"); - header("Location: $BASE_URL/admin/repos"); } + header("Location: $BASE_URL/admin/repos"); } function gwvp_CreateRepoPageBody() { - global $BASE_URL, $repo_base; + global $BASE_URL; + + $repo_base = gwvp_getConfigVal("repodir"); + + $reponameobv = ""; + $repodescobv = ""; + + if(isset($_REQUEST["reponameobv"])) $reponameobv = $_REQUEST["reponameobv"]; + if(isset($_REQUEST["repodescobv"])) $repodescobv = $_REQUEST["repodescobv"]; echo "

Create a Repo

"; - echo "
"; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + + echo "
Repository Name
Repository Description
Repository BundleCreate a bundle for pro-creating the git repository (export your git bundle with \"git bundle create /tmp/filename --branches\")
"; + echo "Typically you wouldn't use this as its easier to \"push\" to the repo after its created by adding it as a remote and pushing your local master branch
Default Permisison Set"; + echo ""; - echo ""; - echo ""; + echo ""; + echo ""; + echo ""; echo "
Repository Name
Repository Description
Anyone Can Read, Only you can write
Anyone can see the repository exists, but only you can read or write to it
Repository only visible to you
"; - echo "

Permissions

"; - - // no, this bit is wrong, need to come up with something better - echo ""; - echo ""; - echo ""; + + echo ""; + echo "
AnonymousAuthenticatedGroup
"; - // anon permission dialog - echo " Can anonymous users see the repo?
"; - echo " Can anonymous user clone from the repo (read-only)?
"; - echo "
"; - // authed permission dialog - echo " Can any authenticated user see the repo?
"; - echo " Can any authenticated user clone from the repo (read-only)?
"; - echo " Can any authenticated user clone *TO* the repo (read/write)?
"; - echo "
"; - // group permissions dialog - echo " Can any authenticated user see the repo?
"; - echo " Can any authenticated user clone from the repo (read-only)?
"; - echo " Can any authenticated user clone *TO* the repo (read/write)?
"; - echo "
Permissions can be changed in repository management later
"; + + + + + echo "
"; echo ""; } @@ -101,23 +229,301 @@ function gwvp_RepoAdminPageBody() echo "

Repo Management

"; echo "Create a Repo
"; + if(isset($_SESSION["isloggedin"])) { + echo "

Your Repo's

"; + $ownreps = gwvp_getOwnedRepos($_SESSION["id"]); + if($ownreps != false) { + echo ""; + echo ""; + foreach($ownreps as $repos) { + $mjay = print_r($repos, true); + error_log("snafu: $mjay"); + $reponame = $repos["name"]; + $repodesc = $repos["description"]; + $rid = $repos["id"]; + echo ""; + } + echo "
Repo NameRepo description
$reponame$repodescManage
"; + } else { + echo "You own no repositories"; + } + echo "
"; + } + // next we need a repo list - with perms checking - ug // i must also remember that the home page will also contain a list of repos and that this page is solely for maintance // and creation of repos - so i dont need to get over-worked about the info stored on this page outside of those activities + echo "

All Repositories

"; $rlist = gwvp_GetRepoList(); echo ""; foreach($rlist as $u_res) { + $rid = $u_res["id"]; $rname = $u_res["name"]; $rdesc = $u_res["description"]; - $rown = $u_res["owner"]; - echo ""; + $rown = gwvp_getUserName($u_res["owner"]); + $manordetslink = "details"; + $manordets = "Details"; + if(isset($_SESSION["id"])) { + if(gwvp_resolvRepoPerms($_SESSION["id"], $rid)>3) { + $manordetslink = "manage"; + $manordets = "Manage"; + } + } + echo ""; } echo "
Repo NameRepo DescriptionRepo Owner
$rname$rdesc$rown
$rname$rdesc$rown$manordets
"; return; } +function gwvp_DisemableRefId($who) +{ + if($who == "anon") return "Everyone"; + if($who == "authed") return "All Authenticated User"; + + $epl = explode(":", $who); + + if($epl[0] == "user") { + $username = gwvp_getUserName($epl[1]); + return "User: $username"; + } else if ($epl[0] == "group") { + $grdent = gwvp_getGroup($epl[1]); + $groupname = $grdent["name"]; + return "Group: $groupname"; + } else return "unknown"; +} + +function gwvp_ManageRepoPageBody() +{ + global $LOGIN_TYPE, $BASE_URL; + + $rid = -1; + if(isset($_REQUEST["q"])) { + $query = $_REQUEST["q"]; + $qspl = explode("/", $query); + $rid = $qspl[3]; + } + + $repodets = gwvp_GetRepo($rid); + $reponame = $repodets["name"]; + $repodesc = $repodets["description"]; + $repoownid = $repodets["owner"]; + $owndby = gwvp_getUserName($repoownid); + $users = gwvp_getUsers(); + $groups = gwvp_getGroups(); + $repoperms = gwvp_getRepoPermissions($rid); + + + echo "

Repository Management

"; + echo "$owndby's Repository $reponame
"; + + echo "
"; + + echo ""; + echo ""; + echo "
Description
"; + echo "
"; + echo "
"; + + + echo "

Repository Permissions

"; + echo "
"; + echo ""; + echo ""; + echo ""; + + echo "
VisibilityRead/CloneWrite/Push
"; + + + + + // visibility section + $visin[0] = 0; + echo ""; + echo ""; + echo ""; + echo "
AllowedAll
"; + // list allowed users + echo ""; + + echo ""; + // buttons + echo "
"; + echo ">\">
"; + + echo "
"; + // list all users/groups/specials + $noutvis = 0; + echo ""; + + echo "
"; + // end visibility section + + + echo "
"; + // Read/clone/pull section + $readin[0] = 0; + echo ""; + echo ""; + echo ""; + echo "
AllowedAll
"; + // list allowed users + echo ""; + + echo ""; + // buttons + echo "
"; + echo ">\">
"; + + echo "
"; + // list all users/groups/specials + echo ""; + + echo "
"; + // end read/clone/pull section + + + echo "
"; + // write/push section + $writein[0] = 0; + echo ""; + echo ""; + echo ""; + echo "
AllowedAll
"; + // list allowed users + echo ""; + + echo ""; + // buttons + echo "
"; + echo ">\">
"; + + echo "
"; + // list all users/groups/specials + echo ""; + + echo "
"; + // end write/push section + + echo "
"; + echo "
"; +} ?> \ No newline at end of file