diff options
author | Christoph Wurst <christoph@winzerhof-wurst.at> | 2019-09-17 16:33:27 +0200 |
---|---|---|
committer | npmbuildbot[bot] <npmbuildbot[bot]@users.noreply.github.com> | 2019-09-28 09:39:28 +0000 |
commit | de6940352a2f708376219a89ec84a8e6d25ca59e (patch) | |
tree | 459bacfc183b24d611be1877fbe22bbcd4efb1d6 /settings/Hooks.php | |
parent | c8cd607681ac128228f57114ce14dd67ab05de04 (diff) | |
download | nextcloud-server-de6940352a2f708376219a89ec84a8e6d25ca59e.tar.gz nextcloud-server-de6940352a2f708376219a89ec84a8e6d25ca59e.zip |
Move settings to an app
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
Signed-off-by: npmbuildbot[bot] <npmbuildbot[bot]@users.noreply.github.com>
Diffstat (limited to 'settings/Hooks.php')
-rw-r--r-- | settings/Hooks.php | 294 |
1 files changed, 0 insertions, 294 deletions
diff --git a/settings/Hooks.php b/settings/Hooks.php deleted file mode 100644 index 49189ca082e..00000000000 --- a/settings/Hooks.php +++ /dev/null @@ -1,294 +0,0 @@ -<?php -/** - * @copyright Copyright (c) 2017 Joas Schilling <coding@schilljs.com> - * - * @author Joas Schilling <coding@schilljs.com> - * @author Lukas Reschke <lukas@statuscode.ch> - * @author Morris Jobke <hey@morrisjobke.de> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program 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 Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ - -namespace OC\Settings; - -use OC\Settings\Activity\GroupProvider; -use OC\Settings\Activity\Provider; -use OCP\Activity\IManager as IActivityManager; -use OCP\IConfig; -use OCP\IGroup; -use OCP\IGroupManager; -use OCP\IL10N; -use OCP\IURLGenerator; -use OCP\IUser; -use OCP\IUserManager; -use OCP\IUserSession; -use OCP\L10N\IFactory; -use OCP\Mail\IMailer; - -class Hooks { - - /** @var IActivityManager */ - protected $activityManager; - /** @var IGroupManager|\OC\Group\Manager */ - protected $groupManager; - /** @var IUserManager */ - protected $userManager; - /** @var IUserSession */ - protected $userSession; - /** @var IURLGenerator */ - protected $urlGenerator; - /** @var IMailer */ - protected $mailer; - /** @var IConfig */ - protected $config; - /** @var IFactory */ - protected $languageFactory; - /** @var IL10N */ - protected $l; - - public function __construct(IActivityManager $activityManager, - IGroupManager $groupManager, - IUserManager $userManager, - IUserSession $userSession, - IURLGenerator $urlGenerator, - IMailer $mailer, - IConfig $config, - IFactory $languageFactory, - IL10N $l) { - $this->activityManager = $activityManager; - $this->groupManager = $groupManager; - $this->userManager = $userManager; - $this->userSession = $userSession; - $this->urlGenerator = $urlGenerator; - $this->mailer = $mailer; - $this->config = $config; - $this->languageFactory = $languageFactory; - $this->l = $l; - } - - /** - * @param string $uid - * @throws \InvalidArgumentException - * @throws \BadMethodCallException - * @throws \Exception - */ - public function onChangePassword($uid) { - $user = $this->userManager->get($uid); - - if (!$user instanceof IUser || $user->getLastLogin() === 0) { - // User didn't login, so don't create activities and emails. - return; - } - - $event = $this->activityManager->generateEvent(); - $event->setApp('settings') - ->setType('personal_settings') - ->setAffectedUser($user->getUID()); - - $instanceUrl = $this->urlGenerator->getAbsoluteURL('/'); - - $actor = $this->userSession->getUser(); - if ($actor instanceof IUser) { - if ($actor->getUID() !== $user->getUID()) { - $this->l = $this->languageFactory->get( - 'settings', - $this->config->getUserValue( - $user->getUID(), 'core', 'lang', - $this->config->getSystemValue('default_language', 'en') - ) - ); - - $text = $this->l->t('%1$s changed your password on %2$s.', [$actor->getDisplayName(), $instanceUrl]); - $event->setAuthor($actor->getUID()) - ->setSubject(Provider::PASSWORD_CHANGED_BY, [$actor->getUID()]); - } else { - $text = $this->l->t('Your password on %s was changed.', [$instanceUrl]); - $event->setAuthor($actor->getUID()) - ->setSubject(Provider::PASSWORD_CHANGED_SELF); - } - } else { - $text = $this->l->t('Your password on %s was reset by an administrator.', [$instanceUrl]); - $event->setSubject(Provider::PASSWORD_RESET); - } - - $this->activityManager->publish($event); - - if ($user->getEMailAddress() !== null) { - $template = $this->mailer->createEMailTemplate('settings.PasswordChanged', [ - 'displayname' => $user->getDisplayName(), - 'emailAddress' => $user->getEMailAddress(), - 'instanceUrl' => $instanceUrl, - ]); - - $template->setSubject($this->l->t('Password for %1$s changed on %2$s', [$user->getDisplayName(), $instanceUrl])); - $template->addHeader(); - $template->addHeading($this->l->t('Password changed for %s', [$user->getDisplayName()]), false); - $template->addBodyText($text . ' ' . $this->l->t('If you did not request this, please contact an administrator.')); - $template->addFooter(); - - - $message = $this->mailer->createMessage(); - $message->setTo([$user->getEMailAddress() => $user->getDisplayName()]); - $message->useTemplate($template); - $this->mailer->send($message); - } - } - - /** - * @param IUser $user - * @param string|null $oldMailAddress - * @throws \InvalidArgumentException - * @throws \BadMethodCallException - */ - public function onChangeEmail(IUser $user, $oldMailAddress) { - - if ($oldMailAddress === $user->getEMailAddress() || - $user->getLastLogin() === 0) { - // Email didn't really change or user didn't login, - // so don't create activities and emails. - return; - } - - $event = $this->activityManager->generateEvent(); - $event->setApp('settings') - ->setType('personal_settings') - ->setAffectedUser($user->getUID()); - - $instanceUrl = $this->urlGenerator->getAbsoluteURL('/'); - - $actor = $this->userSession->getUser(); - if ($actor instanceof IUser) { - $subject = Provider::EMAIL_CHANGED_SELF; - if ($actor->getUID() !== $user->getUID()) { - $this->l = $this->languageFactory->get( - 'settings', - $this->config->getUserValue( - $user->getUID(), 'core', 'lang', - $this->config->getSystemValue('default_language', 'en') - ) - ); - $subject = Provider::EMAIL_CHANGED; - } - $text = $this->l->t('Your email address on %s was changed.', [$instanceUrl]); - $event->setAuthor($actor->getUID()) - ->setSubject($subject); - } else { - $text = $this->l->t('Your email address on %s was changed by an administrator.', [$instanceUrl]); - $event->setSubject(Provider::EMAIL_CHANGED); - } - $this->activityManager->publish($event); - - - if ($oldMailAddress !== null) { - $template = $this->mailer->createEMailTemplate('settings.EmailChanged', [ - 'displayname' => $user->getDisplayName(), - 'newEMailAddress' => $user->getEMailAddress(), - 'oldEMailAddress' => $oldMailAddress, - 'instanceUrl' => $instanceUrl, - ]); - - $template->setSubject($this->l->t('Email address for %1$s changed on %2$s', [$user->getDisplayName(), $instanceUrl])); - $template->addHeader(); - $template->addHeading($this->l->t('Email address changed for %s', [$user->getDisplayName()]), false); - $template->addBodyText($text . ' ' . $this->l->t('If you did not request this, please contact an administrator.')); - if ($user->getEMailAddress()) { - $template->addBodyText($this->l->t('The new email address is %s', [$user->getEMailAddress()])); - } - $template->addFooter(); - - - $message = $this->mailer->createMessage(); - $message->setTo([$oldMailAddress => $user->getDisplayName()]); - $message->useTemplate($template); - $this->mailer->send($message); - } - } - - /** - * @param IGroup $group - * @param IUser $user - * @throws \InvalidArgumentException - * @throws \BadMethodCallException - */ - public function addUserToGroup(IGroup $group, IUser $user): void { - $subAdminManager = $this->groupManager->getSubAdmin(); - $usersToNotify = $subAdminManager->getGroupsSubAdmins($group); - $usersToNotify[] = $user; - - - $event = $this->activityManager->generateEvent(); - $event->setApp('settings') - ->setType('group_settings'); - - $actor = $this->userSession->getUser(); - if ($actor instanceof IUser) { - $event->setAuthor($actor->getUID()) - ->setSubject(GroupProvider::ADDED_TO_GROUP, [ - 'user' => $user->getUID(), - 'group' => $group->getGID(), - 'actor' => $actor->getUID(), - ]); - } else { - $event->setSubject(GroupProvider::ADDED_TO_GROUP, [ - 'user' => $user->getUID(), - 'group' => $group->getGID(), - ]); - } - - foreach ($usersToNotify as $userToNotify) { - $event->setAffectedUser($userToNotify->getUID()); - $this->activityManager->publish($event); - } - } - - /** - * @param IGroup $group - * @param IUser $user - * @throws \InvalidArgumentException - * @throws \BadMethodCallException - */ - public function removeUserFromGroup(IGroup $group, IUser $user): void { - $subAdminManager = $this->groupManager->getSubAdmin(); - $usersToNotify = $subAdminManager->getGroupsSubAdmins($group); - $usersToNotify[] = $user; - - - $event = $this->activityManager->generateEvent(); - $event->setApp('settings') - ->setType('group_settings'); - - $actor = $this->userSession->getUser(); - if ($actor instanceof IUser) { - $event->setAuthor($actor->getUID()) - ->setSubject(GroupProvider::REMOVED_FROM_GROUP, [ - 'user' => $user->getUID(), - 'group' => $group->getGID(), - 'actor' => $actor->getUID(), - ]); - } else { - $event->setSubject(GroupProvider::REMOVED_FROM_GROUP, [ - 'user' => $user->getUID(), - 'group' => $group->getGID(), - ]); - } - - foreach ($usersToNotify as $userToNotify) { - $event->setAffectedUser($userToNotify->getUID()); - $this->activityManager->publish($event); - } - } -} |