https://www.youtube.com/watch?v=_ZRHt-fWJpc&list=PLT9miexWCpPW6Z_OXNv2d78cqCrZaPrVG&index=29 app/Config/Routes.php Remember: Shield added => ```php service('auth')->routes($routes) ``` ```php // API routes (put below service('auth')) $routes->group("api", ["namespace" => "App\Controller\Api"], function($routes) { $routes->post("register", "AuthController::register"); $routes->post("login", "AuthController::login"); $routes->get("profile", "AuthController::profile"); $routes->get("logout", "AuthController::logout", ["filter"=>"apiauth"]); //$routes->post("add-project", "ProjectController::addProject"); //$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" => [] ]); } } ```