Revision history for Concierge-Auth
v0.5.2 2026-07-23
- BREAKING: Concierge::Auth->new's constructor key renamed from
backend to backend_class, to disambiguate it from the unrelated
"friendly name" sense of backend used elsewhere in the Concierge
suite (Concierge::Sessions, Concierge::Users, and the auth/
sessions/users blocks of a Concierge desk's build config all
accept a short friendly name like 'pwd'/'database'/'file' under
backend; Concierge::Auth's own key has always required an
already-resolved, fully-qualified class name, which backend_class
now makes explicit). Updated the two internal call sites in the
core Concierge repo (Concierge.pm and Desk::Setup.pm) accordingly.
- Removed the 10 stale examples/*.pl scripts (01-basic-authentication.pl
through 10-architecture-comparison.pl) and their coverage in
examples/README.md: all called removed methods (checkID/checkPwd/
setPwd/resetPwd/deleteID) and used the pre-v0.5.0 hashref constructor.
Archived copies are kept outside this distribution, in the core
Concierge repo's ZZZ_archive/Concierge-Auth-examples/.
- Renamed examples/11-custom-backend-ldap.pl to
examples/1-custom-backend-ldap.pl, now the sole example; rewrote
examples/README.md to describe just this one script plus a note that
more examples are planned.
- Updated MANIFEST to match.
v0.5.1 2026-07-16
- Base.pm: gen_token/gen_crypt_token now call gen_random_token
directly instead of going through Generators::gen_token/
gen_crypt_token, which are themselves just deprecated aliases for
gen_random_token -- skips the redundant indirection. The method
names on Base remain deprecated; only the implementation changed.
Also tightens a Pwd.pm POD cross-reference to Concierge::Auth.
- Added t/06-io-failures.t and t/lib/MockBuiltins.pm: test coverage
for open/flock/chmod/unlink failure paths in Pwd.pm via mocked
CORE::GLOBAL builtins.
- Added t/05-generators.t coverage for gen_random_string edge cases:
non-numeric length argument falls back to the default length;
a whitespace-only charset argument is treated as no charset.
- Fixed packaging: MANIFEST was missing t/06-io-failures.t and
t/lib/MockBuiltins.pm.
- Fixed a spurious "Argument isn't numeric" warning in
MockBuiltins.pm caused by assigning a string message to $!.
- Added examples/11-custom-backend-ldap.pl: documentation sketch of
a directory-backed (LDAP) Concierge::Auth::Base implementation.
- Fixed a pre-existing podchecker "empty section" warning in
Base.pm's stacked Generator Methods headings.
v0.5.0 2026-07-05
- BREAKING: Concierge::Auth is now a thin backend factory, not a
monolithic password-auth implementation. All prior OO methods
(confirm/reject/reply, validateID/validatePwd/validateFile,
checkID/deleteID/checkPwd/setPwd/resetPwd, setFile/rmFile/clearFile,
encryptPwd, pfile, the gen_* wrappers) are removed outright -- no
deprecation shims. Code calling Concierge::Auth directly (rather
than through Concierge.pm) will need to migrate to the new backend
contract below.
- Added Concierge::Auth::Base: the domain-level contract every backend
must implement -- authenticate, is_id_known, enroll,
change_credentials, revoke (returning { success, message, ... }
hashrefs) -- plus working default implementations of the Generator
methods (gen_uuid, gen_random_id, gen_random_token,
gen_random_string, gen_word_phrase, gen_token, gen_crypt_token),
inherited for free unless a backend overrides them.
- Added Concierge::Auth::Pwd: the built-in password-file backend,
implementing Concierge::Auth::Base on top of the previous
file-backed primitives (now private to this module).
Concierge::Auth->new now requires backend => 'Concierge::Auth::Pwd'
(or another conforming backend class) instead of configuring a
password file directly.
- Fixed packaging: MANIFEST and Makefile.PL were missing
lib/Concierge/Auth/Base.pm and lib/Concierge/Auth/Pwd.pm (both new
in this release) from PM/provides -- would have shipped a CPAN
distribution missing required modules.
- Ported full t/ suite to the new contract; added factory-specific
coverage (missing backend, unloadable backend class, backend
constructor failure).
v0.4.5 2026-05-25
- Fix t/05-generators.t: skip dict-dependent subtest on systems without
/usr/share/dict/web2 (Linux CPAN tester failure)
v0.4.4 2026-05-25
- Expand test coverage across all test files
v0.4.3 2026-02-17
- Version Bump for CPAN
v0.4.2 2026-02-17
- Further deprecation steps for gen_token and gen_crypt_token
v0.4.3 2026-02-17
- Removed gen_crypt_token and gen_token from exports, tests, and documentation
- Removed unused Time::HiRes import from Generators.pm
- Deprecated subs remain as internal aliases (will be removed in a future release)
v0.4.2 2026-02-17
- Fixed documentation referring to gen_crypt_token deprecation
v0.4.1 2026-02-17
- Deprecated gen_crypt_token (now aliases gen_random_token)
- crypt() is non-portable; returned undef on some CPAN tester platforms
v0.4.0 2026-02-15
- Fixed distribution issue with MANIFEST.SKIP
v0.3.5 2026-02-14
- Fix infinite loop in gen_word_phrase when dictionary file unavailable (CI hang)
v0.3.4 2026-02-12
- Rebuilt tarball with GNU tar (fixes PaxHeader issue on CPAN)
v0.3.3 2026-02-12
- gen_uuid now generates v4 UUIDs using Crypt::PRNG (no longer shells out to uuidgen)
- Added gen_random_id for hex-encoded cryptographic random IDs
- Added generator test suite (t/05-generators.t)
v0.3.2 2026-02-11
- Corrected dependency list in distro
v0.3.1 2026-02-11
- Documentation improvements
v0.19.0 2026-02-10
- Initial CPAN release
- Argon2 password hashing with Bcrypt legacy validation
- File-based password storage with file locking
- Token and random value generation (Concierge::Auth::Generators)