From 4ac39bd0d396a4d50760472e5949aac5657e7857 Mon Sep 17 00:00:00 2001 From: Skylar Ittner Date: Thu, 21 Dec 2017 01:21:18 -0700 Subject: [PATCH] Add basic group info APIs --- api.php | 49 +++++++++++++++++++++++++++++++++ database.mwb | Bin 19616 -> 19596 bytes database.sql | 4 +-- database_upgrade/1.0.1_1.1.sql | 3 ++ 4 files changed, 54 insertions(+), 2 deletions(-) diff --git a/api.php b/api.php index 6e36466..dbfa58e 100644 --- a/api.php +++ b/api.php @@ -305,6 +305,55 @@ switch ($VARS['action']) { } } exit(json_encode(["status" => "OK", "apps" => $apps])); + case "getusersbygroup": + if ($VARS['gid']) { + if ($database->has("groups", ['groupid' => $VARS['gid']])) { + $groupid = $VARS['gid']; + } else { + exit(json_encode(["status" => "ERROR", "msg" => lang("group does not exist", false)])); + } + } else { + http_response_code(400); + die("\"400 Bad Request\""); + } + if ($VARS['get'] == "username") { + $users = $database->select('assigned_groups', ['[>]accounts' => ['uid' => 'uid']], 'username', ['groupid' => $groupid]); + } else { + $users = $database->select('assigned_groups', 'uid', ['groupid' => $groupid]); + } + exit(json_encode(["status" => "OK", "users" => $users])); + break; + case "getgroupsbyuser": + if ($VARS['uid']) { + if ($database->has("accounts", ['uid' => $VARS['uid']])) { + $empid = $VARS['uid']; + } else { + exit(json_encode(["status" => "ERROR", "msg" => lang("user does not exist", false)])); + } + } else if ($VARS['username']) { + if ($database->has("accounts", ['username' => strtolower($VARS['username'])])) { + $empid = $database->select('accounts', 'uid', ['username' => strtolower($VARS['username'])]); + } else { + exit(json_encode(["status" => "ERROR", "msg" => lang("user does not exist", false)])); + } + } else { + http_response_code(400); + die("\"400 Bad Request\""); + } + $groups = $database->select('assigned_groups', ["[>]groups" => ["groupid" => "groupid"]], ['groups.groupid (id)', 'groups.groupname (name)'], ['uid' => $empid]); + exit(json_encode(["status" => "OK", "groups" => $groups])); + break; + case "getgroups": + $groups = $database->select('groups', ['groupid (id)', 'groupname (name)']); + exit(json_encode(["status" => "OK", "groups" => $groups])); + break; + case "groupsearch": + if (is_empty($VARS['search']) || strlen($VARS['search']) < 2) { + exit(json_encode(["status" => "OK", "result" => []])); + } + $data = $database->select('groups', ['groupid (id)', 'groupname (name)'], ['groupname[~]' => $VARS['search'], "LIMIT" => 10]); + exit(json_encode(["status" => "OK", "result" => $data])); + break; default: http_response_code(404); die(json_encode("404 Not Found: the requested action is not available.")); diff --git a/database.mwb b/database.mwb index 1b0386020041fc89d6c169dafd1e282a41b44aaf..dbcce567a120f6456e19148a94af1cfd95c55651 100644 GIT binary patch delta 16617 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 diff --git a/database.sql b/database.sql index b6c140c..052b496 100644 --- a/database.sql +++ b/database.sql @@ -1,5 +1,5 @@ -- MySQL Script generated by MySQL Workbench --- Mon 18 Dec 2017 12:56:23 AM MST +-- Thu 21 Dec 2017 01:19:57 AM MST -- Model: New Model Version: 1.0 -- MySQL Workbench Forward Engineering @@ -123,7 +123,7 @@ ENGINE = InnoDB; -- Table `accounthub`.`groups` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `accounthub`.`groups` ( - `groupid` INT NOT NULL, + `groupid` INT NOT NULL AUTO_INCREMENT, `groupname` VARCHAR(45) NOT NULL, PRIMARY KEY (`groupid`), UNIQUE INDEX `groupid_UNIQUE` (`groupid` ASC), diff --git a/database_upgrade/1.0.1_1.1.sql b/database_upgrade/1.0.1_1.1.sql index 5da1945..3c199f5 100644 --- a/database_upgrade/1.0.1_1.1.sql +++ b/database_upgrade/1.0.1_1.1.sql @@ -12,3 +12,6 @@ CREATE TABLE IF NOT EXISTS `onetimekeys` ( ON UPDATE NO ACTION) ENGINE = InnoDB DEFAULT CHARACTER SET = utf8 + +ALTER TABLE `groups` +CHANGE COLUMN `groupid` `groupid` INT(11) NOT NULL AUTO_INCREMENT \ No newline at end of file