obsidian/MyObsidianVault/WebDev/2 CodeIgniter/17.) Register API.md
2024-11-23 14:01:36 +01:00

1.1 KiB

AuthController:


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]", 
			"password" => "required"
		];

		if (!$this->validate($rules)) {
			$response = [
				"status" => false,
				"message"  => $this->validator->getErrors(),
				"data" => []
			];
		} else {
			$userObject = new UserModel(); // coming from Shield
			$userEntityObject = new User([
				"username" => $this->request->getVar("username"),
				"email" => $this->request->getVar("email"),
				"password" => $this->request->getVar("password")
			]);
			$userObject->save($userEntityObject);
			$response = [
				"status" => true,
				"message" => "User saved successfully",
				"data" => []
			]
		}
		return $this->respondCreated($response);
	}	
}

Note: shield stores users in auth_identies. Email address should be stored in field secret.