LSsession : Add useUserCredentials parameter
[ldapsaisie.git] / public_html / includes / class / class.LSauth.php
1 <?php
2 /*******************************************************************************
3  * Copyright (C) 2007 Easter-eggs
4  * http://ldapsaisie.labs.libre-entreprise.org
5  *
6  * Author: See AUTHORS file in top-level directory.
7  *
8  * This program is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU General Public License version 2
10  * as published by the Free Software Foundation.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program; if not, write to the Free Software
19  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
20
21 ******************************************************************************/
22
23 /**
24  * Gestion de l'authentification d'un utilisateur
25  *
26  * Cette classe gere l'authentification des utilisateurs à l'interface
27  *
28  * @author Benjamin Renard <brenard@easter-eggs.com>
29  */
30 class LSauth {
31   
32   static private $authData=NULL;
33   static private $authObject=NULL;
34   static private $config=array();
35   static private $provider=NULL;
36   
37   static private $params = array (
38     'displayLoginForm' => true,
39     'displayLogoutBtn' => true,
40     'displaySelfAccess' => true
41   );
42
43   function start() {
44                 LSdebug('LSauth :: start()');
45     // Load Config
46     if (isset(LSsession :: $ldapServer['LSauth']) && is_array(LSsession :: $ldapServer['LSauth'])) {
47       self :: $config = LSsession :: $ldapServer['LSauth'];
48     }
49     if (!LSsession :: loadLSclass('LSauthMethod')) {
50                         LSdebug('LSauth :: Failed to load LSauthMethod');
51                         return;
52                 }
53     if (!isset(self :: $config['method'])) {
54       self :: $config['method']='basic';
55     }
56     $class='LSauthMethod_'.self :: $config['method'];
57     LSdebug('LSauth : provider -> '.$class);
58     if (LSsession :: loadLSclass($class)) {
59       self :: $provider = new $class();
60       if (!self :: $provider) {
61         LSerror :: addErrorCode('LSauth_05',self :: $config['method']);
62       }
63       LSdebug('LSauth : Provider Started !');
64       return true;
65     }
66     else {
67       LSerror :: addErrorCode('LSauth_04',self :: $config['method']);
68       return;
69     }
70   }
71   
72   function forceAuthentication() {
73                 LSdebug('LSauth :: forceAuthentication()');
74                 if (!is_null(self :: $provider)) {
75                         self :: $authData = self :: $provider -> getAuthData();
76                         if (self :: $authData) {
77                                 self :: $authObject = self :: $provider -> authenticate();
78                                 return self :: $authObject;
79                         }
80                         // No data : user has not filled the login form
81                         LSdebug('LSauth : No data -> user has not filled the login form');
82                         return;
83                 }
84                 LSerror :: addErrorCode('LSauth_06');
85                 return;
86         }
87
88   /**
89    * Get LDAP credentials
90    *
91    * Return LDAP credentials or false
92    *
93    * @params[in] $user The LSldapObject of the user authificated
94    *
95    * @retval Array|false Array of LDAP credentials array('dn','pwd') or False
96    **/
97   public function getLDAPcredentials($user) {
98     return self :: $provider -> getLDAPcredentials($user);
99   }
100
101  /**
102   * Logout
103   * 
104   * @retval void
105   **/
106   public function logout() {
107      if (!is_null(self :: $provider)) {
108                         return self :: $provider -> logout();
109                 }
110                 LSerror :: addErrorCode('LSauth_06');
111                 return;
112   }
113
114  /**
115   * Disable logout button in LSauth parameters
116   * 
117   * @retval void
118   **/
119   public function disableLogoutBtn() {
120                 self :: $params['displayLogoutBtn'] = false;
121         }
122
123  /**
124   * Can display or not logout button in LSauth parameters
125   * 
126   * @retval boolean
127   **/   
128         public function displayLogoutBtn() {
129                 return self :: $params['displayLogoutBtn'];
130         }
131   
132  /**
133   * Disable self access
134   *
135   * @retval void
136   **/
137   public function disableSelfAccess() {
138                 self :: $params['displaySelfAccess'] = false;
139         }
140
141  /**
142   * Can display or not self access
143   *
144   * @retval boolean
145   **/
146   public function displaySelfAccess() {
147     return self :: $params['displaySelfAccess'];
148   }
149
150   /*
151    * For compatibillity until loginForm is migrated in LSauth
152    */
153   public function disableLoginForm() {
154                 self :: $params['displayLoginForm'] = false;
155         }
156         
157         public function displayLoginForm() {
158                 return self :: $params['displayLoginForm'];
159         }
160         
161
162 }
163
164 /*
165  * Error Codes
166  */
167 LSerror :: defineError('LSauth_01',
168 _("LSauth : Login or password incorrect.")
169 );
170 LSerror :: defineError('LSauth_02',
171 _("LSauth : Impossible to identify you : Duplication of identities.")
172 );
173 LSerror :: defineError('LSauth_03',
174 _("LSauth : Could not load type of identifiable objects.")
175 );
176 LSerror :: defineError('LSauth_04',
177 _("LSauth : Can't load authentication method %{method}.")
178 );
179 LSerror :: defineError('LSauth_05',
180 _("LSauth : Failed to build the authentication provider %{method}.")
181 );
182 LSerror :: defineError('LSauth_06',
183 _("LSauth : Not correctly initialized.")
184 );
185 LSerror :: defineError('LSauth_07',
186 _("LSauth : Failed to get authentication informations from provider.")
187 );
188
189 ?>