X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=citadel%2Fuser_ops.c;h=099ca517ff90ada84ae5cd39de5d06d7acb0191d;hb=572e013dfa09ec04b047eb256b3139bca41037a4;hp=b574fbd02fde850c39447eb2a9c5211f814d7faf;hpb=4d3661d0c8da86d441d5d26463844df216fe4860;p=citadel.git diff --git a/citadel/user_ops.c b/citadel/user_ops.c index b574fbd02..099ca517f 100644 --- a/citadel/user_ops.c +++ b/citadel/user_ops.c @@ -544,8 +544,29 @@ int CtdlLoginExistingUser(char *authname, char *trythisname) #ifdef HAVE_LDAP else if (config.c_auth_mode == AUTHMODE_LDAP) { + + /* LDAP auth mode */ + + int ldap_uid; + char ldap_cn[256]; + char ldap_dn[256]; + + found_user = CtdlTryUserLDAP(username, ldap_dn, sizeof ldap_dn, ldap_cn, sizeof ldap_cn, &ldap_uid); + if (found_user != 0) { + return login_not_found; + } + + found_user = getuserbyuid(&CC->user, ldap_uid); + if (found_user != 0) { + create_user(ldap_cn, 0); + found_user = getuserbyuid(&CC->user, ldap_uid); + } + + if (found_user == 0) { + if (CC->ldap_dn != NULL) free(CC->ldap_dn); + CC->ldap_dn = strdup(ldap_dn); + } - /* LDAP auth mode FIXME_LDAP */ } #endif @@ -871,7 +892,14 @@ int CtdlTryPassword(char *password) #ifdef HAVE_LDAP else if (config.c_auth_mode == AUTHMODE_LDAP) { - /* LDAP auth mode FIXME_LDAP */ + /* LDAP auth mode */ + + if ((CC->ldap_dn) && (!CtdlTryPasswordLDAP(CC->ldap_dn, password))) { + code = 0; + } + else { + code = (-1); + } } #endif