2024-11-23 14:01:36 +01:00
|
|
|
|
|
|
|
|
AuthController:
|
|
|
|
|
|
|
|
|
|
```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]",
|
2024-11-26 10:33:09 +01:00
|
|
|
"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
|
2024-11-23 14:01:36 +01:00
|
|
|
];
|
|
|
|
|
|
|
|
|
|
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);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
2024-11-26 10:33:09 +01:00
|
|
|
Note: shield stores users in auth_identies. Email address should be stored in field secret.
|
|
|
|
|
|
2024-12-04 20:44:53 +01:00
|
|
|
https://onlinewebtutorblog.com/codeigniter-4-restful-api-using-shield-authentication/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
My version:
|
|
|
|
|
```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" => []
|
|
|
|
|
]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
```
|