1<?php 2/** 3 * Login tasks module that presents a TOS Agreement page to user. 4 * If user does not accept terms, user is not allowed to login. 5 * 6 * Copyright 2002-2017 Horde LLC (http://www.horde.org/) 7 * 8 * See the enclosed file COPYING for license information (GPL). If you 9 * did not receive this file, see http://www.horde.org/licenses/gpl. 10 * 11 * @author Michael Slusarz <slusarz@horde.org> 12 * @category Horde 13 * @license http://www.horde.org/licenses/gpl GPL 14 * @package Horde 15 */ 16class Horde_LoginTasks_Task_TosAgreement extends Horde_LoginTasks_Task 17{ 18 /** 19 * The interval at which to run the task. 20 * 21 * @var integer 22 */ 23 public $interval = Horde_LoginTasks::FIRST_LOGIN; 24 25 /** 26 * The style of the page output. 27 * 28 * @var integer 29 */ 30 public $display = Horde_LoginTasks::DISPLAY_AGREE; 31 32 /** 33 * The priority of the task. 34 * 35 * @var integer 36 */ 37 public $priority = Horde_LoginTasks::PRIORITY_HIGH; 38 39 /** 40 * Constructor. 41 */ 42 public function __construct() 43 { 44 global $conf; 45 46 $this->active = false; 47 48 if (!empty($conf['tos']['file'])) { 49 if (file_exists($conf['tos']['file'])) { 50 $this->active = true; 51 } else { 52 Horde::log('Terms of Service Agreement file was not found: ' . $conf['tos']['file'], 'ERR'); 53 } 54 } 55 } 56 57 /** 58 * Determine if user agreed with the terms or not. If the user does not 59 * agree, log him/her out immediately. 60 * 61 * @throws Horde_Exception_AuthenticationFailure 62 */ 63 public function execute() 64 { 65 if (Horde_Util::getFormData('not_agree')) { 66 throw new Horde_Exception_AuthenticationFailure(_("You did not agree to the Terms of Service agreement, so you were not allowed to login."), Horde_Auth::REASON_MESSAGE); 67 } 68 } 69 70 /** 71 * Returns the TOS agreement for display on the login tasks page. 72 * 73 * @return string The terms of service agreement. 74 */ 75 public function describe() 76 { 77 return file_get_contents($GLOBALS['conf']['tos']['file']); 78 } 79 80} 81