<?php

namespace App\Libraries\MyAuth;

use App\Entities\UserEntity;
use App\Models\UserModel;

class LocalAuth extends MyAuth
{
	private $_model = null;
	public function __construct()
	{
		parent::__construct();
	}

	final protected function getModel(): UserModel
	{
		if ($this->_model === null) {
			$this->_model = new UserModel();
		}
		return $this->_model;
	}

	public function checkUser(array $formDatas): UserEntity
	{
		if (!isset($formDatas['id']) || !$formDatas['id']) {
			throw new \Exception("사용자ID를 입력해주세요!");
		}
		if (!isset($formDatas['passwd']) || !$formDatas['passwd']) {
			throw new \Exception("암호를 입력해주세요!");
		}
		$entity = $this->getModel()->getEntityByID($formDatas['id']);
		if (is_null($entity) || !isset($entity->passwd)) {
			throw new \Exception("사용자ID: {$formDatas['id']}가 존재하지 않습니다.");
		}
		if (!password_verify($formDatas['passwd'], $entity->passwd)) {
			// log_message("error", "암호: {$formDatas['passwd']}, {$entity->passwd}");
			throw new \Exception("암호가 맞지 않습니다.");
		}
		return $entity;
	}
}
