Fixed issue #15601: Change all core PHP files to UTF8 encoding
[Packages/TYPO3.CMS.git] / typo3 / sysext / sv / class.tx_sv_authbase.php
1 <?php
2 /***************************************************************
3 * Copyright notice
4 *
5 * (c) 2004-2010 René Fritz <r.fritz@colorcube.de>
6 * All rights reserved
7 *
8 * This script is part of the TYPO3 project. The TYPO3 project is
9 * free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License as published by
11 * the Free Software Foundation; either version 2 of the License, or
12 * (at your option) any later version.
13 *
14 * The GNU General Public License can be found at
15 * http://www.gnu.org/copyleft/gpl.html.
16 * A copy is found in the textfile GPL.txt and important notices to the license
17 * from the author is found in LICENSE.txt distributed with these scripts.
18 *
19 *
20 * This script is distributed in the hope that it will be useful,
21 * but WITHOUT ANY WARRANTY; without even the implied warranty of
22 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
23 * GNU General Public License for more details.
24 *
25 * This copyright notice MUST APPEAR in all copies of the script!
26 ***************************************************************/
27 /**
28 * Service base class for 'User authentication'.
29 *
30 * @author René Fritz <r.fritz@colorcube.de>
31 */
32 /**
33 * [CLASS/FUNCTION INDEX of SCRIPT]
34 *
35 *
36 *
37 * 62: class tx_sv_authbase extends t3lib_svbase
38 * 87: function initAuth($mode, $loginData, $authInfo, &$pObj)
39 * 110: function compareUident($user, $loginData, $security_level='')
40 * 129: function writelog($type,$action,$error,$details_nr,$details,$data,$tablename='',$recuid='',$recpid='')
41 *
42 * SECTION: create/update user - EXPERIMENTAL
43 * 158: function fetchUserRecord($username, $extraWhere='', $dbUserSetup='')
44 *
45 * TOTAL FUNCTIONS: 4
46 * (This index is automatically created/updated by the extension "extdeveval")
47 *
48 */
49
50 require_once(PATH_t3lib . 'class.t3lib_svbase.php');
51
52
53 /**
54 * Authentication services class
55 *
56 * @author René Fritz <r.fritz@colorcube.de>
57 * @package TYPO3
58 * @subpackage tx_sv
59 */
60 class tx_sv_authbase extends t3lib_svbase {
61
62 var $pObj; // Parent object
63
64 var $mode; // Subtype of the service which is used to call the service.
65
66 var $login = array(); // Submitted login form data
67 var $authInfo = array(); // Various data
68
69 var $db_user = array(); // User db table definition
70 var $db_groups = array(); // Usergroups db table definition
71
72 var $writeAttemptLog = false; // If the writelog() functions is called if a login-attempt has be tried without success
73 var $writeDevLog = false; // If the t3lib_div::devLog() function should be used
74
75
76 /**
77 * Initialize authentication service
78 *
79 * @param string Subtype of the service which is used to call the service.
80 * @param array Submitted login form data
81 * @param array Information array. Holds submitted form data etc.
82 * @param object Parent object
83 * @return void
84 */
85 function initAuth($mode, $loginData, $authInfo, $pObj) {
86
87 $this->pObj = $pObj;
88
89 $this->mode = $mode; // sub type
90 $this->login = $loginData;
91 $this->authInfo = $authInfo;
92
93 $this->db_user = $this->getServiceOption('db_user', $authInfo['db_user'], FALSE);
94 $this->db_groups = $this->getServiceOption('db_groups', $authInfo['db_groups'], FALSE);
95
96 $this->writeAttemptLog = $this->pObj->writeAttemptLog;
97 $this->writeDevLog = $this->pObj->writeDevLog;
98 }
99
100 /**
101 * Check the login data with the user record data for builtin login methods
102 *
103 * @param array user data array
104 * @param array login data array
105 * @param string security_level
106 * @return boolean true if login data matched
107 */
108 function compareUident($user, $loginData, $security_level='') {
109 return $this->pObj->compareUident($user, $loginData, $security_level);
110 }
111
112 /**
113 * Writes to log database table in pObj
114 *
115 * @param integer $type: denotes which module that has submitted the entry. This is the current list: 1=tce_db; 2=tce_file; 3=system (eg. sys_history save); 4=modules; 254=Personal settings changed; 255=login / out action: 1=login, 2=logout, 3=failed login (+ errorcode 3), 4=failure_warning_email sent
116 * @param integer $action: denotes which specific operation that wrote the entry (eg. 'delete', 'upload', 'update' and so on...). Specific for each $type. Also used to trigger update of the interface. (see the log-module for the meaning of each number !!)
117 * @param integer $error: flag. 0 = message, 1 = error (user problem), 2 = System Error (which should not happen), 3 = security notice (admin)
118 * @param integer $details_nr: The message number. Specific for each $type and $action. in the future this will make it possible to translate errormessages to other languages
119 * @param string $details: Default text that follows the message
120 * @param array $data: Data that follows the log. Might be used to carry special information. If an array the first 5 entries (0-4) will be sprintf'ed the details-text...
121 * @param string $tablename: Special field used by tce_main.php. These ($tablename, $recuid, $recpid) holds the reference to the record which the log-entry is about. (Was used in attic status.php to update the interface.)
122 * @param integer $recuid: Special field used by tce_main.php. These ($tablename, $recuid, $recpid) holds the reference to the record which the log-entry is about. (Was used in attic status.php to update the interface.)
123 * @param integer $recpid: Special field used by tce_main.php. These ($tablename, $recuid, $recpid) holds the reference to the record which the log-entry is about. (Was used in attic status.php to update the interface.)
124 * @return void
125 * @see t3lib_userauthgroup::writelog()
126 */
127 function writelog($type,$action,$error,$details_nr,$details,$data,$tablename='',$recuid='',$recpid='') {
128 if($this->writeAttemptLog) {
129 $this->pObj->writelog($type,$action,$error,$details_nr,$details,$data,$tablename,$recuid,$recpid);
130 }
131 }
132
133
134
135
136
137
138
139
140
141
142 /*************************
143 *
144 * create/update user - EXPERIMENTAL
145 *
146 *************************/
147
148 /**
149 * Get a user from DB by username
150 *
151 * @param string user name
152 * @param string additional WHERE clause: " AND ...
153 * @param array User db table definition: $this->db_user
154 * @return mixed user array or false
155 */
156 function fetchUserRecord($username, $extraWhere='', $dbUserSetup='') {
157
158 $dbUser = is_array($dbUserSetup) ? $dbUserSetup : $this->db_user;
159 $user = $this->pObj->fetchUserRecord($dbUser, $username, $extraWhere);
160
161 return $user;
162 }
163 }
164
165 ?>