opencast-ilias / OpenCast

Opencast plugin for ILIAS LMS. The plugin shows a Opencast series as an ILIAS object. This version of the ILIAS plugin for Opencast is operated and developed collaboratively by a community. The University of Bern acts as coordinative maintainer.
GNU General Public License v3.0
13 stars 14 forks source link

[Release 8] New Right management #301

Closed ferishili closed 2 months ago

ferishili commented 3 months ago

This PR fixes #14

Additions

This is a WIP and is waiting for the final decisions/changes. This is expected to get updates along the way!

To update the plugin, you would need to perform the following commands in your ILIAS root dir:

okaufman commented 3 months ago

When I am trying to update the rights of the old series I hat to change the command to php setup/setup.php achieve OpenCast.OpencastRBACRights -vv Because otherwise I got the error: [InvalidArgumentException] There is no named objective 'ilOpenCastAgent.OpencastRBACRights'

Then when I do the step, I get this error:

 'PHP Warning:  Undefined property: ilOpenCastUpdateRBACPermsListObjective::$db in /var/www/ilias-next/Customizing/global/plugins/Services/Repository/RepositoryObject/OpenCast/classes/Setup/class.ilOpenCastUpdateRBACPermsListObjective.php on line 227
Updating Opencast RBAC permissions list of each Object to add (Record, Download and Schedule) perms based on their current permissions set. By admin decision, the copy right can also be removed!...[FAILED]

 [ERROR] Call to a member function manipulateF() on null                                
     #0 /var/www/ilias-next/src/Setup/Objective/ObjectiveWithPreconditions.php(99):                                 
     ilOpenCastUpdateRBACPermsListObjective->achieve()                                                              
     #1 /var/www/ilias-next/src/Setup/CLI/ObjectiveHelper.php(59):                                                  
     ILIAS\Setup\Objective\ObjectiveWithPreconditions->achieve()                                                    
     #2 /var/www/ilias-next/src/Setup/CLI/AchieveCommand.php(171): ILIAS\Setup\CLI\AchieveCommand->achieveObjective()
     #3 /var/www/ilias-next/src/Setup/CLI/AchieveCommand.php(99): ILIAS\Setup\CLI\AchieveCommand->executeAchieveObjective()
     #4 /var/www/ilias-next/libs/composer/vendor/symfony/console/Command/Command.php(298):                          
     ILIAS\Setup\CLI\AchieveCommand->execute()                                                                      
     #5 /var/www/ilias-next/libs/composer/vendor/symfony/console/Application.php(1040):                             
     Symfony\Component\Console\Command\Command->run()                                                               
     #6 /var/www/ilias-next/libs/composer/vendor/symfony/console/Application.php(301):                              
     Symfony\Component\Console\Application->doRunCommand()                                                          
     #7 /var/www/ilias-next/libs/composer/vendor/symfony/console/Application.php(171):                              
     Symfony\Component\Console\Application->doRun()                                                                 
     #8 /var/www/ilias-next/setup/cli.php(40): Symfony\Component\Console\Application->run()                         
     #9 /var/www/ilias-next/setup/setup.php(42): require_once('...')                                                
     #10 {main}                                                                                                     

[OK] Achieved objective 'OpenCast.OpencastRBACRights'. Thanks and have fun!

Did this step work for you?

ferishili commented 3 months ago

Thanks, @okaufman, I need to check that, and will get back to you in an hour!

ferishili commented 3 months ago

When I am trying to update the rights of the old series I hat to change the command to php setup/setup.php achieve OpenCast.OpencastRBACRights -vv Because otherwise I got the error: [InvalidArgumentException] There is no named objective 'ilOpenCastAgent.OpencastRBACRights'

For me, it is exactly the opposite,

Screenshot 2024-06-24 at 13 11 37

But the only step I did before that is the composer dump-autoload in my ILIAS root dir!

ferishili commented 3 months ago

Then when I do the step, I get this error:

The error is now fixed, thanks for reporting

okaufman commented 3 months ago

Now I get another error:

Updating Opencast RBAC permissions list of each Object to add (Record, Download and Schedule) perms based on their current permissions set. By admin decision, the copy right can also be removed!...[FAILED]                                                                                                                    

 [ERROR] ILIAS\DI\Container::event(): Return value must be of type ilAppEventHandler, null returned                     

         #0 /var/www/ilias-next/Services/Membership/classes/class.ilParticipants.php(79): ILIAS\DI\Container->event()   
         #1 /var/www/ilias-next/Modules/Group/classes/class.ilGroupParticipants.php(51): ilParticipants->__construct()  
         #2 /var/www/ilias-next/Modules/Group/classes/class.ilGroupParticipants.php(62): ilGroupParticipants->__construct()
         #3 /var/www/ilias-next/Modules/Group/classes/class.ilObjGroup.php(1386): ilGroupParticipants::_getInstanceByObjId()
         #4 /var/www/ilias-next/Modules/Group/classes/class.ilObjGroup.php(670): ilObjGroup->initParticipants()         
         #5 /var/www/ilias-next/Services/Object/classes/class.ilObjectFactory.php(196): ilObjGroup->read()              
         #6                                                                                                             
         /var/www/ilias-next/Customizing/global/plugins/Services/Repository/RepositoryObject/OpenCast/classes/class.ilObjOpenCast
         .php(153): ilObjectFactory::getInstanceByRefId()                                                               
         #7                                                                                                             
         /var/www/ilias-next/Customizing/global/plugins/Services/Repository/RepositoryObject/OpenCast/classes/Setup/class.ilOpenC
         astUpdateRBACPermsListObjective.php(116): ilObjOpenCast::_getParentCourseOrGroup()                             
         #8 /var/www/ilias-next/src/Setup/Objective/ObjectiveWithPreconditions.php(99):                                 
         ilOpenCastUpdateRBACPermsListObjective->achieve()                                                              
         #9 /var/www/ilias-next/src/Setup/CLI/ObjectiveHelper.php(59):                                                  
         ILIAS\Setup\Objective\ObjectiveWithPreconditions->achieve()                                                    
         #10 /var/www/ilias-next/src/Setup/CLI/AchieveCommand.php(171): ILIAS\Setup\CLI\AchieveCommand->achieveObjective()
         #11 /var/www/ilias-next/src/Setup/CLI/AchieveCommand.php(99): ILIAS\Setup\CLI\AchieveCommand->executeAchieveObjective()
         #12 /var/www/ilias-next/libs/composer/vendor/symfony/console/Command/Command.php(298):                         
         ILIAS\Setup\CLI\AchieveCommand->execute()                                                                      
         #13 /var/www/ilias-next/libs/composer/vendor/symfony/console/Application.php(1040):                            
         Symfony\Component\Console\Command\Command->run()                                                               
         #14 /var/www/ilias-next/libs/composer/vendor/symfony/console/Application.php(301):                             
         Symfony\Component\Console\Application->doRunCommand()                                                          
         #15 /var/www/ilias-next/libs/composer/vendor/symfony/console/Application.php(171):                             
         Symfony\Component\Console\Application->doRun()                                                                 
         #16 /var/www/ilias-next/setup/cli.php(40): Symfony\Component\Console\Application->run()                        
         #17 /var/www/ilias-next/setup/setup.php(42): require_once('...')                                               
         #18 {main}  
ferishili commented 3 months ago

Now I get another error:

The problem should be fixed now, please give it a try again.

dagraf commented 3 months ago

Specification for section "Rights for members": > ALL DONE. Thx!

ferishili commented 3 months ago

Title of option "Upload by members" should only be "Upload" (as the title of this section already is called "Rights for members").

This was applied before: you would only need to perform the "Refresh Languages" in the plugin config as admin!

ferishili commented 3 months ago

@dagraf, changes are applied, rebase and "Refresh Languages"

dagraf commented 3 months ago

* When creating a new series the option "Upload by members" should be activated by default.

Damn. I should have written "Download by members" should be activated by default, not "Upload by members". My bad, sorry! And thank you for correcting it.

ferishili commented 3 months ago

Damn. I should have written "Download by members" should be activated by default, not "Upload by members". My bad, sorry! And thank you for correcting it.

No problem at all, done!

dagraf commented 3 months ago

A user can now always download their own video (the permission "Read" is needed, of course). We specified that download of one's own videos should only be possible when a user has one of the following permissions: Upload, Record, Download.

I just want to state this observation here so others can comment on it. I have now strong opinion. What do you think?

Edit, after discussion with @ferishili (8.7.2024): We stay with this behavior. If there are complaints from adopters or user we will discuss it a community meeting.

dagraf commented 3 months ago

Issue: If a user has the permission "Record" he/she should be possible to do the following actions with OWN videos: delete, change metadata and start workflows and download your own videos. At the moment, the first three actions are missing (delete, change metadata, start workflows). > DONE

Edit (8.7.2024): Works now as expected. Thx for the fix.

ferishili commented 3 months ago

Issue: If a user has the permission "Record" he/she should be possible to do the following actions with OWN videos: delete, change metadata and start workflows and download your own videos. At the moment, the first three actions are missing (delete, change metadata, start workflows).

The issue is now resolved, please give it a try. Thanks

dagraf commented 2 months ago

@ferishili: Our test of the update step were succesfull. As also the test of the last bugfix was successfull (actions when the permission "Record" is activated, see above), you have our go to prepare the merging of this PR.

chfsx commented 2 months ago

Merged in v8.1.0