From 1452dd79726e16b3ea6d79e99d9168025c82f956 Mon Sep 17 00:00:00 2001 From: vgalvoso Date: Wed, 3 Apr 2024 19:38:02 +0800 Subject: [PATCH] simplified --- .env | 2 +- Core/DAL.php | 16 +- Core/Database.php | 8 + Core/Helper.php | 124 +++++--- Models/Model.php | 35 --- Models/Users.php | 16 - README.md | 366 +++++++++++----------- View/dashboard.php | 3 + View/index.php | 20 +- View/login/login_failed.php | 21 ++ View/not_found.php | 20 ++ api/login.php | 39 +++ api/users.php | 79 +++-- composer.json | 3 +- index.php | 5 +- public/res/fonts/proxima-nova-bold.otf | Bin 63808 -> 0 bytes public/res/fonts/proxima-nova-regular.otf | Bin 62892 -> 0 bytes 17 files changed, 436 insertions(+), 321 deletions(-) delete mode 100644 Models/Model.php delete mode 100644 Models/Users.php create mode 100644 View/dashboard.php create mode 100644 View/login/login_failed.php create mode 100644 View/not_found.php create mode 100644 api/login.php delete mode 100644 public/res/fonts/proxima-nova-bold.otf delete mode 100644 public/res/fonts/proxima-nova-regular.otf diff --git a/.env b/.env index f716961..d0b1b9b 100644 --- a/.env +++ b/.env @@ -1,5 +1,5 @@ APP_ENV=development -BASE_URL=http://localhost/phpeasy +BASE_URL=http://localhost:8085/phpeasy DB_HOST = localhost DB_USER = root diff --git a/Core/DAL.php b/Core/DAL.php index edb9223..5c633a4 100644 --- a/Core/DAL.php +++ b/Core/DAL.php @@ -4,12 +4,14 @@ use PDO; use PDOException; -use function Core\Helper\output; + +use function Core\Helper\error; +use function Core\Helper\response; class DAL{ protected $conn; - public $error; + private $error; /** * Connect to database @@ -21,7 +23,7 @@ public function __construct($dbase = "default"){ $database = $db[$dbase] ?? null; if($database == null){ $data = ["status"=>"Failed","message"=>"Database config [$dbase] not found"]; - output($data); + response($data); } $server = $db[$dbase]["server"]; $user = $db[$dbase]["user"]; @@ -39,6 +41,10 @@ public function __construct($dbase = "default"){ $this->conn = new PDO("$driver:host=$server;dbname=$dbname;charset=$charset",$user,$pass, [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]); } + if($driver=="sqlite"){ + $this->conn = new PDO("sqlite:$server",$user,$pass, + [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]); + } }catch(PDOException $e){ exit($this->error = $e); } @@ -229,4 +235,6 @@ public function rollback(){ return $this->exec("if @@TRANCOUNT > 0 ROLLBACK"); return $this->conn->rollBack(); } -} \ No newline at end of file +} + +//EOF diff --git a/Core/Database.php b/Core/Database.php index 1c3c5c2..9122a3f 100644 --- a/Core/Database.php +++ b/Core/Database.php @@ -15,5 +15,13 @@ "dbname" => "srspos", "driver" => "sqlsrv", "charset" => "utf8" + ], + "sqlite" => [ + "server" => "path-to-database-sqlite", + "user" => "", + "pass" => "", + "dbname" => "srspos", + "driver" => "sqlite", + "charset" => "utf8" ] ]; \ No newline at end of file diff --git a/Core/Helper.php b/Core/Helper.php index f626aea..5372e7b 100644 --- a/Core/Helper.php +++ b/Core/Helper.php @@ -28,7 +28,7 @@ function init(){ //get $path except first "/" $path = substr($path, 1); //remove string from start to second "/" - if(getenv('APP_ENV') == "development") + //if(getenv('APP_ENV') == "development") $path = substr($path, strpos($path, "/") + 1); $method = $_SERVER['REQUEST_METHOD']; }else{ @@ -40,39 +40,16 @@ function init(){ } /** - * Declare a php file as an HTTP POST endpoint + * Include specified view */ -function post(){ - if(isset($_SESSION["in_script"]) && session("in_script")){ - session("in_script",false); - return true; +function to($route){ + if(file_exists("View/$route.php")) + include "View/$route.php"; + else if(file_exists("View/$route/index.php")) + include "View/$route/index.php"; + else{ + include("View/not_found.php"); } - if(REQUEST_METHOD != "POST") - notFound(); -} - -/** - * Declare a php file as an HTTP GET endpoint - */ -function get(){ - if(REQUEST_METHOD != "GET") - notFound(); - if(isset($_SESSION["in_script"]) && session("in_script")){ - session("in_script",false); - return true; - } -} - -/** - * Include specified view or api - */ -function to($route,$in_script=true){ - if(file_exists($route.".php")) - include $route.".php"; - else - include $route."/index.php"; - if($in_script) - session("in_script",true); die; } @@ -100,6 +77,19 @@ function notFound(){ response($errData,404); } +/** + * Output response with 400 status code and error message + * @param string|array $message - Error message + */ +function error(string|array $message){ + $errData = [ + "status" => "failed", + "code" => 400, + "error" => $message + ]; + response($errData,400); +} + /** * Sanitize string for rendering */ @@ -128,7 +118,7 @@ function encloseItems($arr,$char = "'"){ * Available content-types: [ application/json | plain/text | text/html ] * @return void */ -function response(string|array $content,int $statusCode = 200,string $contentType = 'application/json',){ +function response(string|array $content,int $statusCode = 200,string $contentType = 'application/json'){ header("Content-Type: $contentType"); http_response_code($statusCode); $data = match ($contentType) { @@ -210,14 +200,13 @@ function session($sessionVar, $value = null){ return $_SESSION[$sessionVar] ?? null; } -// Converting array of objects to array of values +/** + * COnvert array of objects into indexed array of values specified by object item + * @param array $objArr The array of objects to convert + * @param string $item + */ function objArrayToValues($objArr,$item){ - $arr = []; - foreach($objArr as $obj){ - $obj = (object)$obj; - array_push($arr, $obj->$item); - } - return $arr; + return array_map(fn($obj)=>((object)$obj)->$item,$objArr); } /** @@ -240,7 +229,7 @@ function view(){ $rawPath = (strpos(PATH,"?")) ? strstr(PATH, '?', true) : PATH; if(!file_exists("View/$rawPath.php")) if(!file_exists("View/$rawPath/index.php")) - return false; + to("not_found"); else $rawPath .= "/index"; @@ -249,13 +238,12 @@ function view(){ } /** - * State that a php view file is an SPA component. - * This function will prevent the view file to be accessible via url, - * can only be accessed through ajax call + * State that a response is an SPA component. + * Prevent access through Sec-Fetch-Mode navigate. */ function component(){ if(isset($_SERVER["HTTP_SEC_FETCH_MODE"]) && ($_SERVER["HTTP_SEC_FETCH_MODE"] == "navigate")) - notFound(); + to("not_found"); } /** @@ -301,10 +289,50 @@ function startAPI(){ * @return array */ function getRequestBody(){ - $data = file_get_contents("php://input"); - if(!$data = json_decode($data,true)) - response("Invalid json data"); + $input = file_get_contents("php://input"); + $data = []; + + switch(REQUEST_METHOD){ + case "POST": + $data = $_POST; + break; + case "GET": + return $_GET; + break; + case "PATCH": + case "PUT": + if(!$data = json_decode($input,true)) + response("Invalid JSON data"); + return $data; + break; + } + if(empty($data)) + if(!$data = json_decode($input,true)) + response("Invalid JSON data"); return $data; } +/** + * Redirect to specified view. If path is not specified, redirect based on session. + * @param string $view Path to view + */ + +function redirect($path=""){ + if(!empty($path)){ + header("Location: ".BASE_URL."/".$path); + exit; + } + if(isset($_SESSION["usertype"])){ + if(PATH == $_SESSION["usertype"]) + return; + header("Location: ".BASE_URL."/".$_SESSION["usertype"]); + exit; + }else{ + if(!empty(PATH)){ + header("Location: ".BASE_URL); + exit; + } + } +} + //EOF diff --git a/Models/Model.php b/Models/Model.php deleted file mode 100644 index 27e22f8..0000000 --- a/Models/Model.php +++ /dev/null @@ -1,35 +0,0 @@ -db = $db; - } - - public function getAll(string $condition = "1=1",array $params = []){ - $sql = "SELECT * FROM $this->table WHERE $condition"; - return $this->db->getItems($sql,$params); - } - - public function get($id){ - $sql = "SELECT * FROM $this->table WHERE id=:id"; - return $this->db->getItem($sql,["id" => $id]); - } - - public function add($values){ - return $this->db->insert($this->table,$values); - } - - public function delete($id){ - return $this->db->delete($this->table,"id=:id",["id"=>$id]); - } -} - -//EOF diff --git a/Models/Users.php b/Models/Users.php deleted file mode 100644 index 57833d7..0000000 --- a/Models/Users.php +++ /dev/null @@ -1,16 +0,0 @@ -table = "users"; - } -} - -//EOF diff --git a/README.md b/README.md index ba21784..a80cfa7 100644 --- a/README.md +++ b/README.md @@ -1,122 +1,90 @@ # Welcome to PHPEasy -PHPEasy is a monolithic API-centric php framework. -It's goal is to enable php developers to code freely, write less and do more. +PHPEasy is an API-centric PHP framework. Code as close to PHP language itself rather than a framework. + ## Features -1. Monolithic API-centric architecture (non-MVC framework) -2. File-based routing -3. Made for HTMX -4. Simple Database Abstraction Layer -5. Helper Functions such as input validator, code generator, upload file, etc. -6. Promotes procedural and OOP hybrid coding -7. Supports PHP 8 and above , MySQL, MSSQL and SQlite -8. Includes basic css and js helpers. +1. REST API development +2. Full-stack web app development +3. File-based routing +4. Lightweight, no too much dependencies and configurations +5. Simple Database Abstraction Layer +6. Helper Functions such as input validator, code generator, upload file, etc. +7. Promotes ubt not limitted to procedural programming +8. Supports PHP 8 and above , MySQL, MSSQL and SQlite +9. Includes basic css(mystyle.css) and js(vanscript.js) utility library. ## Main Points -1. Use of Data Abstraction Layer rather than ORM, focused on maximum performance without large database calls used by orms. +1. Promotes to master the PHP language itself rather than a framework. +2. Direct to the point coding, no too much abstractions. +3. Use of Data Abstraction Layer rather than ORM, focused on maximum performance without large database calls used by orms. ## Table of Contents I. [Intro] -II. [Installation] +II. [Pre-requisites] + +III. [Installation] 1. [Views] 2. [APIs] 3. [API Functions] 4. [Working with Database] -5. [Model] +5. [Progressive] +6. [Extra] [Intro]: #intro +[Pre-requisites]: #pre-requisites [Installation]: #installation [Views]: #1-views [APIs]: #2-apis [API Functions]: #3-api-functions [Working with Database]: #4-working-with-database -[Model]: #5-model +[Progressive]: #5-progressive +[Extra]: #6-extras ## Intro +This is for someone who loves Vanilla PHP and its simplicity. Nowadays you must follow coding standards(OOP,SOLID,DRY,etc.) and mvc frameworks to do web development using PHP. PHP frameworks out there comes with too much files, configurations, classes and dependencies. I made this mini framework so php developers can do web development faster while mastering and enjoying -the PHP language itself (Yes! no need to learn libraries a,b,c...). +the PHP language itself (Yes! no need to learn so many libraries). ## Pre-requisites -Hands-on is the best way to learn, so let's get started. -1. You must have php web server installed and setup like(XAMPP). -2. You must have composer installed. -3. Create the sample database -Execute this MySQL query to create phpeasy_db -with 1 table (users) - -```SQL -CREATE DATABASE IF NOT EXISTS phpeasy_db; - -USE phpeasy_db; - -CREATE TABLE IF NOT EXISTS users ( - id INT(11) AUTO_INCREMENT PRIMARY KEY, - username VARCHAR(255), - password VARCHAR(255), - firstname VARCHAR(255), - lastname VARCHAR(255) -); -``` +1. PHP 8^. +2. Composer. ## Installation -Composer - open a terminal inside htdocs folder and execute the command below. +Composer - open a terminal inside your root or htdocs folder and execute the command below. ``` composer create-project vgalvoso/phpeasy my_phpeasy ``` +you can change [my_phpeasy] to any project name you want. + +Now open your browser and go to http://localhost/my_phpeasy ## 1. Views Create views inside View folder. View routes will be automatically created based on View folder structure. -The index.php inside View folder is the entry point, -so route will be http://localhost/phpeasy. -Now create View/admin.php and paste the code below -```html - - - - - - Document - - - - - -
-
- - - - - -
- -
-
- -
- - -``` -the route will be http://localhost/phpeasy/admin +Look at examples below. +1. View file path: [View/admin/dashboard.php], the route: ["admin/dashboard"]. +2. View file path: [View/login.php], the route: ["login"]. + +You can ommit the file name if the view file is named [index.php]: +1. View file path: [View/index.php], the route: [""]. +2. View file path: [VIew/admin/index.php], the route: ["admin"]. ## 1.1 View components -(SPA)Single Page Applications are composed of view components, -view components are accessible only through ajax requests. +(SPA)Single Page Applications are composed of view components. -In PHPEasy just call component(); at the top of view file to specify it as a view component. +View components are accessible only through ajax requests. -To organize views create a subdirectory and place view components inside. +Just call Core/Helper/component(); at the top of view file to specify it as a view component. -Create View/admin/users_table.php and paste the code below +Example: View/admin/users_table.php ```html - + @@ -131,162 +99,229 @@ Create View/admin/users_table.php and paste the code below
``` -Now go to http://localhost/phpeasy/admin and click the "Show Table" button. - ## 2. APIs -Create APIs inside api folder. +PHPEasy supports REST API. -API routes will automaticaly created through api folder file structure. +All APIs are placed inside api folder. -Let's create an api for user creation. -Create api/addUser.php and paste the code below. +API routes will automaticaly created through api folder file structure and implemented functions inside the php file named with http verbs e.g.(get(),post(),patch()). + +So for example you omitted the delete() function, you can't call DELETE api/users/{id}. + +Here is an example of a Users REST API. + +API file path: [api/users.php] + +Routes: +1. GET api/users - Get all users +2. GET api/users/{id} - Get user by id +3. POST api/users - Create new user +4. DELETE api/users/{id} - Delete a user +5. PUT api/users/{id} - Replace user +6. PATCH api/users/{id} - Update a user ```php "required|string", - "upass" => "required|string", - "firstName" => "required|string", - "lastName" => "required|string"]; -validate($_POST,$dataRules); +use Core\DAL; -//Filter variables to be included from request data -extract(allowedVars($_POST,$dataRules)); +use function Core\Helper\error; +use function Core\Helper\getRequestBody; +use function Core\Helper\response; +use function Core\Helper\startAPI; -//Initialize the database -$db = new DAL(); +startAPI(); -//prepare values to insert -$values = ["username" => $uname, - "password" => $upass, - "firstname" => $firstName, - "lastname" => $lastName]; +function get(){ + $db = new DAL(); + //GET user by id + if(defined('URI_PARAM')){ + $query = "SELECT * FROM users WHERE id = :id"; + $param = ["id" => URI_PARAM]; + if(!$user = $db->getItem($query,$param)) + response([]); + response([$user]); + } + //GET All users + $query = "SELECT * FROM users"; + $users = $db->getItems($query); + response($users); +} -//Tries to insert value to users table -if(!$db->insert("users",$values)) - //return a http 403 response code and stops the script - invalid("Can't add new user!"); +function post(){ + $db = new DAL(); + $rq = (object)getRequestBody(); + $values = [ + "username" => $rq->username, + "firstname" => $rq->firstname, + "lastname" => $rq->lastname, + "usertype" => $rq->usertype, + "password" => password_hash($rq->password,PASSWORD_BCRYPT) + ]; + if(!$db->insert("users",$values)) + error($db->getError()); + response("New User added!"); +} -//Submits a get request to api/getAllUsers -to("api/getAllUsers"); -``` -the route for this will be http://localhost/phpeasy/api/addUser +function delete(){ + if(!defined('URI_PARAM')) + error("Invalid Request! Please specify user id"); + $db = new DAL(); + $id = URI_PARAM; + if(!$db->delete("users","id=:id",["id" => $id])) + error($db->getError()); + response("User Deleted Successfuly!"); +} + +function patch(){ + if(!defined('URI_PARAM')) + error("Invalid Request! Please specify user id"); + $db = new DAL(); + $id = URI_PARAM; + $rq = (object)getRequestBody(); + $values = [ + "firstname" => $rq->firstname, + "lastname" => $rq->lastname]; + $params = ["id" => $id]; + + $db = new DAL(); + + if(!$db->update("users","id=:id",$values,$params)) + error($db->getError()); + response("User Updated Successfuly"); +} + +//EOF -API implementation in PHPEasy promotes using guard clauses for more readable and shorter code. +``` ## 3. API Functions APIs in PHPEasy encourages a procedural coding style, so here are the list of functions that you can use in API implementations: -## 3.1 get() -Declare a php file as HTTP GET endpoint. -- Can't be accessed through Sec-Fetch-Mode('navigate') -- Place it at the top of php file. +## 3.3 startAPI +Initialize a PHP file as a REST API. + +After calling this function you can implement http verbs as function. Example: ```php username; +//$password = $rq->password; ``` - -## 3.3 validate($inputs,$validations) +## 3.5 validate($inputs,$validations) Validate a key-value pair array based on validation rules. -- Returns true if valid, Echo errors if invalid and exits the script. +- Return true if valid, exit and return 400 status code and error details if not. - Use it to validate request data ($_GET,$_POST). - `$inputs` - Associative array to be validated. - `$validations` - Associative array containing keys that matched keys in $data and values are the validation rules. Example: -api/addUser.php ```php "required|string", "upass" => "required|string", "firstName" => "required|string", "lastName" => "required|string"]; -validate($_POST,$dataRules); +validate($rq,$dataRules); ``` -## 3.4 allowedVars($inputs,$rules) -Filter an associative array based on $rules(same as $dataRules in validate()) and place it in 1 array. -- returns - Associative Array -- `$inputs` - Associative array to filter ($_GET/$_POST) -- `$rules` - Associative array +## 3.6 error(string|array $message) +Output response with 400 status code and error message +- `$message` - String|Array Error Message + +## 3.7 response(string|array $content,int $statusCode = 200,string $contentType = 'application/json') +Set content type and status code then output content and exit script +- `$content` string|array - The content to output +- `$statusCode` int - The response status code (default 200) +- `$contentType` string - The content type (default application/json). + Available content-types: [ application/json | plain/text | text/html ] + +## 3.8 to($route) +Include specified view +- `$route` string - View file path + +Mostly used for calling SPA component -## 3.5 invalid($message) -Return HTTP 403 response code, message and exits the script. -- `$message` - String for response +## 3.9 redirect($path="") +Redirect to specified view. -## 3.6 to($getEndpoint) -Submits a GET request and echo its response -- `$getEndpoint` - GET API endpoint +If path is not specified, redirect based on session. +- `$view` string - Path to view -## 3.7 esc($string) +## 3.10 esc($string) Shorter syntax for htmlspecialchars() - `$string` - String to sanitize -- Use it for echoing HTML sanitazion. +- Use it for HTML sanitization. -## 3.8 output($content,$contentType = 'application/json') -Set content type, output the content and exit script -- `$content` - String to output -- `$contentType` - Sets content-type header defaults application/json - -## 3.9 generateCode($length = 6) +## 3.11 generateCode($length = 6) Generate a randomized alphanumeric code - `$length` - Length of code to be generated (default 6) -## 3.10 objectToSession($object) +## 3.12 objectToSession($object) Extract object keys and values and store to session array - `$object` - The object to extract Example: ```php getDetails($userId)) +if(!$user = $db->getItem(1)) invalid("User does not exist!"); objToSession($userInfo); ``` -## 3.11 uploadFile($uploadFile,$uploadPath) +## 3.13 uploadFile($uploadFile,$uploadPath) Generate new file name and upload the file - `string $uploadFile` $_FILE key * `string $uploadPath` Location for upload file must add "/" to the end * returns boolean|string New file name if successful, false otherwise -## 3.12 session($sessionVar,$value = null) +## 3.14 session($sessionVar,$value = null) Get/Set a session variable - `$sessionVar` - Session Key - `$value` - Sets a session value if null -## 3.13 objArrayToValues($objArr,$item) +## 3.15 objArrayToValues($objArr,$item) Convert an array of objects to indexed array containing values of specified item. - `$objArr` - Array if ibjects to convert - `$item` - object item to extract -## 3.14 invalid($message) -Returns a 403 HTTP response code, outputs `$message` and exit the script. - ## 4. Working with database PHPEasy introduces DAL() class for database operations. Supports MYSql, MSSql and SQLite. @@ -401,32 +436,6 @@ Get lastId inserted to database ## 4.12 getDriver() Get the database friver that is currently used. -# 5. Model -Create models inside Models folder - -PHPEasy utilizes dependency injection to avoid too much object creation. - -Models can be accessed in APIs and even on views, -no need to declare namespaces or `use` keyword. - -Example: - - - Models/Users.php -```php -db->insert($this->table,$values); - } - - public function getAll(){ - $sql = "SELECT * FROM $this->table;"; - return $this->db->getItems($sql); - } -} ``` - api/getAllUser.php @@ -442,6 +451,9 @@ You can use models or not depending on project requirements. DAL class is accessible directly in api files, you can execute a query directly on api implementation without creating a Model. +## 5. Progressive +PHPEasy is progressive, you can add Models, Services if you like, just update the composer.json file if you added other directory. + ## 6. Extras See - js helpers: public/js/vanscript.js diff --git a/View/dashboard.php b/View/dashboard.php new file mode 100644 index 0000000..85b5ecd --- /dev/null +++ b/View/dashboard.php @@ -0,0 +1,3 @@ +
+

Hello World!

+
\ No newline at end of file diff --git a/View/index.php b/View/index.php index 7990ed7..cf0e3b2 100644 --- a/View/index.php +++ b/View/index.php @@ -1,16 +1,24 @@ + - Document + Login + - -
-

PHPEasy

-

Monolithic API-centric PHP Framework

+ +
+
+

Login

+ + + +
- \ No newline at end of file + diff --git a/View/login/login_failed.php b/View/login/login_failed.php new file mode 100644 index 0000000..a164482 --- /dev/null +++ b/View/login/login_failed.php @@ -0,0 +1,21 @@ + + + + + + + PHPEasy | Login + + + +
+

Login Failed!

+

PHPEasy by vgalvoso

+ +
+ + \ No newline at end of file diff --git a/View/not_found.php b/View/not_found.php new file mode 100644 index 0000000..45f4bed --- /dev/null +++ b/View/not_found.php @@ -0,0 +1,20 @@ + + + + + + + PHPEasy | Page Not Found + + + +
+

Page not found!

+

PHPEasy by vgalvoso

+
+ + \ No newline at end of file diff --git a/api/login.php b/api/login.php new file mode 100644 index 0000000..2e80670 --- /dev/null +++ b/api/login.php @@ -0,0 +1,39 @@ + "required", + "password" => "required" + ]; + + if(!validate($rq,$inputRules)) + error("Invalid Request body!"); + + //Variable initialization + $rq = (object) $rq; + $username = $rq->username; + $password = $rq->password; + + $db = new DAL(); + + $query = "SELECT password FROM users WHERE username=:username"; + $params = ["username" => $username]; + if(!$user = $db->getItem($query,$params)) + redirect("login/login_failed"); + if(!password_verify($password,$user->password)) + redirect("dashboard"); + +} + +//EOF diff --git a/api/users.php b/api/users.php index 011516f..b06bdc0 100644 --- a/api/users.php +++ b/api/users.php @@ -1,52 +1,71 @@ get(URI_PARAM)) - response("User not found!",404); + //GET user by id + if(defined('URI_PARAM')){ + $query = "SELECT * FROM users WHERE id = :id"; + $param = ["id" => URI_PARAM]; + if(!$user = $db->getItem($query,$param)) + response([]); response([$user]); } - - $users = $usersModel->getAll(); + //GET All users + $query = "SELECT * FROM users"; + $users = $db->getItems($query); response($users); } function post(){ $db = new DAL(); - $db->startTrans(); - $users = new Users($db); - - $postData = getRequestBody(); - validate($postData,[ - "username" => "required|string", - "password" => "required|string", - "firstname" => "required|string", - "lastname" => "required|string" - ]); - - $values = ["username" => $postData["username"], - "password" => password_hash($postData["password"],PASSWORD_BCRYPT), - "firstname" => $postData["firstname"], - "lastname" => $postData["lastname"]]; - - if(!$users->add($values)) - response("Can't add user!".$db->getError(),400); - - $db->commit(); - response(["status" => "Success"]); + $rq = (object)getRequestBody(); + $values = [ + "username" => $rq->username, + "firstname" => $rq->firstname, + "lastname" => $rq->lastname, + "usertype" => $rq->usertype, + "password" => password_hash($rq->password,PASSWORD_BCRYPT) + ]; + if(!$db->insert("users",$values)) + error($db->getError()); + response("New User added!"); +} + +function delete(){ + if(!defined('URI_PARAM')) + error("Invalid Request! Please specify user id"); + $db = new DAL(); + $id = URI_PARAM; + if(!$db->delete("users","id=:id",["id" => $id])) + error($db->getError()); + response("User Deleted Successfuly!"); +} + +function patch(){ + if(!defined('URI_PARAM')) + error("Invalid Request! Please specify user id"); + $db = new DAL(); + $id = URI_PARAM; + $rq = (object)getRequestBody(); + $values = [ + "firstname" => $rq->firstname, + "lastname" => $rq->lastname]; + $params = ["id" => $id]; + + $db = new DAL(); + + if(!$db->update("users","id=:id",$values,$params)) + error($db->getError()); + response("User Updated Successfuly"); } //EOF diff --git a/composer.json b/composer.json index 21fcc2c..fa6fc68 100644 --- a/composer.json +++ b/composer.json @@ -4,8 +4,7 @@ "license": "MIT", "autoload": { "psr-4": { - "Core\\": "Core/", - "Models\\": "Models/" + "Core\\": "Core/" }, "files":[ "Core/Helper.php", diff --git a/index.php b/index.php index 1b54000..f41f6cf 100644 --- a/index.php +++ b/index.php @@ -7,6 +7,7 @@ use function Core\Helper\api; use function Core\Helper\view; - if(!view()) - api(); \ No newline at end of file + api(); + +//EOF diff --git a/public/res/fonts/proxima-nova-bold.otf b/public/res/fonts/proxima-nova-bold.otf deleted file mode 100644 index 4df9e17140b1575d5b93ccdf77220b0241468d31..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 63808 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�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 LY^j81XJ`Kg;PZ?!