RegisterController.php 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. <?php
  2. namespace Controllers;
  3. use Libs\ResponseLib;
  4. use Models\UserModel;
  5. use Psr\Http\Message\ServerRequestInterface;
  6. use Respect\Validation\Validator as v;
  7. use Respect\Validation\Exceptions\ValidationException;
  8. class RegisterController
  9. {
  10. public function __invoke(ServerRequestInterface $request)
  11. {
  12. $body = json_decode((string) $request->getBody(), true) ?? [];
  13. try {
  14. v::key('username', v::alnum(' ')->notEmpty())
  15. ->key('password', v::stringType()->length(8, null))
  16. ->key('email', v::email())
  17. ->key('company_id', v::intType()->positive())
  18. ->key('role_id', v::intType()->positive())
  19. ->assert($body);
  20. } catch (ValidationException $e) {
  21. return ResponseLib::sendFail("Validation failed: " . $e->getFullMessage(), [], "E_VALIDATE")->withStatus(401);
  22. }
  23. $username = $body['username'];
  24. $password = $body['password'];
  25. $email = $body['email'];
  26. $company_id = (int) $body['company_id'];
  27. $role_id = (int) $body['role_id'];
  28. $userModel = new UserModel();
  29. $userData = $userModel->createUser($username, $email, $password, $company_id, $role_id);
  30. if (!$userData) {
  31. return ResponseLib::sendFail("Username Already Exists or Creation Failed", [], "E_VALIDATE")->withStatus(400);
  32. }
  33. return ResponseLib::sendOk($userData, "S_CREATED");
  34. }
  35. }