Bugzilla – Attachment 143426 Details for
Bug 31378
Add a generic OAuth2/OIDC client implementation
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 31378: Add Auth mojo plugin
Bug-31378-Add-Auth-mojo-plugin.patch (text/plain), 5.05 KB, created by
Martin Renvoize (ashimema)
on 2022-11-08 15:23:52 UTC
(
hide
)
Description:
Bug 31378: Add Auth mojo plugin
Filename:
MIME Type:
Creator:
Martin Renvoize (ashimema)
Created:
2022-11-08 15:23:52 UTC
Size:
5.05 KB
patch
obsolete
>From 7196af7516b1002f37811419d353166f0ca26f2e Mon Sep 17 00:00:00 2001 >From: Agustin Moyano <agustinmoyano@theke.io> >Date: Thu, 18 Aug 2022 16:41:03 -0300 >Subject: [PATCH] Bug 31378: Add Auth mojo plugin > >Signed-off-by: Lukasz Koszyk <lukasz.koszyk@kit.edu> >Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io> >Signed-off-by: Nick Clemens <nick@bywatersolutions.com> >Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com> >--- > Koha/Exceptions/Auth.pm | 41 +++++++++++++++ > Koha/REST/Plugin/Auth.pm | 106 +++++++++++++++++++++++++++++++++++++++ > 2 files changed, 147 insertions(+) > create mode 100644 Koha/Exceptions/Auth.pm > create mode 100644 Koha/REST/Plugin/Auth.pm > >diff --git a/Koha/Exceptions/Auth.pm b/Koha/Exceptions/Auth.pm >new file mode 100644 >index 0000000000..6b3529f496 >--- /dev/null >+++ b/Koha/Exceptions/Auth.pm >@@ -0,0 +1,41 @@ >+package Koha::Exceptions::Auth; >+ >+# This file is part of Koha. >+# >+# Koha is free software; you can redistribute it and/or modify it >+# under the terms of the GNU General Public License as published by >+# the Free Software Foundation; either version 3 of the License, or >+# (at your option) any later version. >+# >+# Koha is distributed in the hope that it will be useful, but >+# WITHOUT ANY WARRANTY; without even the implied warranty of >+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the >+# GNU General Public License for more details. >+# >+# You should have received a copy of the GNU General Public License >+# along with Koha; if not, see <http://www.gnu.org/licenses>. >+ >+use Modern::Perl; >+ >+use Koha::Exception; >+ >+use Exception::Class ( >+ 'Koha::Exceptions::Auth' => { >+ isa => 'Koha::Exception', >+ fields => ['code'] >+ }, >+ 'Koha::Exceptions::Auth::NoValidDomain' => { >+ isa => 'Koha::Exceptions::Auth', >+ description => 'No valid domain found' >+ }, >+ 'Koha::Exceptions::Auth::Unauthorized' => { >+ isa => 'Koha::Exceptions::Auth', >+ description => 'External auth user cannot access resource' >+ }, >+ 'Koha::Exceptions::Auth::CannotCreateSession' => { >+ isa => 'Koha::Exceptions::Auth', >+ description => 'Cannot create session' >+ }, >+); >+ >+1; >diff --git a/Koha/REST/Plugin/Auth.pm b/Koha/REST/Plugin/Auth.pm >new file mode 100644 >index 0000000000..0aa261a0a4 >--- /dev/null >+++ b/Koha/REST/Plugin/Auth.pm >@@ -0,0 +1,106 @@ >+package Koha::REST::Plugin::Auth; >+ >+# Copyright Theke Solutions 2022 >+# >+# This file is part of Koha. >+# >+# Koha is free software; you can redistribute it and/or modify it >+# under the terms of the GNU General Public License as published by >+# the Free Software Foundation; either version 3 of the License, or >+# (at your option) any later version. >+# >+# Koha is distributed in the hope that it will be useful, but >+# WITHOUT ANY WARRANTY; without even the implied warranty of >+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the >+# GNU General Public License for more details. >+# >+# You should have received a copy of the GNU General Public License >+# along with Koha; if not, see <http://www.gnu.org/licenses>. >+ >+use Modern::Perl; >+ >+use Mojo::Base 'Mojolicious::Plugin'; >+ >+use Koha::Exceptions; >+use Koha::Exceptions::Auth; >+use Koha::Patron; >+ >+use C4::Auth; >+ >+use CGI; >+ >+=head1 NAME >+ >+Koha::REST::Plugin::Auth >+ >+=head1 API >+ >+=head2 Helper methods >+ >+=cut >+ >+sub register { >+ my ( $self, $app ) = @_; >+ >+=head3 auth.register >+ >+ my $patron = $c->auth->register( >+ { data => $patron_data, >+ domain => $domain, >+ interface => $interface >+ } >+ ); >+ >+If no patron passed, creates a new I<Koha::Patron> if the provider is configured >+to do so for the domain. >+ >+=cut >+ >+ $app->helper( >+ 'auth.register' => sub { >+ my ( $c, $params ) = @_; >+ my $data = $params->{data}; >+ my $domain = $params->{domain}; >+ my $interface = $params->{interface}; >+ >+ unless ( $interface eq 'opac' && $domain->auto_register ) { >+ Koha::Exceptions::Auth::Unauthorized->throw( code => 401 ); >+ } >+ >+ return Koha::Patron->new($data)->store; >+ } >+ ); >+ >+=head3 auth.session >+ >+ my ( $status, $cookie, $session_id ) = $c->auth->session( $patron ); >+ >+Generates a new session. >+ >+=cut >+ >+ $app->helper( >+ 'auth.session' => sub { >+ my ( $c, $patron ) = @_; >+ my $userid = $patron->userid; >+ my $cardnumber = $patron->cardnumber; >+ my $cgi = CGI->new; >+ >+ $cgi->param( userid => $userid ); >+ $cgi->param( cardnumber => $cardnumber ); >+ $cgi->param( auth_client_login => 1 ); >+ >+ my ( $status, $cookie, $session_id ) = C4::Auth::check_api_auth($cgi); >+ >+ Koha::Exceptions::UnderMaintenance->throw( code => 503 ) >+ if $status eq "maintenance"; >+ >+ Koha::Exceptions::Auth::CannotCreateSession->throw( code => 500 ) >+ unless $status eq "ok"; >+ >+ return ( $status, $cookie, $session_id ); >+ } >+ ); >+} >+ >+1; >-- >2.20.1
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 31378
:
141362
|
141363
|
141364
|
141365
|
141366
|
141367
|
141368
|
141369
|
141370
|
141371
|
141372
|
141373
|
141374
|
141375
|
141376
|
141377
|
141378
|
141514
|
141771
|
141772
|
141773
|
141774
|
141775
|
141776
|
141777
|
141778
|
141779
|
141780
|
141781
|
141782
|
141783
|
141784
|
141785
|
141786
|
141787
|
141788
|
141801
|
141802
|
141803
|
141804
|
141805
|
141806
|
141807
|
141808
|
141809
|
141810
|
141811
|
141812
|
141813
|
141814
|
141815
|
141816
|
141817
|
141818
|
141853
|
143056
|
143087
|
143088
|
143089
|
143090
|
143091
|
143092
|
143093
|
143094
|
143095
|
143096
|
143097
|
143098
|
143099
|
143100
|
143101
|
143102
|
143103
|
143104
|
143105
|
143106
|
143107
|
143186
|
143187
|
143188
|
143189
|
143190
|
143191
|
143192
|
143193
|
143194
|
143195
|
143196
|
143197
|
143198
|
143199
|
143200
|
143202
|
143204
|
143205
|
143206
|
143207
|
143208
|
143215
|
143216
|
143217
|
143218
|
143219
|
143220
|
143221
|
143222
|
143223
|
143224
|
143225
|
143226
|
143227
|
143228
|
143229
|
143230
|
143231
|
143232
|
143233
|
143234
|
143235
|
143236
|
143266
|
143267
|
143268
|
143269
|
143270
|
143271
|
143272
|
143273
|
143274
|
143275
|
143277
|
143278
|
143279
|
143280
|
143281
|
143282
|
143283
|
143284
|
143285
|
143286
|
143287
|
143288
|
143396
|
143397
|
143398
|
143399
|
143400
|
143401
|
143402
|
143403
|
143404
|
143405
|
143406
|
143407
|
143408
|
143409
|
143410
|
143411
|
143412
|
143413
|
143414
|
143415
|
143416
|
143417
|
143418
|
143420
|
143421
|
143422
|
143423
|
143424
|
143425
| 143426 |
143427
|
143428
|
143429
|
143430
|
143431
|
143432
|
143433
|
143434
|
143435
|
143436
|
143437
|
143438
|
143439
|
143440
|
143441
|
143442
|
143443
|
143450
|
144071
|
144175