diff --git a/MyObsidianVault/WebDev/1 Devilbox/1.) Install Devilbox + CodeIgniter.md b/MyObsidianVault/WebDev/1 Devilbox/1.) Install Devilbox + CodeIgniter.md index 7ca8d84..e5e7e9c 100644 --- a/MyObsidianVault/WebDev/1 Devilbox/1.) Install Devilbox + CodeIgniter.md +++ b/MyObsidianVault/WebDev/1 Devilbox/1.) Install Devilbox + CodeIgniter.md @@ -60,7 +60,7 @@ Access mysql from inside container mysql -h 127.0.0.1 -u root -CREATE DATABASE TEST_DB; +CREATE DATABASE godotweb; ``` diff --git a/MyObsidianVault/WebDev/2 CodeIgniter/API Project setup/01.) Create project + set default locale 1.md b/MyObsidianVault/WebDev/2 CodeIgniter/API Project setup/01.) Create project + set default locale 1.md index f512795..1929079 100644 --- a/MyObsidianVault/WebDev/2 CodeIgniter/API Project setup/01.) Create project + set default locale 1.md +++ b/MyObsidianVault/WebDev/2 CodeIgniter/API Project setup/01.) Create project + set default locale 1.md @@ -11,6 +11,28 @@ ln -s myprojectapp/public htdocs ``` +Setup db settings in .env: +```txt +CI_ENVIRONMENT = development + +#-------------------------------------------------------------------- +# APP +#-------------------------------------------------------------------- +app.baseURL = 'http://godotweb.local' + +#-------------------------------------------------------------------- +# DATABASE +#-------------------------------------------------------------------- + +database.default.hostname = godotweb.local +database.default.database = godotweb +database.default.username = root +database.default.password = +database.default.DBDriver = MySQLi +database.default.DBPrefix = +database.default.port = 3306 +``` + Add shield: ```bash composer require codeigniter4/shield diff --git a/MyObsidianVault/WebDev/2 CodeIgniter/API Project setup/02.) Create Auth Controller.md b/MyObsidianVault/WebDev/2 CodeIgniter/API Project setup/02.) Create Auth Controller.md index b05b7ed..021f973 100644 --- a/MyObsidianVault/WebDev/2 CodeIgniter/API Project setup/02.) Create Auth Controller.md +++ b/MyObsidianVault/WebDev/2 CodeIgniter/API Project setup/02.) Create Auth Controller.md @@ -12,7 +12,12 @@ $routes->get("logout", "AuthController::logout", ["filter" => "apiauth"]); Api/AuthController.php ```php -use CodeIgniter\Restful\ResourceController; + "required|is_unique[users.username]", - "email" => "required|valid_email|is_unique[auth_identities.secret]", // gets written to secret field in user table - "password" => "required" // gets written to secret 2 field in user table + "username" => "required|is_unique[users.username]", + "email" => "required|valid_email|is_unique[auth_identities.secret]", // gets written to secret field in user table + "password" => "required" // gets written to secret 2 field in user table ]; - - if (!$this->validate($rules)) { + + if (!$this->validate($rules)) + { return $this->respondCreated([ "status" => false, - "message" => $this->validator->getErrors(), + "message" => $this->validator->getErrors(), "data" => [] - ] - ); - + ]); + } + $um = new UserModel(); // coming from Shield $userEntity = new User([ "username" => $this->request->getVar("username"), "email" => $this->request->getVar("email"), "password" => $this->request->getVar("password") ]); + $um->save($userEntity); - + return $this->respondCreated( [ "status" => true, "message" => "User saved successfully", "data" => [] ]); } - + ////////////////////////////////////// - // Post public function login() - { - if(auth()->loggedIn()){ + { + if(auth()->loggedIn()) { auth()->logout(); } $rules = [ - "email" => "required|valid_email", - "password" => "required" + "email" => "required|valid_email", + "password" => "required" ]; if (!$this->validate($rules)) { @@ -69,45 +75,70 @@ class AuthController extends ResourceController "status" => false, "message" => $this->validator->getErrors(), "data" => [] - ]); - + ]); + } + // success $credentials = [ - "email" => $this->request->getVar("email"), - "password" => $this->request->getVar("password") + "email" => $this->request->getVar("email"), + "password" => $this->request->getVar("password") ]; - + $loginAttempt = auth()->attempt($credentials); + if (!$loginAttempt->isOK()) { return $this->respondCreated([ - "status" => false, - "message" => "Invalid login details", - "data" => [] + "status" => false, + "message" => "Invalid login details", + "data" => [] ]); - + } + // We have a valid data set + $um = new UserModel(); $userData = $um->findById(auth()->id()); $token = $userData->generateAccessToken("thisismysecretkey"); $auth_token = $token->raw_token; // Only available after generation - + return $this->respondCreated( [ - "status" => true, - "message" => "User logged in successfully", - "data" => [ + "status" => true, + "message" => "User logged in successfully", + "data" => [ "token" => $auth_token - ] ); + ] + ]); } - + //////////////////////// - - public function logout() { + + public function logout() + { auth()->logout(); auth()->user()->revokeAllAccessTokens(); - return $this->respondCreated([ - "status" => true, - "message" => "User logged out successfully", + "status" => true, + "message" => "User logged out successfully", + "data" => [] + ]); + } + + //Get + public function profile() + { + $userId = auth()->id(); + return $this->respondCreated([ + "status" => true, + "message" => "Profile api called", + "data" => [] + ]); + } + + public function accessDenied() + { + return $this->respondCreated([ + "status" => false, + "message" => "Invalid access", "data" => [] ]); } diff --git a/MyObsidianVault/WebDev/2 CodeIgniter/API Project setup/03.) API Routes Setup.md b/MyObsidianVault/WebDev/2 CodeIgniter/API Project setup/03.) API Routes Setup.md index 5f1589e..15ca162 100644 --- a/MyObsidianVault/WebDev/2 CodeIgniter/API Project setup/03.) API Routes Setup.md +++ b/MyObsidianVault/WebDev/2 CodeIgniter/API Project setup/03.) API Routes Setup.md @@ -19,53 +19,4 @@ $routes->group("api", ["namespace" => "App\Controller\Api"], function($routes) { //$routes->get("list-projects", "ProjectController::listProjects"); //$routes->delete("delete-project/(:num)", "ProjectController::deleteProject/$1"); }); -``` - -$routes->get("logout", "AuthController::logout", ["filter" => "apiauth"]); - - - - - -```php - -use CodeIgniter\Restful\ResourceController; -use CodeIgniter\Shield\Models\UserModel; -use CodeIgniter\Shield\Entities\User; - -class AuthController extends ResourceController -{ - //Post - public function register() - { - $rules = [ - "username" => "required|is_unique[users.username]", - "email" => "required|valid_email|is_unique[auth_identities.secret]", // gets written to secret field in user table - "password" => "required" // gets written to secret 2 field in user table - ]; - - if (!$this->validate($rules)) { - return $this->respondCreated([ - "status" => false, - "message" => $this->validator->getErrors(), - "data" => [] - ] - ); - - $um = new UserModel(); // coming from Shield - $userEntity = new User([ - "username" => $this->request->getVar("username"), - "email" => $this->request->getVar("email"), - "password" => $this->request->getVar("password") - ]); - $um->save($userEntity); - - return $this->respondCreated( [ - "status" => true, - "message" => "User saved successfully", - "data" => [] - ]); - } - -} ``` \ No newline at end of file diff --git a/MyObsidianVault/WebDev/2 CodeIgniter/API Project setup/04.) Create API Auth Filter.md b/MyObsidianVault/WebDev/2 CodeIgniter/API Project setup/04.) Create API Auth Filter.md index bf9d0b5..8fcf6ad 100644 --- a/MyObsidianVault/WebDev/2 CodeIgniter/API Project setup/04.) Create API Auth Filter.md +++ b/MyObsidianVault/WebDev/2 CodeIgniter/API Project setup/04.) Create API Auth Filter.md @@ -17,7 +17,6 @@ public function before(RequestInterface $request, $arguments = null) } ``` - Routes.php ```php // API ROUTES @@ -28,20 +27,6 @@ $routes->group("api",["namespace]=> "App\Controllers\Api"], function($routes) { ... ``` -Define accessDenied method in app/Controllers/Api/AuthController.php -```php -... -public function accessDenied() -{ - return $this->respondCreated([ - "status" => false, - "message" => "Invalid access", - "data" => [] - ]); -} -... -``` - Add filter to app/Config/Filters.php ```php use App\Filters\AuthFilter; diff --git a/MyObsidianVault/WebDev/2 CodeIgniter/API Project setup/04a.) Postman Test 14.12.2024.md b/MyObsidianVault/WebDev/2 CodeIgniter/API Project setup/04a.) Postman Test 14.12.2024.md new file mode 100644 index 0000000..53da244 --- /dev/null +++ b/MyObsidianVault/WebDev/2 CodeIgniter/API Project setup/04a.) Postman Test 14.12.2024.md @@ -0,0 +1,5 @@ +![[Pasted image 20241214094809.png]] + +![[Pasted image 20241214094906.png]] +600933326ac42a7f1669bfcaceb4bf1f973c8f64f54dccff9d6c424a9c2c0e5d + diff --git a/MyObsidianVault/_images/Pasted image 20241214094809.png b/MyObsidianVault/_images/Pasted image 20241214094809.png new file mode 100644 index 0000000..19c3998 Binary files /dev/null and b/MyObsidianVault/_images/Pasted image 20241214094809.png differ diff --git a/MyObsidianVault/_images/Pasted image 20241214094906.png b/MyObsidianVault/_images/Pasted image 20241214094906.png new file mode 100644 index 0000000..a5587c6 Binary files /dev/null and b/MyObsidianVault/_images/Pasted image 20241214094906.png differ