diff options
author | Dylan William Hardison <dylan@hardison.net> | 2018-04-04 05:05:04 +0200 |
---|---|---|
committer | Dylan William Hardison <dylan@hardison.net> | 2018-08-20 23:52:50 +0200 |
commit | 4a66989c7cf4bcb1afce0c4e39a3f1c87ef0e57c (patch) | |
tree | c96b05f8f3ca81ac7bbb8ad061fc0bab2d2fcc04 /Bugzilla/Quantum/Plugin/BasicAuth.pm | |
parent | 77468653f4f3e3285bc68e455b5b4e4265362aeb (diff) | |
download | bugzilla-4a66989c7cf4bcb1afce0c4e39a3f1c87ef0e57c.tar.gz bugzilla-4a66989c7cf4bcb1afce0c4e39a3f1c87ef0e57c.tar.xz |
Bug 1455495 - Replace apache with Mojolicious
Diffstat (limited to 'Bugzilla/Quantum/Plugin/BasicAuth.pm')
-rw-r--r-- | Bugzilla/Quantum/Plugin/BasicAuth.pm | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/Bugzilla/Quantum/Plugin/BasicAuth.pm b/Bugzilla/Quantum/Plugin/BasicAuth.pm new file mode 100644 index 000000000..bc79c89ef --- /dev/null +++ b/Bugzilla/Quantum/Plugin/BasicAuth.pm @@ -0,0 +1,40 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# +# This Source Code Form is "Incompatible With Secondary Licenses", as +# defined by the Mozilla Public License, v. 2.0. +package Bugzilla::Quantum::Plugin::BasicAuth; +use 5.10.1; +use Mojo::Base qw(Mojolicious::Plugin); + +use Bugzilla::Logging; +use Carp; + +sub register { + my ( $self, $app, $conf ) = @_; + + $app->renderer->add_helper( + basic_auth => sub { + my ($c, $realm, $auth_user, $auth_pass) = @_; + my $req = $c->req; + my ($user, $password) = $req->url->to_abs->userinfo =~ /^([^:]+):(.*)/; + + unless ($realm && $auth_user && $auth_pass) { + croak 'basic_auth() called with missing parameters.'; + } + + unless ($user eq $auth_user && $password eq $auth_pass) { + WARN('username and password do not match'); + $c->res->headers->www_authenticate("Basic realm=\"$realm\""); + $c->res->code(401); + $c->rendered; + return 0; + } + + return 1; + } + ); +} + +1; |