Address generator is moved into internet_addressing.c because that's where it belongs...
[citadel.git] / citadel / user_ops.c
index 32af98e9105ec3cc5a1c230aac8631fd70f73891..607f16b3aed96cf3388b5731a306bd6048af23b1 100644 (file)
@@ -1,7 +1,7 @@
 /* 
  * Server functions which perform operations on user objects.
  *
- * Copyright (c) 1987-2017 by the citadel.org team
+ * Copyright (c) 1987-2018 by the citadel.org team
  *
  * This program is open source software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License, version 3.
@@ -541,9 +541,7 @@ int CtdlLoginExistingUser(char *authname, const char *trythisname)
                        return login_not_found;
                }
        
-               /* Locate the associated Citadel account.
-                * If not found, make one attempt to create it.
-                */
+               /* Locate the associated Citadel account.  If not found, make one attempt to create it. */
                found_user = getuserbyuid(&CC->user, pd.pw_uid);
                if (found_user != 0) {
                        create_user(username, CREATE_USER_DO_NOT_BECOME_USER, pd.pw_uid);
@@ -619,66 +617,57 @@ int CtdlLoginExistingUser(char *authname, const char *trythisname)
  */
 void do_login(void)
 {
-       struct CitContext *CCC = CC;
-
-       CCC->logged_in = 1;
-       syslog(LOG_NOTICE, "user_ops: <%s> logged in", CCC->curr_user);
+       CC->logged_in = 1;
+       syslog(LOG_NOTICE, "user_ops: <%s> logged in", CC->curr_user);
 
-       CtdlGetUserLock(&CCC->user, CCC->curr_user);
-       ++(CCC->user.timescalled);
-       CCC->previous_login = CCC->user.lastcall;
-       time(&CCC->user.lastcall);
+       CtdlGetUserLock(&CC->user, CC->curr_user);
+       ++(CC->user.timescalled);
+       CC->previous_login = CC->user.lastcall;
+       time(&CC->user.lastcall);
 
        /* If this user's name is the name of the system administrator
         * (as specified in setup), automatically assign access level 6.
         */
-       if (!strcasecmp(CCC->user.fullname, CtdlGetConfigStr("c_sysadm"))) {
-               CCC->user.axlevel = AxAideU;
+       if ( (!IsEmptyStr(CtdlGetConfigStr("c_sysadm"))) && (!strcasecmp(CC->user.fullname, CtdlGetConfigStr("c_sysadm"))) ) {
+               CC->user.axlevel = AxAideU;
        }
 
-       /* If we're authenticating off the host system, automatically give
-        * root the highest level of access.
-        */
+       /* If we're authenticating off the host system, automatically give root the highest level of access. */
        if (CtdlGetConfigInt("c_auth_mode") == AUTHMODE_HOST) {
-               if (CCC->user.uid == 0) {
-                       CCC->user.axlevel = AxAideU;
+               if (CC->user.uid == 0) {
+                       CC->user.axlevel = AxAideU;
                }
        }
-       CtdlPutUserLock(&CCC->user);
+       CtdlPutUserLock(&CC->user);
 
-       /*
-        * If we are using LDAP authentication, extract the user's email addresses from the directory.
-        */
+       /* If we are using LDAP authentication, extract the user's email addresses from the directory. */
 #ifdef HAVE_LDAP
        if ((CtdlGetConfigInt("c_auth_mode") == AUTHMODE_LDAP) || (CtdlGetConfigInt("c_auth_mode") == AUTHMODE_LDAP_AD)) {
                char new_emailaddrs[512];
                if (CtdlGetConfigInt("c_ldap_sync_email_addrs") > 0) {
-                       if (extract_email_addresses_from_ldap(CCC->ldap_dn, new_emailaddrs) == 0) {
-                               CtdlSetEmailAddressesForUser(CCC->user.fullname, new_emailaddrs);
+                       if (extract_email_addresses_from_ldap(CC->ldap_dn, new_emailaddrs) == 0) {
+                               CtdlSetEmailAddressesForUser(CC->user.fullname, new_emailaddrs);
                        }
                }
        }
 #endif
 
-       /*
-        * No email address for user?  Make one up.     (commented out because it appears to break things)
-       if (IsEmptyStr(CCC->user.emailaddrs)) {
-               sprintf(CCC->user.emailaddrs, "cit%ld@%s", CCC->user.usernum, CtdlGetConfigStr("c_fqdn"));
+       /* If the user does not have any email addresses assigned, generate one. */
+       if (IsEmptyStr(CC->user.emailaddrs)) {
+               AutoGenerateEmailAddressForUser(&CC->user);
        }
-        */
-       
 
        /*
         * Populate cs_inet_email and cs_inet_other_emails with valid email addresses from the user record
         */
-       strcpy(CCC->cs_inet_email, CCC->user.emailaddrs);
-       char *firstsep = strstr(CCC->cs_inet_email, "|");
+       strcpy(CC->cs_inet_email, CC->user.emailaddrs);
+       char *firstsep = strstr(CC->cs_inet_email, "|");
        if (firstsep) {
-               strcpy(CCC->cs_inet_other_emails, firstsep+1);
+               strcpy(CC->cs_inet_other_emails, firstsep+1);
                *firstsep = 0;
        }
        else {
-               CCC->cs_inet_other_emails[0] = 0;
+               CC->cs_inet_other_emails[0] = 0;
        }
 
        /* Create any personal rooms required by the system.