From c968cf55b0f366830676c8555cf61e9765277e44 Mon Sep 17 00:00:00 2001 From: paulr Date: Tue, 8 Nov 2011 19:45:37 +1100 Subject: [PATCH] changes to git management links based on perms changes to debug to create a more useful db changes to database to add more functions that return info changes to the login form to stop the padding spam --- gwvplib/gwvpauth.php | 2 +- gwvplib/gwvpdatabase.php | 19 +++++++++++++++++++ gwvplib/gwvpdebug.php | 32 ++++++++++++++++++++------------ gwvplib/gwvpgitcontrol.php | 15 +++++++++++++++ gwvplib/gwvprepoadmin.php | 26 +++++++++++++++++++++++++- gwvplib/gwvpweb.php | 18 +++++++++++++++++- www/css/normal.css | 4 ++++ 7 files changed, 101 insertions(+), 15 deletions(-) diff --git a/gwvplib/gwvpauth.php b/gwvplib/gwvpauth.php index 5056c06..3e0ddcd 100644 --- a/gwvplib/gwvpauth.php +++ b/gwvplib/gwvpauth.php @@ -229,7 +229,7 @@ function gwvp_SingleLineLoginForm() echo "
Username "; echo " Passowrd "; if(gwvp_IsRegistrationEnabled()) echo "Register
"; - else echo ""; + else echo "
"; } diff --git a/gwvplib/gwvpdatabase.php b/gwvplib/gwvpdatabase.php index 22db79c..acb1a7a 100644 --- a/gwvplib/gwvpdatabase.php +++ b/gwvplib/gwvpdatabase.php @@ -754,6 +754,25 @@ function gwvp_IsGroupAdmin($groupname = null, $gid = null) return $return; } +function gwvp_IsRepoOwner($userid, $repoid) +{ + $conn = gwvp_ConnectDB(); + + $sql = "select repos_owner from repos where repos_id='$repoid'"; + + $res = $conn->query($sql); + + $return = false; + foreach($res as $u_res) { + $return["owner"] = $u_res["repos_owner"]; + } + + if($return == false) return false; + if($return["owner"] == $userid) return true; + else return false; + + +} function gwvp_IsUserAdmin($email=null, $username = null, $userid = null) { diff --git a/gwvplib/gwvpdebug.php b/gwvplib/gwvpdebug.php index 71e0a93..2a56674 100644 --- a/gwvplib/gwvpdebug.php +++ b/gwvplib/gwvpdebug.php @@ -89,26 +89,34 @@ function gwvp_DebugCall() case "recreatedb": global $db_name; gwvp_forceDisconnect(); + unlink("$db_name.tmp"); rename("$db_name", "$db_name.tmp"); gwvp_dbCreateSQLiteStructure("$db_name"); - //gwvp_createGroup($group_name, $is_admin, $owner_id) - //gwvp_createUser($email, $fullname, $password, $username, $desc, $status) - //gwvp_addGroupMember($email, $groupname) + + // admin first gwvp_createUser("admin@localhost", "adminer", "password", "admin", "initial admin user", 0); $adminid = gwvp_getUserId("admin@localhost"); gwvp_createGroup("admingroup", "admingroup", 1, $adminid); error_log("adminid is $adminid"); gwvp_addGroupMember("admin@localhost", "admingroup"); - gwvp_createUser("user@localhost", "userer", "password", "user", "initial pleb user", 0); - $userid = gwvp_getUserId("user@localhost"); - error_log("userid is $userid"); - gwvp_createGroup("usergroup", "usergroup", 0, $userid); - gwvp_addGroupMember("user@localhost", "usergroup"); + + // user1 + gwvp_createUser("user1@localhost", "userer1", "password", "user1", "initial pleb user1", 0); + $userid1 = gwvp_getUserId("user1@localhost"); + error_log("userid1 is $userid1"); + gwvp_createGroup("usergroup1", "usergroup1", 0, $userid1); + gwvp_addGroupMember("user1@localhost", "usergroup1"); + + // user2 + gwvp_createUser("user2@localhost", "userer2", "password", "user2", "initial pleb user2", 0); + $userid2 = gwvp_getUserId("user2@localhost"); + error_log("userid2 is $userid2"); + gwvp_SendMessage("info", "blank db re-created"); - gwvp_AddRepo("repo1", "this is a test repo1", 1); - gwvp_AddRepo("repo2", "this is a test repo2", 1); - gwvp_AddRepo("repo2", "this is a test repo3", 1); + gwvp_AddRepo("repo1", "this is a test repo1", $adminid); + gwvp_AddRepo("repo2", "this is a test repo2", $userid1); + gwvp_AddRepo("repo3", "this is a test repo3", $userid2); gwvp_setConfigVal("repodir", "/tmp/"); @@ -140,7 +148,7 @@ function gwvp_DebugBody() Generate info message
Create a bunch of users and groups
Drop users/groups/groupmemberships
- Recreate db
+ Recreate test db
gitload provider loaded on homepage
"; +} + function gwvp_repoPermissionCheck($repo, $user) { return true; @@ -159,6 +165,15 @@ function gwvp_gitBackendInterface() } } +function gwvp_canManageRepo($userid, $repoid) +{ + // only the owner or an admin can do these tasks + error_log("Checking repoid, $repoid against userid $userid"); + + if(gwvp_IsUserAdmin(null, null, $userid)) return true; + if(gwvp_IsRepoOwner($userid, $repoid)) return true; + return false; +} function gwvp_callGitBackend($repo) { diff --git a/gwvplib/gwvprepoadmin.php b/gwvplib/gwvprepoadmin.php index bcf9d25..cc78ba4 100644 --- a/gwvplib/gwvprepoadmin.php +++ b/gwvplib/gwvprepoadmin.php @@ -28,6 +28,9 @@ function gwvp_RepoAdminCallMe() case "updateperms": return "gwvp_UpdateRepoPerms"; break; + case "details": + return "gwvp_RepoDetailsPage"; + break; default: return "gwvp_RepoAdminPage"; } @@ -57,6 +60,16 @@ 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; @@ -241,6 +254,7 @@ function gwvp_RepoAdminPageBody() // 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) { @@ -248,7 +262,15 @@ function gwvp_RepoAdminPageBody() $rname = $u_res["name"]; $rdesc = $u_res["description"]; $rown = gwvp_getUserName($u_res["owner"]); - echo ""; + $manordetslink = "details"; + $manordets = "Details"; + if(isset($_SESSION["id"])) { + if(gwvp_canManageRepo($_SESSION["id"], $rid)) { + $manordetslink = "manage"; + $manordets = "Manage"; + } + } + echo ""; } echo "
Repo NameRepo DescriptionRepo Owner
$rname$rdesc$rownDetails
$rname$rdesc$rown$manordets
"; @@ -304,6 +326,8 @@ function gwvp_ManageRepoPageBody() echo "
"; echo ""; + + echo "

Repository Permissions

"; echo "
"; echo ""; echo ""; diff --git a/gwvplib/gwvpweb.php b/gwvplib/gwvpweb.php index 6f8c36c..92ed814 100644 --- a/gwvplib/gwvpweb.php +++ b/gwvplib/gwvpweb.php @@ -3,6 +3,9 @@ // this function is the initial insertion point for the web calls, here we need to determine where we go global $CALL_ME_FUNCTIONS; +// the home_page_provders bit is an array +global $HOME_PAGE_PROVIDERS; + $MENU_ITEMS["00home"]["text"] = "Home"; $MENU_ITEMS["00home"]["link"] = "$BASE_URL"; @@ -151,6 +154,7 @@ function gwvp_MenuBuilder() ksort($MENU_ITEMS); + echo "\n\n\n"; echo "
VisibilityRead/CloneWrite/Push
"; foreach($MENU_ITEMS as $key => $val) { $link = $val["link"]; @@ -183,6 +187,7 @@ function gwvp_MenuBuilder() } } echo "
Menu
"; + echo "\n\n\n"; } @@ -190,18 +195,29 @@ function gwvp_LoginBuilder() { global $WEB_ROOT_FS, $BASE_URL; + echo "\n\n\n"; $login = gwvp_IsLoggedIn(); if($login === false) { gwvp_SingleLineLoginForm(); } else { echo "Hello, ".gwvp_GetFullName($login)." logout"; } + echo "\n\n\n"; } // builds the body structure function gwvp_BodyBuilder() { - echo "I AM THE MAIN BODY, FEAR ME!!!!"; + global $HOME_PAGE_PROVIDERS; + + echo "I AM THE MAIN BODY, FEAR ME!!!! - have no idea whats going to go here"; + if(isset($HOME_PAGE_PROVIDERS)) { + ksort($HOME_PAGE_PROVIDERS); + foreach($HOME_PAGE_PROVIDERS as $provider) { + error_log("Loading home_page_provider, $provider"); + $provider(); + } + } } // builds the tail structure diff --git a/www/css/normal.css b/www/css/normal.css index 7a72dd3..586f541 100644 --- a/www/css/normal.css +++ b/www/css/normal.css @@ -142,6 +142,10 @@ input.login { border: 1px solid; } +form { + margin: 0em; +} + .buttons { border: 1px solid; } -- 1.7.0.4