Files
jongryangje/app/Config/Auth.php
2026-04-08 00:23:21 +09:00

55 lines
1.6 KiB
PHP

<?php
namespace Config;
use CodeIgniter\Config\BaseConfig;
/**
* 로그인·2차 인증(TOTP) 관련 설정
*
* .env 의 auth.requireTotp 가 Config 기본값보다 우선합니다. 끄려면 반드시 false 로 두세요.
* 예:
* auth.requireTotp = false
* auth.requireTotp = true # 운영에서 2FA 켤 때
* auth.totpIssuer = "종량제 시스템"
*/
class Auth extends BaseConfig
{
/** false 이면 로그인 시 TOTP·등록 유도 없음. 운영에서 켤 때 .env 에 auth.requireTotp = true */
public bool $requireTotp = false;
/** 인증 앱에 표시되는 발급자(issuer) */
public string $totpIssuer = '종량제 시스템';
/** TOTP 연속 실패 시 세션 종료 전 허용 횟수 */
public int $totpMaxAttempts = 5;
/** 비밀번호 통과 후 2단계 완료까지 허용 시간(초) */
public int $pending2faTtlSeconds = 600;
public function __construct()
{
parent::__construct();
$require = env('auth.requireTotp');
if ($require !== null && $require !== '') {
$this->requireTotp = filter_var($require, FILTER_VALIDATE_BOOLEAN);
}
$issuer = env('auth.totpIssuer');
if (is_string($issuer) && $issuer !== '') {
$this->totpIssuer = $issuer;
}
$max = env('auth.totpMaxAttempts');
if ($max !== null && $max !== '' && is_numeric($max)) {
$this->totpMaxAttempts = max(1, (int) $max);
}
$ttl = env('auth.pending2faTtlSeconds');
if ($ttl !== null && $ttl !== '' && is_numeric($ttl)) {
$this->pending2faTtlSeconds = max(60, (int) $ttl);
}
}
}