diff --git a/src/IDF/Views.php b/src/IDF/Views.php index 03d8680..82afccb 100644 --- a/src/IDF/Views.php +++ b/src/IDF/Views.php @@ -20,7 +20,6 @@ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # # ***** END LICENSE BLOCK ***** */ - Pluf::loadFunction('Pluf_HTTP_URL_urlForView'); Pluf::loadFunction('Pluf_Shortcuts_RenderToResponse'); Pluf::loadFunction('Pluf_Shortcuts_GetObjectOr404'); @@ -31,12 +30,44 @@ Pluf::loadFunction('Pluf_Shortcuts_GetFormForModel'); */ class IDF_Views { + + public function checkNewUser($login) + { + $ldapOnly = Pluf::f('ldap_only'); + $ldapHost = Pluf::f('ldap_host_port'); + $binddn = Pluf::f('ldap_user'); + $bindpass = Pluf::f('ldap_password'); + $dn = Pluf::f('ldap_baseDn'); + $version= Pluf::f('ldap_version'); + $key = Pluf::f('ldap_primaryKey'); + if ($ldapOnly) + { + $ds=ldap_connect($ldapHost); + ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, $version); + $result=@ldap_bind($ds,$binddn,$bindpass); + + if ($result) + { + $filter = "(uid=$login)"; + $sr = ldap_search($ds, $dn, $filter); //the search result + $entry = ldap_first_entry($ds, $sr); //returns the first entry of the search result + $countE = ldap_get_entries($ds,$sr); + if ($countE["count"] === 1) { + return true; + } else return false; + ldap_close($ds); + } else return false; + } else return false; + } + + /** * List all the projects managed by InDefero. * * Only the public projects are listed or the private with correct * rights. */ + public function index($request, $match) { $projects = self::getProjects($request->user); @@ -46,6 +77,7 @@ class IDF_Views $request); } + /** * Login view. */ @@ -54,9 +86,11 @@ class IDF_Views if (isset($request->POST['action']) and $request->POST['action'] == 'new-user') { $login = (isset($request->POST['login'])) ? $request->POST['login'] : ''; - $url = Pluf_HTTP_URL_urlForView('IDF_Views::register', array(), + if ($this->checkNewUser($login)){ + $url = Pluf_HTTP_URL_urlForView('IDF_Views::register', array(), array('login' => $login)); - return new Pluf_HTTP_Response_Redirect($url); + return new Pluf_HTTP_Response_Redirect($url); + } } $v = new Pluf_Views(); $request->POST['login'] = (isset($request->POST['login'])) ? mb_strtolower($request->POST['login']) : '';