2018-09-29 21:56:23 +03:00
< ? php
2019-12-03 21:57:53 +03:00
2018-09-29 21:56:23 +03:00
declare ( strict_types = 1 );
2019-12-03 21:57:53 +03:00
2018-09-29 21:56:23 +03:00
/**
* @ copyright Copyright ( c ) 2018 , Roeland Jago Douma < roeland @ famdouma . nl >
*
2019-12-03 21:57:53 +03:00
* @ author Jan - Christoph Borchardt < hey @ jancborchardt . net >
* @ author Joas Schilling < coding @ schilljs . com >
2018-09-29 21:56:23 +03:00
* @ author Roeland Jago Douma < roeland @ famdouma . nl >
*
* @ 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
2019-12-03 21:57:53 +03:00
* along with this program . If not , see < http :// www . gnu . org / licenses />.
2018-09-29 21:56:23 +03:00
*
*/
namespace OCA\TwoFactorBackupCodes\Notifications ;
2019-02-11 16:29:44 +03:00
use OCP\IURLGenerator ;
2018-09-29 21:56:23 +03:00
use OCP\L10N\IFactory ;
use OCP\Notification\INotification ;
use OCP\Notification\INotifier ;
class Notifier implements INotifier {
/** @var IFactory */
private $factory ;
2019-02-11 16:29:44 +03:00
/** @var IURLGenerator */
private $url ;
public function __construct ( IFactory $factory , IURLGenerator $url ) {
2018-09-29 21:56:23 +03:00
$this -> factory = $factory ;
2019-02-11 16:29:44 +03:00
$this -> url = $url ;
2018-09-29 21:56:23 +03:00
}
2019-04-12 14:44:23 +03:00
/**
* Identifier of the notifier , only use [ a - z0 - 9_ ]
*
* @ return string
* @ since 17.0 . 0
*/
public function getID () : string {
return 'twofactor_backupcodes' ;
}
/**
* Human readable name describing the notifier
*
* @ return string
* @ since 17.0 . 0
*/
public function getName () : string {
return $this -> factory -> get ( 'twofactor_backupcodes' ) -> t ( 'Second-factor backup codes' );
}
public function prepare ( INotification $notification , string $languageCode ) : INotification {
2018-09-29 21:56:23 +03:00
if ( $notification -> getApp () !== 'twofactor_backupcodes' ) {
// Not my app => throw
throw new \InvalidArgumentException ();
}
// Read the language from the notification
$l = $this -> factory -> get ( 'twofactor_backupcodes' , $languageCode );
switch ( $notification -> getSubject ()) {
case 'create_backupcodes' :
$notification -> setParsedSubject (
$l -> t ( 'Generate backup codes' )
) -> setParsedMessage (
2019-07-16 11:23:12 +03:00
$l -> t ( 'You enabled two-factor authentication but did not generate backup codes yet. They are needed to restore access to your account in case you lose your second factor.' )
2018-09-29 21:56:23 +03:00
);
2019-02-11 16:29:44 +03:00
$notification -> setLink ( $this -> url -> linkToRouteAbsolute ( 'settings.PersonalSettings.index' , [ 'section' => 'security' ]));
2019-07-16 11:23:34 +03:00
$notification -> setIcon ( $this -> url -> getAbsoluteURL ( $this -> url -> imagePath ( 'core' , 'actions/password.svg' )));
2018-09-29 21:56:23 +03:00
return $notification ;
default :
// Unknown subject => Unknown notification => throw
throw new \InvalidArgumentException ();
}
}
}