mirror of
				https://github.com/nextcloud/passman.git
				synced 2025-11-01 00:06:00 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			63 lines
		
	
	
		
			No EOL
		
	
	
		
			2.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			No EOL
		
	
	
		
			2.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| /**
 | |
|  * Nextcloud - passman
 | |
|  *
 | |
|  * This file is licensed under the Affero General Public License version 3 or
 | |
|  * later. See the COPYING file.
 | |
|  *
 | |
|  * @author Sander Brand <brantje@gmail.com>
 | |
|  * @copyright Sander Brand 2016
 | |
|  */
 | |
| 
 | |
| namespace OCA\Passman\Service;
 | |
| 
 | |
| use OCP\IConfig;
 | |
| use OCP\AppFramework\Db\DoesNotExistException;
 | |
| use OCP\ILogger;
 | |
| use OCA\Passman\Utility\Utils;
 | |
| use OCA\Passman\Activity;
 | |
| use OCP\IDBConnection;
 | |
| class CronService {
 | |
| 
 | |
| 	private $credentialService;
 | |
| 	private $logger;
 | |
| 	private $utils;
 | |
| 	private $notificationService;
 | |
| 	private $activityService;
 | |
| 	private $db;
 | |
| 	public function __construct(CredentialService $credentialService, ILogger $logger, Utils $utils, NotificationService $notificationService, ActivityService $activityService, $db) {
 | |
| 		$this->credentialService = $credentialService;
 | |
| 		$this->logger = $logger;
 | |
| 		$this->utils = $utils;
 | |
| 		$this->notificationService = $notificationService;
 | |
| 		$this->activityService = $activityService;
 | |
| 		$this->db = $db;
 | |
| 	}
 | |
| 
 | |
| 	public function expireCredentials() {
 | |
| 		$this->logger->info('Passman cron test', array('app' => 'passman'));
 | |
| 		$expired_credentials = $this->credentialService->getExpiredCredentials($this->utils->getTime());
 | |
| 		foreach($expired_credentials as $credential){
 | |
| 			$link = ''; // @TODO create direct link to credential
 | |
| 
 | |
| 			$sql = 'SELECT count(*) as rows from `*PREFIX*notifications` WHERE `subject`= \'credential_expired\' AND object_id=?';
 | |
| 			$query = $this->db->prepareQuery($sql);
 | |
| 			$id = $credential->getId();
 | |
| 			$query->bindParam(1, $id, \PDO::PARAM_INT);
 | |
| 			$result = $query->execute();
 | |
| 			$this->logger->debug($credential->getLabel() .' is expired, checking notifications!', array('app' => 'passman'));
 | |
| 			if($result->fetchRow()['rows'] == 0) {
 | |
| 				$this->logger->debug($credential->getLabel() .' is expired, adding notification!', array('app' => 'passman'));
 | |
| 
 | |
| 				$this->activityService->add(
 | |
| 					Activity::SUBJECT_ITEM_EXPIRED, array($credential->getLabel(), $credential->getUserId()),
 | |
| 					'', array(),
 | |
| 					$link, $credential->getUserId(), Activity::TYPE_ITEM_EXPIRED);
 | |
| 				$this->notificationService->credentialExpiredNotification($credential);
 | |
| 			} else {
 | |
| 				$this->logger->debug($credential->getLabel() .' is expired, already notified!', array('app' => 'passman'));
 | |
| 			}
 | |
| 
 | |
| 		}
 | |
| 	}
 | |
| } |