EPrints Technical Mailing List Archive
Message: #07637
< Previous (by date) | Next (by date) > | < Previous (in thread) | Next (in thread) > | Messages - Most Recent First | Threads - Most Recent First
Re: [EP-tech] Error whilst depositing via SWORD
- To: "eprints-tech@ecs.soton.ac.uk" <eprints-tech@ecs.soton.ac.uk>, John Salter <J.Salter@leeds.ac.uk>, Fran Callaghan <fran.callaghan@dcu.ie>
- Subject: Re: [EP-tech] Error whilst depositing via SWORD
- From: "Newman D.R." <drn@ecs.soton.ac.uk>
- Date: Tue, 8 Jan 2019 11:15:57 +0000
Hi all, The patch is now available on GitHub: https://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Feprints%2Feprints%2Fcommit%2Fee0c653d450d6e90562d881daaf72&data=01%7C01%7C%7C35d31d531bb54032d82e08d6755aa94f%7C4a5378f929f44d3ebe89669d03ada9d8%7C1&sdata=jHfiWYUUbH%2BjfELTd%2BHsid%2FsTuAl0unNxzLnLPc8bCE%3D&reserved=0 6542fc768a2 I copied and pasted the changes from the 3.4 instance I was working on and have confirm that the file is syntactically correct. However, I do not currently have a working test repository using the 3.3 GitHub codebase, so I have only checked the functionality works as expected in my 3.4 version. Therefore, I would advise testing in your own environment to be 100% sure this fix works as expected. Regards David Newman On Tue, 2019-01-08 at 10:51 +0000, Newman D.R. via Eprints-tech wrote: > Hi John, > > That would not be too difficult to implement but would require a > further core change. I think I will just leave put the patch to fix > the issue for now and this can be improved if people find it > necessary > to do so. > > Regards > > David Newman > > On Tue, 2019-01-08 at 10:04 +0000, John Salter wrote: > > > > Hi David, > > Excellent! > > I had a bit of a look at this last night - and was trying to get my > > head round what was newer code, what was older code, and whether > > anything needed to be elevated into the handler / new methods. It > > looks like what you've got is all good! > > > > One thought about the mediation (with a bit of a GDPR / allow the > > minimum access needed to do what needs to be done hat on), would it > > make sense to allow a finer-grained mediate rule e.g. > > +user/mediate #allow mediation of any user > > +user/mediate/bob #allow mediation of user 'bob' > > Or possibly > > +user/mediate/username/bob #allow mediation of user > > 'bob' > > +user/mediate/usertype/editor #allow > > mediation of editor users > > > > I haven't read the SWORD specs on a while - and don't know whether > > this is allowed. > > I think this is an extension of the current functionality - and > > possibly should be treated as an enhancement. > > > > Cheers, > > John > > > > > > From: eprints-tech-bounces@ecs.soton.ac.uk [mailto:eprints-tech- > > bounc > > es@ecs.soton.ac.uk] On Behalf Of Newman D.R. via Eprints-tech > > Sent: 07 January 2019 17:36 > > To: eprints-tech@ecs.soton.ac.uk; John Salter <J.Salter@leeds.ac.uk > > >; > > Fran Callaghan <fran.callaghan@dcu.ie> > > Subject: Re: [EP-tech] Error whilst depositing via SWORD > > > > Hi John / Fran, > > > > I believe I have made the appropriate tweaks needed in EPrints > > 3.4's > > perl_lib/EPrints/Apache/CRUD.pm and this seems to fix the issue > > from > > my testing. You will need to set an extra role for the user that > > is > > going to submit "on behalf of" other users. This permission is: > > > > +user/mediate > > > > I will endeavour to post the updated version to GitHub soon, > > assuming > > it is not too different to the version I was working against. > > However, if you want to make the changes yourself, there are only > > three places in CRUD.pm that need fixed (see below). I am assuming > > this is on a development instance you are working on, as I would > > not > > be 100% confident this will not have any side effects. John > > thoughts? > > > > Regards > > > > David Newman > > > > # 1. sub handler > > - my( $rc, $owner ) = on_behalf_of( $repo, $r, $user ); > > + my( $rc, $owner ) = $self->on_behalf_of( $user ); > > > > > > # 2. sub on_behalf_of > > - my( $repo, $r, $user ) = @_; > > + my( $self, $user ) = @_; > > > > - my $err = { > > - status => HTTP_FORBIDDEN, > > - href => "https://emea01.safelinks.protection.outlook.com/?url=htt > > p%3A%2F%2Fpurl.org%2Fnet%2Fsword%2Ferror%2FTargetOwnerUnknown&d > > ata=01%7C01%7Cdrn%40ecs.soton.ac.uk%7Ca07a18eb5ca045ced87b08d675576 > > 43f%7C4a5378f929f44d3ebe89669d03ada9d8%7C1&sdata=i5sdd8FVlS9Tsr > > XRa1vY5FQHJt53jHdLZS57wNyPxgk%3D&reserved=0", > > - summary => "Target user unknown or no permission to act on- > > behalf- > > of", > > - }; > > + my $r = $self->request; > > + my $repo = $self->repository; > > > > my $on_behalf_of = > > $r->headers_in->{'On-Behalf-Of'} || # SWORD 2.0 > > $r->headers_in->{'X-On-Behalf-Of'}; # SWORD 1.3 > > > > return( OK, $user ) if !$on_behalf_of; > > > > my $owner = $repo->user_by_username( $on_behalf_of ); > > > > - return sword_error($repo, $r, %$err ) > > + return ( HTTP_FORBIDDEN, undef ) > > if !defined $owner; > > - return sword_error($repo, $r, %$err ) > > + return ( HTTP_FORBIDDEN, undef ) > > if !$user->allow( "user/mediate", $owner ); > > > > return( OK, $owner ); > > > > > > # 3. sub servicedocument > > my $user = $repo->current_user; > > EPrints->abort( "unprotected" ) if !defined $user; # Rewrite > > foobar > > - my $on_behalf_of = on_behalf_of( $repo, $r, $user ); > > - if( $on_behalf_of->{status} != OK ) > > + my ( $status, $on_behalf_of ) = $self->on_behalf_of( $user ); > > + if( $status != OK ) > > { > > - return sword_error( $repo, $r, %$on_behalf_of ); > > + return $self->sword_error( > > + status => HTTP_FORBIDDEN, > > + href => "https://emea01.safelinks.protection.outlook.com/?url=htt > > p%3A%2F%2Fpurl.org%2Fnet%2Fsword%2Ferror%2FTargetOwnerUnknown&d > > ata=01%7C01%7Cdrn%40ecs.soton.ac.uk%7Ca07a18eb5ca045ced87b08d675576 > > 43f%7C4a5378f929f44d3ebe89669d03ada9d8%7C1&sdata=i5sdd8FVlS9Tsr > > XRa1vY5FQHJt53jHdLZS57wNyPxgk%3D&reserved=0", > > + summary => "Target user unknown or no > > permission to act on-behalf-of", > > + ); > > } > > - $on_behalf_of = $on_behalf_of->{on_behalf_of}; > > > > > > > > On Mon, 2019-01-07 at 16:30 +0000, John Salter via Eprints-tech > > wrote: > > Hi Fran, > > It would depend on the CRIS system, and local policy: is knowing > > who > > the depositing author is from within EPrints important? > > > > You could create a 'CRIS' account - and all deposits would be made > > by > > this account (if the CRIS system allows this). > > > > I think both the Pure and the Symplectic connectors can do > > something > > similar to this - so it might be worth pursuing. > > > > If I get a chance I'll take a look at the module tonight. > > Would you be in a position to test a proposed update to the file > > this > > week? > > > > Cheers, > > John > > From: eprints-tech-bounces@ecs.soton.ac.uk [mailto:eprints-tech- > > bounc > > es@ecs.soton.ac.uk] On Behalf Of Fran Callaghan via Eprints-tech > > Sent: 07 January 2019 16:08 > > To: eprints-tech@ecs.soton.ac.uk > > Subject: Re: [EP-tech] Error whilst depositing via SWORD > > > > Hi John, > > > > The depositing system is our CRIS. Would this make sense in so far > > as > > it would be making deposits "on behalf of" genuine researchers? > > Does > > the depositing system need to make this explicit in the first > > place? > > Can't it just deposit with a different author name? > > > > Thanks all, > > > > Fran Callaghan > > > > > > On Mon, 7 Jan 2019 at 15:38, John Salter <J.Salter@leeds.ac.uk> > > wrote: > > Hi Fran, > > Taking a quick look at the code, I think the issue is that in the > > CRUD module, there are a couple of instances where the > > 'sword_error' > > is called as a raw function , rather than an object method e.g.: > > Normal working: > > https://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2F > > github.com%2Feprints%2Feprints%2Fblob%2F3.3%2Fperl_lib%2FEPrints%2F > > Apache%2FC&data=01%7C01%7Cdrn%40ecs.soton.ac.uk%7Ca07a18eb5ca04 > > 5ced87b08d67557643f%7C4a5378f929f44d3ebe89669d03ada9d8%7C1&sdat > > a=bQtpgQtsi7qCR2mggNu%2BGuLI6f%2FPBx6jP6spydPh88A%3D&reserved=0 > > RUD.pm#L432-L436 > > > > Function call in servicedocument function: > > https://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2F > > github.com%2Feprints%2Feprints%2Fblob%2F3.3%2Fperl_lib%2FEPrints%2F > > Apache%2FC&data=01%7C01%7Cdrn%40ecs.soton.ac.uk%7Ca07a18eb5ca04 > > 5ced87b08d67557643f%7C4a5378f929f44d3ebe89669d03ada9d8%7C1&sdat > > a=bQtpgQtsi7qCR2mggNu%2BGuLI6f%2FPBx6jP6spydPh88A%3D&reserved=0 > > RUD.pm#L1742-L1745 > > and 'on_behalf_of' function: > > https://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2F > > github.com%2Feprints%2Feprints%2Fblob%2F3.3%2Fperl_lib%2FEPrints%2F > > Apache%2FC&data=01%7C01%7Cdrn%40ecs.soton.ac.uk%7Ca07a18eb5ca04 > > 5ced87b08d67557643f%7C4a5378f929f44d3ebe89669d03ada9d8%7C1&sdat > > a=bQtpgQtsi7qCR2mggNu%2BGuLI6f%2FPBx6jP6spydPh88A%3D&reserved=0 > > RUD.pm#L1838-L1862 > > > > This issue will only become apparent when you're doing a SWORD > > deposit using the 'on-behalf-of' header. > > I think it may have been present for ~7 years, when the first line > > of > > the sword_error function was changed from > > my( $repo, $r, %opts ) = @_; > > to > > my( $self, %opts ) = @_; > > > > I think it's more than a 5-minute job to fix properly - I need to > > get > > into the code a bit more to understand what was changed - and how > > to > > resolve it. > > > > I'll log it in GitHub and let you know try and come up with a > > solution - unless anyone else fancies having a go..? > > > > Cheers, > > John > > > > > > From: eprints-tech-bounces@ecs.soton.ac.uk [mailto:eprints-tech- > > bounc > > es@ecs.soton.ac.uk] On Behalf Of Fran Callaghan via Eprints-tech > > Sent: 07 January 2019 14:50 > > To: eprints-tech@ecs.soton.ac.uk > > Subject: [EP-tech] Error whilst depositing via SWORD > > > > Hi All, > > > > We have a third party depositing via SWORD. They're getting a > > generic > > 500 message back but when I lookup the error_log corresponding to > > the > > time of the test I can see this message... > > > > [Mon Jan 07 13:46:18.179171 2019] [perl:error] [pid 10713] [client > > X.X.X.X] Can't locate object method "repository" via package > > "EPrints::Repository" at > > /opt/eprints3/perl_lib/EPrints/Apache/CRUD.pm line 1977.\n > > > > Any ideas what's wrong with CRUD.pm? Or is it a problem with the > > syntax of the deposit? I had expected SWORD to be pretty much plug > > and play (actually not even 'plug' since the documentation says it > > is > > configured by default). > > > > **NOTE: I have X'd out the client IP address, it's a genuine IP in > > the original message > > > > Thanks all, > > Fran Callaghan > > > > > > Séanadh Ríomhphoist/Email Disclaimer > > Tá an ríomhphost seo agus aon chomhad a sheoltar leis faoi rún agus > > is lena úsáid ag an seolaí agus sin amháin é. Is féidir tuilleadh a > > léamh anseo. > > This e-mail and any files transmitted with it are confidential and > > are intended solely for use by the addressee. Read more here. > > > > > > > > > > > > > > Séanadh Ríomhphoist/Email Disclaimer > > Tá an ríomhphost seo agus aon chomhad a sheoltar leis faoi rún agus > > is lena úsáid ag an seolaí agus sin amháin é. Is féidir tuilleadh a > > léamh anseo. > > This e-mail and any files transmitted with it are confidential and > > are intended solely for use by the addressee. Read more here. > > > > > > > > > > > > *** Options: http://mailman.ecs.soton.ac.uk/mailman/listinfo/eprint > > s- > > tech > > *** Archive: https://emea01.safelinks.protection.outlook.com/?url=h > > ttp%3A%2F%2Fwww.eprints.org%2Ftech.php%2F&data=01%7C01%7Cdrn%40 > > ecs.soton.ac.uk%7Ca07a18eb5ca045ced87b08d67557643f%7C4a5378f929f44d > > 3ebe89669d03ada9d8%7C1&sdata=oz9jIFR54KQApKOum0srBOaMNxYViF81vM > > r8YvqbJak%3D&reserved=0 > > *** EPrints community wiki: https://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2Femea01.safelinks.protection.out&data=01%7C01%7C%7C35d31d531bb54032d82e08d6755aa94f%7C4a5378f929f44d3ebe89669d03ada9d8%7C1&sdata=aR%2BllpERJ0PxcPcFJvrDDMZ1NYPANLSM4nwpbnJFt1g%3D&reserved=0 > > look.com/?url=http%3A%2F%2Fwiki.eprints.org%2F&data=01%7C01%7Cd > > rn%40ecs.soton.ac.uk%7Ca07a18eb5ca045ced87b08d67557643f%7C4a5378f92 > > 9f44d3ebe89669d03ada9d8%7C1&sdata=cLc8BsZSsNzQGsEk29GjVAmQrncUH > > K92pyvqmrOCflk%3D&reserved=0 > > *** EPrints developers Forum: https://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2Femea01.safelinks.protection.o&data=01%7C01%7C%7C35d31d531bb54032d82e08d6755aa94f%7C4a5378f929f44d3ebe89669d03ada9d8%7C1&sdata=E89eNg7Z671z173%2FyYy08juMeIbC%2B6su1YNq%2BGv2p9Q%3D&reserved=0 > > utlook.com/?url=http%3A%2F%2Fforum.eprints.org%2F&data=01%7C01% > > 7Cdrn%40ecs.soton.ac.uk%7Ca07a18eb5ca045ced87b08d67557643f%7C4a5378 > > f929f44d3ebe89669d03ada9d8%7C1&sdata=oV3VM5vptcFobrfzEZwVoq3YAb > > jRtiMmGjfRx1dGL18%3D&reserved=0 > *** Options: http://mailman.ecs.soton.ac.uk/mailman/listinfo/eprints- > tech > *** Archive: https://emea01.safelinks.protection.outlook.com/?url=htt > p%3A%2F%2Fwww.eprints.org%2Ftech.php%2F&data=01%7C01%7Cdrn%40ecs. > soton.ac.uk%7Ca07a18eb5ca045ced87b08d67557643f%7C4a5378f929f44d3ebe89 > 669d03ada9d8%7C1&sdata=oz9jIFR54KQApKOum0srBOaMNxYViF81vMr8YvqbJa > k%3D&reserved=0 > *** EPrints community wiki: https://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2Femea01.safelinks.protection.outlo&data=01%7C01%7C%7C35d31d531bb54032d82e08d6755aa94f%7C4a5378f929f44d3ebe89669d03ada9d8%7C1&sdata=KRD%2FON5C%2BBTT3eDlRt23jRv3nWcrZDTkQ2W0pUWgvV0%3D&reserved=0 > ok.com/?url=http%3A%2F%2Fwiki.eprints.org%2F&data=01%7C01%7Cdrn%4 > 0ecs.soton.ac.uk%7Ca07a18eb5ca045ced87b08d67557643f%7C4a5378f929f44d3 > ebe89669d03ada9d8%7C1&sdata=cLc8BsZSsNzQGsEk29GjVAmQrncUHK92pyvqm > rOCflk%3D&reserved=0 > *** EPrints developers Forum: https://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2Femea01.safelinks.protection.out&data=01%7C01%7C%7C35d31d531bb54032d82e08d6755aa94f%7C4a5378f929f44d3ebe89669d03ada9d8%7C1&sdata=aR%2BllpERJ0PxcPcFJvrDDMZ1NYPANLSM4nwpbnJFt1g%3D&reserved=0 > look.com/?url=http%3A%2F%2Fforum.eprints.org%2F&data=01%7C01%7Cdr > n%40ecs.soton.ac.uk%7Ca07a18eb5ca045ced87b08d67557643f%7C4a5378f929f4 > 4d3ebe89669d03ada9d8%7C1&sdata=oV3VM5vptcFobrfzEZwVoq3YAbjRtiMmGj > fRx1dGL18%3D&reserved=0
- References:
- [EP-tech] Error whilst depositing via SWORD
- From: Fran Callaghan <fran.callaghan@dcu.ie>
- Re: [EP-tech] Error whilst depositing via SWORD
- From: John Salter <J.Salter@leeds.ac.uk>
- Re: [EP-tech] Error whilst depositing via SWORD
- From: Fran Callaghan <fran.callaghan@dcu.ie>
- Re: [EP-tech] Error whilst depositing via SWORD
- From: John Salter <J.Salter@leeds.ac.uk>
- Re: [EP-tech] Error whilst depositing via SWORD
- From: "Newman D.R." <drn@ecs.soton.ac.uk>
- Re: [EP-tech] Error whilst depositing via SWORD
- From: John Salter <J.Salter@leeds.ac.uk>
- Re: [EP-tech] Error whilst depositing via SWORD
- From: "Newman D.R." <drn@ecs.soton.ac.uk>
- [EP-tech] Error whilst depositing via SWORD
- Prev by Date: Re: [EP-tech] Error whilst depositing via SWORD
- Next by Date: [EP-tech] Creation of eprints user accounts
- Previous by thread: [EP-tech] Sort view with creators_name and corp_creators
- Index(es):