Removed the 'master user' feature ... if we still need this we'll find another way
[citadel.git] / citadel / user_ops.c
index 9b4ee0d4f42666270662c6535783fc074f71455b..397907524e91c04d91a5f8dd4930be81cc4307d7 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.
@@ -475,15 +475,13 @@ int getuserbyuid(struct ctdluser *usbuf, uid_t number)
 
 /*
  * Back end for cmd_user() and its ilk
- *
- * NOTE: "authname" should only be used if we are attempting to use the "master user" feature
  */
-int CtdlLoginExistingUser(char *authname, const char *trythisname)
+int CtdlLoginExistingUser(const char *trythisname)
 {
        char username[SIZ];
        int found_user;
 
-       syslog(LOG_DEBUG, "user_ops: CtdlLoginExistingUser(%s, %s)", authname, trythisname);
+       syslog(LOG_DEBUG, "user_ops: CtdlLoginExistingUser(%s)", trythisname);
 
        if ((CC->logged_in)) {
                return login_already_logged_in;
@@ -497,16 +495,6 @@ int CtdlLoginExistingUser(char *authname, const char *trythisname)
                return login_not_found;
        }
 
-       /* If a "master user" is defined, handle its authentication if specified */
-       CC->is_master = 0;
-       if (    (!IsEmptyStr(CtdlGetConfigStr("c_master_user"))) && 
-               (!IsEmptyStr(CtdlGetConfigStr("c_master_pass"))) &&
-               (authname != NULL) &&
-               (!strcasecmp(authname, CtdlGetConfigStr("c_master_user"))) )
-       {
-               CC->is_master = 1;
-       }
-
        /* Continue attempting user validation... */
        safestrncpy(username, trythisname, sizeof (username));
        striplt(username);
@@ -541,9 +529,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);
@@ -634,9 +620,7 @@ void do_login(void)
                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 (CC->user.uid == 0) {
                        CC->user.axlevel = AxAideU;
@@ -644,9 +628,7 @@ void do_login(void)
        }
        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];
@@ -658,13 +640,10 @@ void do_login(void)
        }
 #endif
 
-       /*
-        * No email address for user?  Make one up.     (commented out because it appears to break things)
+       /* If the user does not have any email addresses assigned, generate one. */
        if (IsEmptyStr(CC->user.emailaddrs)) {
-               sprintf(CC->user.emailaddrs, "cit%ld@%s", CC->user.usernum, CtdlGetConfigStr("c_fqdn"));
+               AutoGenerateEmailAddressForUser(&CC->user);
        }
-        */
-       
 
        /*
         * Populate cs_inet_email and cs_inet_other_emails with valid email addresses from the user record
@@ -726,7 +705,7 @@ void CtdlUserLogout(void)
        strcpy(CCC->fake_roomname, "");
        CCC->logged_in = 0;
 
-       /* Check to see if the user was deleted whilst logged in and purge them if necessary */
+       /* Check to see if the user was deleted while logged in and purge them if necessary */
        if ((CCC->user.axlevel == AxDeleted) && (CCC->user.usernum)) {
                purge_user(CCC->user.fullname);
        }
@@ -734,7 +713,6 @@ void CtdlUserLogout(void)
        /* Clear out the user record in memory so we don't behave like a ghost */
        memset(&CCC->user, 0, sizeof(struct ctdluser));
        CCC->curr_user[0] = 0;
-       CCC->is_master = 0;
        CCC->cs_inet_email[0] = 0;
        CCC->cs_inet_other_emails[0] = 0;
        CCC->cs_inet_fn[0] = 0;
@@ -855,10 +833,6 @@ int CtdlTryPassword(const char *password, long len)
                return pass_wrong_password;
        }
 
-       if (CCC->is_master) {
-               code = strcmp(password, CtdlGetConfigStr("c_master_pass"));
-       }
-
        else if (CtdlGetConfigInt("c_auth_mode") == AUTHMODE_HOST) {
 
                /* host auth mode */
@@ -947,8 +921,9 @@ int purge_user(char pname[])
        makeuserkey(usernamekey, pname, cutuserkey(pname));
 
        /* If the name is empty we can't find them in the DB any way so just return */
-       if (IsEmptyStr(pname))
+       if (IsEmptyStr(pname)) {
                return(ERROR + NO_SUCH_USER);
+       }
 
        if (CtdlGetUser(&usbuf, pname) != 0) {
                syslog(LOG_ERR, "user_ops: cannot purge user <%s> - not found", pname);