Hi Jered,

sounds like you're on the right tracks. Could you please open an issue
in https://github.com/owncloud/core/issues? It would be nice if we could
get this into the core.

Thanks,

Emil
ownCloud Community Management


On 28.01.2018 14:05, Jered Floyd wrote:
>
> Sorry for the dumb question prior to actually inspecting the code -- I
> see that the system is configured so that it's supposed to do this! 
> However, it does not work when using an external auth (in my case, IMAP).
>
> The problem is that the 'email' field of the oc_accounts table is not
> populated, nor can it be set by the user.  Additionally, a success
> message is displayed if the user attempts to change the email address,
> even though it does not take effect, due to an error in unchecked
> return types.
>
> I've attached a patch that fixes the lack of an error message, but not
> one that addresses the underlying problem as I don't understand the
> system architecture well.  It appears that the reason setting the
> address fails is because the user is not given permissions to edit
> their account (by the GroupManager object) when the backend is IMAP. 
> I'm not sure the right way to go about fixing this problem.
>
> Regards,
> --Jered
>
>
> --- UsersController.php    2018/01/28 12:15:31    1.1
> +++ UsersController.php    2018/01/28 12:59:22
> @@ -35,7 +35,6 @@
>  use OCP\App\IAppManager;
>  use OCP\AppFramework\Controller;
>  use OCP\AppFramework\Http\DataResponse;
> -use OCP\AppFramework\Http\JSONResponse;
>  use OCP\AppFramework\Http\RedirectResponse;
>  use OCP\AppFramework\Http\TemplateResponse;
>  use OCP\AppFramework\Utility\ITimeFactory;
> @@ -600,21 +599,21 @@
>              );
>          }
>  
> -        // admins can set email without verification
> -        if ($mailAddress === '' || $this->isAdmin) {
> -            $this->setEmailAddress($userId, $mailAddress);
> -            return new DataResponse(
> -                [
> -                    'status' => 'success',
> -                    'data' => [
> -                        'message' => (string)$this->l10n->t('Email
> has been changed successfully.')
> -                    ]
> -                ],
> -                Http::STATUS_OK
> -            );
> -        }
> -
>          try {
> +            // admins can set email without verification
> +            if ($mailAddress === '' || $this->isAdmin) {
> +                $this->setEmailAddress($userId, $mailAddress);
> +                return new DataResponse(
> +                    [
> +                        'status' => 'success',
> +                        'data' => [
> +                            'message' =>
> (string)$this->l10n->t('Email has been changed successfully.')
> +                        ]
> +                    ],
> +                    Http::STATUS_OK
> +                );
> +            }
> +           
>              if ($this->sendEmail($userId, $mailAddress)) {
>                  return new DataResponse(
>                      [
> @@ -794,6 +793,7 @@
>       *
>       * @param string $id
>        * @param string $mailAddress
> +     * @throws \Exception
>        */
>      public function setEmailAddress($id, $mailAddress) {
>          $user = $this->userManager->get($id);
> @@ -805,10 +805,9 @@
>                  $this->config->deleteUserValue($id, 'owncloud',
> 'changeMail');
>              }
>          } else {
> -            return new JSONResponse([
> -                'error' => 'cannotSetEmailAddress',
> -                'message' => 'Cannot set email address for user'
> -            ], HTTP::STATUS_NOT_FOUND);
> +            throw new \Exception($this->l10n->t(
> +                'Cannot set email address for user.'
> +            ));
>          }
>      }
>  
> @@ -843,7 +842,12 @@
>          $splittedToken = explode(':',
> $this->config->getUserValue($userId, 'owncloud', 'changeMail', null));
>          $mailAddress = $splittedToken[2];
>  
> -        $this->setEmailAddress($userId, $mailAddress);
> +        try {
> +            $this->setEmailAddress($userId, $mailAddress);
> +        } catch (\Exception $e) {
> +            $this->log->error($e->getMessage(), ['app' => 'settings']);
> +            return new
> RedirectResponse($this->urlGenerator->linkToRoute('settings.SettingsPage.getPersonal',
> ['changestatus' => 'error']));
> +        }
>  
>          if ($oldEmailAddress !== null && $oldEmailAddress !== '') {
>              $tmpl = new \OC_Template('settings', 'changemail/notify');
>
>
>
> ----- On Jan 26, 2018, at 2:53 PM, Jered Floyd <je...@convivian.com>
> wrote:
>
>
>     OwnCloud Community,
>
>     Is there any way to configure OwnCloud to send the email
>     notifications of external shares with a "From:" address of the
>     sharing user, rather than an owncloud administrative address?  Or,
>     at least, a "Reply-To"?  I get constant replies from outside users
>     meaning to reply to the sharing user.
>
>     Thanks,
>     --Jered
>
>     _______________________________________________
>     User mailing list
>     User@owncloud.org
>     http://mailman.owncloud.org/mailman/listinfo/user
>
>
>
>
> _______________________________________________
> User mailing list
> User@owncloud.org
> http://mailman.owncloud.org/mailman/listinfo/user

_______________________________________________
User mailing list
User@owncloud.org
http://mailman.owncloud.org/mailman/listinfo/user

Reply via email to