Skip to content

Fix for subadmins edit email address of its users#28351

Merged
PVince81 merged 1 commit into
masterfrom
group-admin-save-mail-addr
Jul 11, 2017
Merged

Fix for subadmins edit email address of its users#28351
PVince81 merged 1 commit into
masterfrom
group-admin-save-mail-addr

Conversation

@sharidas

Copy link
Copy Markdown
Contributor

The issue was caused because annotation for
non admin users to setEmailAddress method was
missing.

Signed-off-by: Sujith H sharidasan@owncloud.com

Description

This change will help to fix the issue to set/change the email address when logged in as group admin.

Related Issue

Issue: #28035

Motivation and Context

When logged in as group admin and try to create users. Later try to set/modify the email address. This wasn't happening because of NotAdminException. This change will help solve the issue.

How Has This Been Tested?

This has been tested by:

  • Login as admin and try to edit the email address. It works.
  • Login as group admin user and try to set/edit the email address. It works.
    • Create new user. Try to set new email address. It works.

Screenshots (if appropriate):

screenshot_20170710_140920

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)

Checklist:

  • My code follows the code style of this project.
  • My change requires a change to the documentation.
  • I have updated the documentation accordingly.
  • I have read the CONTRIBUTING document.
  • I have added tests to cover my changes.
  • All new and existing tests passed.

@sharidas sharidas requested review from PVince81 and tomneedham July 10, 2017 08:48
@PVince81

Copy link
Copy Markdown
Contributor

@sharidas from what I remember this isn't enough. This would allow any user (not only subadmins) to change the email of anybody else. You need to add a check within the function to make sure the current user is a subadmin and that the subadmin has access to this specific user. (because a subadmin cannot change the email of a user not in their group).

Please adjust accordingly. In the same file there should already be examples of how to do this check.

@sharidas sharidas force-pushed the group-admin-save-mail-addr branch 2 times, most recently from db430e7 to 7d062ee Compare July 10, 2017 10:47
@sharidas

Copy link
Copy Markdown
Contributor Author

I have modified the PR, to make sure that the email address get set if the user is admin or if the user is a belongs to subadmin.

@PVince81

Copy link
Copy Markdown
Contributor

restarted jenkins build

@sharidas

Copy link
Copy Markdown
Contributor Author

Below are the output of curl command ran on console:

sujith@sujith-Inspiron-5567 ~/test/owncloud $ curl 'http://localhost/testing/index.php/settings/admin/user3/mailAddress' -X PUT -H 'Cookie: oc_sessionPassphrase=BAeakzHAyj5o8OTnpgR6o0fGt2hVYDEeDUc%2B1FCKK3aSCt%2BW9yA9qPM9qDkCrLgeR%2FgsmDsh%2F6s1MeBv80yYfta8tpVRFgfSEQDPGUGi9%2BbCCUrCB69OXUxZLirib4bY; oc7tul0kp8p4=ujph8vh9sjvbd814uddrg7f6k5' -H 'requesttoken: JiMVfUhHGSpTPTgVDAErF24BJRlgPyMwMzIcHAcPCyw=:NKE+gsVdxhvLa5nc+csIYjoygDIKUBrt44NaTHJa1+E=' -H 'Origin: http://localhost' -H 'Accept-Encoding: gzip, deflate, br' -H 'Accept-Language: en-GB,en-US;q=0.8,en;q=0.6' -H 'User-Agent: Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Mobile Safari/537.36' -H 'OCS-APIREQUEST: true' -H 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8' -H 'Accept: */*' -H 'X-Requested-With: XMLHttpRequest' -H 'Connection: keep-alive' --data 'mailAddress=a%40forester.com' --compressed
<!DOCTYPE html>
<html class="ng-csp" data-placeholder-focus="false" lang="en_GB" >
        <head data-requesttoken="ITJmEXd1eRpAJ3oUVUw2HH0xNBZ2fi8DDTIALmMXCi8=:IZ6GXA6Tkr4M8xsh8SbFO+cJYDUy1ZswkTJM0buurPo=">
                <meta charset="utf-8">
                <title>
                ownCloud                </title>
                <meta http-equiv="X-UA-Compatible" content="IE=edge">
                <meta name="referrer" content="never">
                <meta name="viewport" content="width=device-width, minimum-scale=1.0, maximum-scale=1.0">
                <meta name="apple-itunes-app" content="app-id=543672169">
                <meta name="theme-color" content="#1d2d44">
                <link rel="icon" href="/testing/core/img/favicon.ico">
                <link rel="apple-touch-icon-precomposed" href="/testing/core/img/favicon-touch.png">
                <link rel="mask-icon" sizes="any" href="/testing/core/img/favicon-mask.svg" color="#1d2d44">
                                        <link rel="stylesheet" href="/testing/core/css/styles.css?v=4161613e6f039aebf98babc1d4a01b3f">
                                        <link rel="stylesheet" href="/testing/core/css/inputs.css?v=4161613e6f039aebf98babc1d4a01b3f">
                                        <link rel="stylesheet" href="/testing/core/css/header.css?v=4161613e6f039aebf98babc1d4a01b3f">
                                        <link rel="stylesheet" href="/testing/core/css/icons.css?v=4161613e6f039aebf98babc1d4a01b3f">
                                        <link rel="stylesheet" href="/testing/core/css/fonts.css?v=4161613e6f039aebf98babc1d4a01b3f">
                                        <link rel="stylesheet" href="/testing/core/css/apps.css?v=4161613e6f039aebf98babc1d4a01b3f">
                                        <link rel="stylesheet" href="/testing/core/css/global.css?v=4161613e6f039aebf98babc1d4a01b3f">
                                        <link rel="stylesheet" href="/testing/core/css/fixes.css?v=4161613e6f039aebf98babc1d4a01b3f">
                                        <link rel="stylesheet" href="/testing/core/css/multiselect.css?v=4161613e6f039aebf98babc1d4a01b3f">
                                        <link rel="stylesheet" href="/testing/core/css/mobile.css?v=4161613e6f039aebf98babc1d4a01b3f">
                                        <link rel="stylesheet" href="/testing/core/vendor/jquery-ui/themes/base/jquery-ui.css?v=4161613e6f039aebf98babc1d4a01b3f">
                                        <link rel="stylesheet" href="/testing/core/css/jquery-ui-fixes.css?v=4161613e6f039aebf98babc1d4a01b3f">
                                        <link rel="stylesheet" href="/testing/core/css/tooltip.css?v=4161613e6f039aebf98babc1d4a01b3f">
                                        <link rel="stylesheet" href="/testing/apps/files_pdfviewer/css/style.css?v=4161613e6f039aebf98babc1d4a01b3f">
                                        <link rel="stylesheet" href="/testing/core/css/share.css?v=4161613e6f039aebf98babc1d4a01b3f">
                                        <link rel="stylesheet" href="/testing/apps/files_versions/css/versions.css?v=4161613e6f039aebf98babc1d4a01b3f">
                                        <link rel="stylesheet" href="/testing/apps/files_videoplayer/css/style.css?v=4161613e6f039aebf98babc1d4a01b3f">
                                        <link rel="stylesheet" href="/testing/apps/firstrunwizard/css/colorbox.css?v=4161613e6f039aebf98babc1d4a01b3f">
                                        <link rel="stylesheet" href="/testing/apps/firstrunwizard/css/firstrunwizard.css?v=4161613e6f039aebf98babc1d4a01b3f">
                                        <link rel="stylesheet" href="/testing/apps/notifications/css/styles.css?v=4161613e6f039aebf98babc1d4a01b3f">
                                        <link rel="stylesheet" href="/testing/core/css/jquery.ocdialog.css?v=4161613e6f039aebf98babc1d4a01b3f">
                                                                        <script src="/testing/index.php/core/js/oc.js?v=4161613e6f039aebf98babc1d4a01b3f"></script>
                                        <script src="/testing/core/vendor/jquery/dist/jquery.min.js?v=4161613e6f039aebf98babc1d4a01b3f"></script>
                                        <script src="/testing/core/vendor/jquery-migrate/jquery-migrate.min.js?v=4161613e6f039aebf98babc1d4a01b3f"></script>
                                        <script src="/testing/core/vendor/jquery-ui/ui/jquery-ui.custom.js?v=4161613e6f039aebf98babc1d4a01b3f"></script>
                                        <script src="/testing/core/vendor/underscore/underscore.js?v=4161613e6f039aebf98babc1d4a01b3f"></script>
                                        <script src="/testing/core/vendor/moment/min/moment-with-locales.js?v=4161613e6f039aebf98babc1d4a01b3f"></script>
                                        <script src="/testing/core/vendor/handlebars/handlebars.js?v=4161613e6f039aebf98babc1d4a01b3f"></script>
                                        <script src="/testing/core/vendor/blueimp-md5/js/md5.js?v=4161613e6f039aebf98babc1d4a01b3f"></script>
                                        <script src="/testing/core/vendor/bootstrap/js/tooltip.js?v=4161613e6f039aebf98babc1d4a01b3f"></script>
                                        <script src="/testing/core/vendor/backbone/backbone.js?v=4161613e6f039aebf98babc1d4a01b3f"></script>
                                        <script src="/testing/core/vendor/es6-promise/dist/es6-promise.js?v=4161613e6f039aebf98babc1d4a01b3f"></script>
                                        <script src="/testing/core/vendor/davclient.js/lib/client.js?v=4161613e6f039aebf98babc1d4a01b3f"></script>
                                        <script src="/testing/core/vendor/clipboard/dist/clipboard.js?v=4161613e6f039aebf98babc1d4a01b3f"></script>
                                        <script src="/testing/core/vendor/bowser/src/bowser.js?v=4161613e6f039aebf98babc1d4a01b3f"></script>
                                        <script src="/testing/core/js/jquery.ocdialog.js?v=4161613e6f039aebf98babc1d4a01b3f"></script>
                                        <script src="/testing/core/js/oc-dialogs.js?v=4161613e6f039aebf98babc1d4a01b3f"></script>
                                        <script src="/testing/core/js/js.js?v=4161613e6f039aebf98babc1d4a01b3f"></script>
                                        <script src="/testing/core/js/l10n.js?v=4161613e6f039aebf98babc1d4a01b3f"></script>
                                        <script src="/testing/core/l10n/en_GB.js?v=4161613e6f039aebf98babc1d4a01b3f"></script>
                                        <script src="/testing/core/js/octemplate.js?v=4161613e6f039aebf98babc1d4a01b3f"></script>
                                        <script src="/testing/core/js/eventsource.js?v=4161613e6f039aebf98babc1d4a01b3f"></script>
                                        <script src="/testing/core/js/config.js?v=4161613e6f039aebf98babc1d4a01b3f"></script>
                                        <script src="/testing/core/search/js/search.js?v=4161613e6f039aebf98babc1d4a01b3f"></script>
                                        <script src="/testing/core/js/oc-requesttoken.js?v=4161613e6f039aebf98babc1d4a01b3f"></script>
                                        <script src="/testing/core/js/apps.js?v=4161613e6f039aebf98babc1d4a01b3f"></script>
                                        <script src="/testing/core/js/mimetype.js?v=4161613e6f039aebf98babc1d4a01b3f"></script>
                                        <script src="/testing/core/js/mimetypelist.js?v=4161613e6f039aebf98babc1d4a01b3f"></script>
                                        <script src="/testing/core/vendor/snapjs/dist/latest/snap.js?v=4161613e6f039aebf98babc1d4a01b3f"></script>
                                        <script src="/testing/core/js/oc-backbone.js?v=4161613e6f039aebf98babc1d4a01b3f"></script>
                                        <script src="/testing/core/js/placeholder.js?v=4161613e6f039aebf98babc1d4a01b3f"></script>
                                        <script src="/testing/core/js/jquery.avatar.js?v=4161613e6f039aebf98babc1d4a01b3f"></script>
                                        <script src="/testing/core/js/backgroundjobs.js?v=4161613e6f039aebf98babc1d4a01b3f"></script>
                                        <script src="/testing/apps/files_pdfviewer/js/previewplugin.js?v=4161613e6f039aebf98babc1d4a01b3f"></script>
                                        <script src="/testing/core/js/shareconfigmodel.js?v=4161613e6f039aebf98babc1d4a01b3f"></script>
                                        <script src="/testing/core/js/sharemodel.js?v=4161613e6f039aebf98babc1d4a01b3f"></script>
                                        <script src="/testing/core/js/sharescollection.js?v=4161613e6f039aebf98babc1d4a01b3f"></script>
                                        <script src="/testing/core/js/shareitemmodel.js?v=4161613e6f039aebf98babc1d4a01b3f"></script>
                                        <script src="/testing/core/js/sharedialogresharerinfoview.js?v=4161613e6f039aebf98babc1d4a01b3f"></script>
                                        <script src="/testing/core/js/sharedialoglinklistview.js?v=4161613e6f039aebf98babc1d4a01b3f"></script>
                                        <script src="/testing/core/js/sharedialoglinkshareview.js?v=4161613e6f039aebf98babc1d4a01b3f"></script>
                                        <script src="/testing/core/js/sharedialogmailview.js?v=4161613e6f039aebf98babc1d4a01b3f"></script>
                                        <script src="/testing/core/js/sharedialoglinksocialview.js?v=4161613e6f039aebf98babc1d4a01b3f"></script>
                                        <script src="/testing/core/js/sharedialogexpirationview.js?v=4161613e6f039aebf98babc1d4a01b3f"></script>
                                        <script src="/testing/core/js/sharedialogshareelistview.js?v=4161613e6f039aebf98babc1d4a01b3f"></script>
                                        <script src="/testing/core/js/sharedialogview.js?v=4161613e6f039aebf98babc1d4a01b3f"></script>
                                        <script src="/testing/core/js/share.js?v=4161613e6f039aebf98babc1d4a01b3f"></script>
                                        <script src="/testing/apps/files_videoplayer/js/viewer.js?v=4161613e6f039aebf98babc1d4a01b3f"></script>
                                        <script src="/testing/apps/firstrunwizard/l10n/en_GB.js?v=4161613e6f039aebf98babc1d4a01b3f"></script>
                                        <script src="/testing/apps/firstrunwizard/js/jquery.colorbox.js?v=4161613e6f039aebf98babc1d4a01b3f"></script>
                                        <script src="/testing/apps/firstrunwizard/js/firstrunwizard.js?v=4161613e6f039aebf98babc1d4a01b3f"></script>
                                        <script src="/testing/apps/gallery/l10n/en_GB.js?v=4161613e6f039aebf98babc1d4a01b3f"></script>
                                        <script src="/testing/apps/notifications/js/app.js?v=4161613e6f039aebf98babc1d4a01b3f"></script>
                                        <script src="/testing/apps/notifications/js/notification.js?v=4161613e6f039aebf98babc1d4a01b3f"></script>
                                        <script src="/testing/core/js/files/fileinfo.js?v=4161613e6f039aebf98babc1d4a01b3f"></script>
                                        <script src="/testing/core/js/files/client.js?v=4161613e6f039aebf98babc1d4a01b3f"></script>
                                        </head>
        <body id="body-login">
                <noscript>
        <div id="nojavascript">
                <div>
                        This application requires JavaScript for correct operation. Please <a href="http://enable-javascript.com/" target="_blank" rel="noreferrer">enable JavaScript</a> and reload the page.               </div>
        </div>
</noscript>
                <div class="wrapper">
                        <div class="v-align">
                                                                        <header role="banner">
                                                <div id="header">
                                                        <div class="logo">
                                                                <h1 class="hidden-visually">
                                                                        ownCloud                                                                </h1>
                                                        </div>
                                                        <div id="logo-claim" style="display:none;"></div>
                                                </div>
                                        </header>
                                                                <ul>
        <li class='error'>
                Access denied<br>
                <p class='hint'></p>
        </li>
</ul>
                                <div class="push"></div><!-- for sticky footer -->
                        </div>
                </div>
                <footer role="contentinfo">
                        <p class="info">
                                <a href="https://owncloud.org" target="_blank" rel="noreferrer">ownCloud</a> – web services under your control                  </p>
                </footer>
        </body>
</html>
sujith@sujith-Inspiron-5567 ~/test/owncloud $ curl 'http://localhost/testing/index.php/settings/admin/user1/mailAddress' -X PUT -H 'Cookie: oc_sessionPassphrase=BAeakzHAyj5o8OTnpgR6o0fGt2hVYDEeDUc%2B1FCKK3aSCt%2BW9yA9qPM9qDkCrLgeR%2FgsmDsh%2F6s1MeBv80yYfta8tpVRFgfSEQDPGUGi9%2BbCCUrCB69OXUxZLirib4bY; oc7tul0kp8p4=ujph8vh9sjvbd814uddrg7f6k5' -H 'requesttoken: JiMVfUhHGSpTPTgVDAErF24BJRlgPyMwMzIcHAcPCyw=:NKE+gsVdxhvLa5nc+csIYjoygDIKUBrt44NaTHJa1+E=' -H 'Origin: http://localhost' -H 'Accept-Encoding: gzip, deflate, br' -H 'Accept-Language: en-GB,en-US;q=0.8,en;q=0.6' -H 'User-Agent: Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Mobile Safari/537.36' -H 'OCS-APIREQUEST: true' -H 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8' -H 'Accept: */*' -H 'X-Requested-With: XMLHttpRequest' -H 'Connection: keep-alive' --data 'mailAddress=a%40forester.com' --compressed
nullsujith@sujith-Inspiron-5567 ~/test/owncloud $

@sharidas sharidas force-pushed the group-admin-save-mail-addr branch from 7d062ee to ef97ba9 Compare July 10, 2017 11:45
@PVince81

Copy link
Copy Markdown
Contributor

Hmm, I'd expect a JSON response here, not HTML

@sharidas

Copy link
Copy Markdown
Contributor Author

Below are the logs captured from the console:

sujith@sujith-Inspiron-5567 ~/test/owncloud $ curl 'http://localhost/testing/index.php/settings/admin/user4/mailAddress' -X PUT -u user1:123 -H 'Cookie: oc_sessionPassphrase=xci7e0BKl%2B4wkhM3HMwBCs7lgQYTgVr%2FVtMww%2B1imRA5966PqtH1GMw705NlKwpVeFiI4iveMp%2Fbi%2FEa%2BA4i0lOWYqBlYdegzki3pm2FKvzQVHI2LUZhEmVSoJClGI04; octygubgji7i=g9v2snp0210lfd64rqflfacr85; ocipobht996w=e1cuk28eeg859i67ar037sgk64; oci9vwy9pw63=amlefvhdr87ut9fmvk8ah234g2; ocgb2b48ejn1=t07u3gd2b4frmgthd10h72ki80; ocg4qd30e4qv=pt6c750ds4pi12qs77qb7ffie4' -H 'requesttoken: XRM7FgFIAgMsLgooHx1XdFhiMmJ+MTwFFShFMyQOHl4=:lvSTJqtPOhoAfE99oUzQ0WVJMr1rKmG7VTg1Su8MSuA=' -H 'Origin: http://localhost' -H 'Accept-Encoding: gzip, deflate, br' -H 'Accept-Language: en-GB,en-US;q=0.8,en;q=0.6' -H 'User-Agent: Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Mobile Safari/537.36' -H 'OCS-APIREQUEST: true' -H 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8' -H 'Accept: */*' -H 'X-Requested-With: XMLHttpRequest' -H 'Connection: keep-alive' --data 'mailAddress=a%40foobar.com' --compressed
{"error":"cannotSetEmailAddress","message":"Cannot set email address for user"}sujith@sujith-Inspiron-5567 ~/test/owncloud $ 
sujith@sujith-Inspiron-5567 ~/test/owncloud $ 
sujith@sujith-Inspiron-5567 ~/test/owncloud $ curl 'http://localhost/testing/index.php/settings/admin/user1/mailAddress' -X PUT -u user1:123 -H 'Cookie: oc_sessionPassphrase=xci7e0BKl%2B4wkhM3HMwBCs7lgQYTgVr%2FVtMww%2B1imRA5966PqtH1GMw705NlKwpVeFiI4iveMp%2Fbi%2FEa%2BA4i0lOWYqBlYdegzki3pm2FKvzQVHI2LUZhEmVSoJClGI04; octygubgji7i=g9v2snp0210lfd64rqflfacr85; ocipobht996w=e1cuk28eeg859i67ar037sgk64; oci9vwy9pw63=amlefvhdr87ut9fmvk8ah234g2; ocgb2b48ejn1=t07u3gd2b4frmgthd10h72ki80; ocg4qd30e4qv=pt6c750ds4pi12qs77qb7ffie4' -H 'requesttoken: XRM7FgFIAgMsLgooHx1XdFhiMmJ+MTwFFShFMyQOHl4=:lvSTJqtPOhoAfE99oUzQ0WVJMr1rKmG7VTg1Su8MSuA=' -H 'Origin: http://localhost' -H 'Accept-Encoding: gzip, deflate, br' -H 'Accept-Language: en-GB,en-US;q=0.8,en;q=0.6' -H 'User-Agent: Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Mobile Safari/537.36' -H 'OCS-APIREQUEST: true' -H 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8' -H 'Accept: */*' -H 'X-Requested-With: XMLHttpRequest' -H 'Connection: keep-alive' --data 'mailAddress=a%40foobar.com' --compressed
nullsujith@sujith-Inspiron-5567 ~/test/owncloud $ 
sujith@sujith-Inspiron-5567 ~/test/owncloud $

@sharidas sharidas force-pushed the group-admin-save-mail-addr branch 2 times, most recently from e23e9ee to df46da6 Compare July 11, 2017 06:35
@sharidas sharidas added this to the development milestone Jul 11, 2017
The issue was caused because annotation for
non admin users to setEmailAddress method was
missing. And along with that checks are added
so that only admin and subadmin users can edit/set
the email address of its users. A subadmin user
cannot set/edit the email address which it has not
access to.

Signed-off-by: Sujith H <sharidasan@owncloud.com>
@sharidas sharidas force-pushed the group-admin-save-mail-addr branch from df46da6 to 14a0d57 Compare July 11, 2017 06:42
@sharidas sharidas changed the title Add annotation for non admin Fix for subadmins edit email address of its users Jul 11, 2017
@PVince81

Copy link
Copy Markdown
Contributor

{"error":"cannotSetEmailAddress","message":"Cannot set email address for user"} looks correct. But why is the second one returning null instead of an error ?

@sharidas

Copy link
Copy Markdown
Contributor Author

When user successfully sets the email address, the return is null. Else the one in the first. Sorry for the confusion I should have posted in the reverse order :(

@PVince81

Copy link
Copy Markdown
Contributor

was it always null ? I hoped it would be something like "success" or so

@sharidas

Copy link
Copy Markdown
Contributor Author

Yah it was always null. Sharing the screenshot for reference:

Without the change in PR ( logged in as admin user ):

withoutcurrentchange

With our current change ( logged in as subadmin user ):
withcurrentchange

@PVince81 PVince81 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ok, thanks 👍

@PVince81 PVince81 merged commit f849473 into master Jul 11, 2017
@PVince81 PVince81 deleted the group-admin-save-mail-addr branch July 11, 2017 09:32
@PVince81

Copy link
Copy Markdown
Contributor

@sharidas please backport to stable10

@PVince81

Copy link
Copy Markdown
Contributor

Regression: #27667

@lock

lock Bot commented Aug 1, 2019

Copy link
Copy Markdown

This thread has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.

@lock lock Bot locked as resolved and limited conversation to collaborators Aug 1, 2019
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants