LSauthMethod_anonymous : Added LSauth method and added feature in LSauth/LSsession...
[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   * Logout
90   * 
91   * @retval void
92   **/
93   public function logout() {
94      if (!is_null(self :: $provider)) {
95                         return self :: $provider -> logout();
96                 }
97                 LSerror :: addErrorCode('LSauth_06');
98                 return;
99   }
100
101  /**
102   * Disable logout button in LSauth parameters
103   * 
104   * @retval void
105   **/
106   public function disableLogoutBtn() {
107                 self :: $params['displayLogoutBtn'] = false;
108         }
109
110  /**
111   * Can display or not logout button in LSauth parameters
112   * 
113   * @retval boolean
114   **/   
115         public function displayLogoutBtn() {
116                 return self :: $params['displayLogoutBtn'];
117         }
118   
119  /**
120   * Disable self access
121   *
122   * @retval void
123   **/
124   public function disableSelfAccess() {
125                 self :: $params['displaySelfAccess'] = false;
126         }
127
128  /**
129   * Can display or not self access
130   *
131   * @retval boolean
132   **/
133   public function displaySelfAccess() {
134     return self :: $params['displaySelfAccess'];
135   }
136
137   /*
138    * For compatibillity until loginForm is migrated in LSauth
139    */
140   public function disableLoginForm() {
141                 self :: $params['displayLoginForm'] = false;
142         }
143         
144         public function displayLoginForm() {
145                 return self :: $params['displayLoginForm'];
146         }
147         
148
149 }
150
151 /*
152  * Error Codes
153  */
154 LSerror :: defineError('LSauth_01',
155 _("LSauth : Login or password incorrect.")
156 );
157 LSerror :: defineError('LSauth_02',
158 _("LSauth : Impossible to identify you : Duplication of identities.")
159 );
160 LSerror :: defineError('LSauth_03',
161 _("LSauth : Could not load type of identifiable objects.")
162 );
163 LSerror :: defineError('LSauth_04',
164 _("LSauth : Can't load authentication method %{method}.")
165 );
166 LSerror :: defineError('LSauth_05',
167 _("LSauth : Failed to build the authentication provider %{method}.")
168 );
169 LSerror :: defineError('LSauth_06',
170 _("LSauth : Not correctly initialized.")
171 );
172 LSerror :: defineError('LSauth_07',
173 _("LSauth : Failed to get authentication informations from provider.")
174 );
175
176 ?>