Cataly...ssword(3pm)
πΈ Catalyst::Authentication::Credential::NoPassword π
Hey bestie, so this is the Catalyst::Authentication::Credential::NoPassword page from the User Contributed Perl Documentation β yes, the whole manual name is a mouthful, we been knew π β and it's a credential checker that logs a user in without a password. Iconic? Lowkey yes. Dangerous? Also yes. Let's get into it β¨
π NAME π
Catalyst::Authentication::Credential::NoPassword β Authenticate a user without a password.
That's the whole vibe. No password. None. Zero. The password field is empty and she's still serving looks π
π¦ SYNOPSIS π¦
use Catalyst qw/
Authentication
/;
package MyApp::Controller::Auth;
sub login_as_another_user : Local {
my ($self, $c) = @_;
if ($c->user_exists() and $c->user->username() eq 'root') {
$c->authenticate( {id => c->req->params->{user_id}}, 'nopassword' );
}
}
So basically: you pull in Authentication via use Catalyst, you got a controller package MyApp::Controller::Auth, and then this login_as_another_user sub with the : Local attribute does the thing π«Ά β it checks if ($c->user_exists() and $c->user->username() eq 'root'), and if you're literally root, it calls $c->authenticate( {id => c->req->params->{user_id}}, 'nopassword' );.
Main character energy fr fr π
β¨ DESCRIPTION β¨
Okay so here's the tea β β this authentication credential checker takes authentication information (most often a username) and retrieves the user from the store. That's it. That's the whole job.
No validation of any credentials is done. Nope. Nothing. Zero checks. Not a single vibe check π₯
It's intended for administrative backdoors, SAML logins and so on β the situations where you have identified the new user by other means and you just need Catalyst to catch up, iykyk.
β οΈ Bestie, read that again: no validation of any credentials is done. This is a backdoor by design. Keep it somewhere only you can reach, mkay? π
π CONFIGURATION π
Here's the example config, exactly as she comes:
# example
<Plugin::Authentication>
<nopassword>
<credential>
class = NoPassword
</credential>
<store>
class = DBIx::Class
user_model = DB::User
role_relation = roles
role_field = name
</store>
</nopassword>
</Plugin::Authentication>
Look at that nesting π β <Plugin::Authentication> on top, a <nopassword> block inside, a <credential> with class = NoPassword, and a <store> block with class = DBIx::Class, user_model = DB::User, role_relation = roles, and role_field = name. Slay, structured, gorgeous πΈ
π METHODS π
π« authenticate ( $c, $realm, $authinfo )
Try to log a user in.
That's it β that's the method. Signature is authenticate ( $c, $realm, $authinfo ), and her entire purpose in life is trying to log a user in. Queen of being straightforward π
and that's the whole page, bestie β no extra lore, no hidden flags, no mystery env vars, nothing. Just a passwordless backdoor and a dream π¦
π cute sign-off time: this was Cataly...ssword(3pm) from the User Contributed Perl Documentation, perl v5.40.1, dated 2026-05-22. Go forth and authenticate responsibly, mwah πβ¨
π¦ where this page comes from
- ubuntu stonking: libcatalyst-plugin-authentication-perl 0.10026-1 Β· Artistic-1.0-Perl OR GPL-1.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms