<?php

namespace App\Services\Auth;

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

class LocalService extends AuthService
{
	public function __construct()
	{
		parent::__construct(new UserModel(), new UserHelper());
		$this->addClassName('Local');
	}
	public function getFormFields(): array
	{
		return ["id", "passwd",];
	}
	public function getFormFilters(): array
	{
		return [];
	}
	public function getBatchjobButtons(): array
	{
		return [];
	}
	//기본기능
	public function login(array $formDatas): UserEntity
	{
		$entity = $this->getEntity([
			'id' => $formDatas['id'],
			'status' => UserEntity::DEFAULT_STATUS
		], false);
		if (!$entity instanceof UserEntity) {
			throw new \Exception("{$formDatas['id']}에 대한 로그인 정보를 찾을수 없습니다.");
		}
		if (!password_verify($formDatas['passwd'], $entity->getPassword())) {
			// log_message("error", "암호: {$formDatas['passwd']}, {$entity->passwd}");
			throw new \Exception("암호가 맞지 않습니다.");
		}
		return $this->login_process($entity);
	}
}
