예제 #1
0
        public static int           createTmUser(this TM_UserData userData, NewUser newUser)
        {
            if (newUser.isNull())
            {
                return(0);
            }

            // ensure the email is lowercase (will fail validation otherwise)
            newUser.Email = newUser.Email.lower();

            //validate user against the DataContract specificed in the NewUser class
            if (newUser.validation_Failed())
            {
                return(0);
            }

            // if there is a groupId provided we must check if the user has the manageUsers Priviledge
            if (newUser.GroupId != 0)
            {
                UserRole.ManageUsers.demand();
            }

            // Check if there is already a user with the provided username or email
            if (newUser.Username.tmUser().notNull() || newUser.Email.tmUser_FromEmail().notNull())
            {
                userData.logTBotActivity("User Creation Fail", "Username ('{0}') or Email ('{1})already existed".format(newUser.Username, newUser.Email));
                return(0);
            }

            // Create user

            return(userData.newUser(newUser.Username, newUser.Password, newUser.Email, newUser.Firstname, newUser.Lastname, newUser.Note, newUser.Title, newUser.Company, newUser.Country, newUser.State, newUser.UserTags, newUser.GroupId));
        }
예제 #2
0
 public static Login_Result loginResponse(this TM_UserData userData, string username, string password)
 {
     try
     {
         //Empty fileds check
         if (username.valid() && password.valid())
         {
             var tmUser   = userData.tmUser(username);
             var tmConfig = TMConfig.Current;
             //Checking if username does exist in the database.
             if (tmUser.notNull())
             {
                 //Checking if account is expired
                 if (tmUser.account_Expired())
                 {
                     tmUser.logUserActivity("Account Expired", "Expiry date: {0}".format(tmUser.AccountStatus.ExpirationDate));
                     return(AccountExpiredResponse(tmConfig));
                 }
                 //Password verification
                 var pwdOk = tmUser.SecretData.PasswordHash == tmUser.createPasswordHash(password);
                 if (pwdOk)
                 {
                     //Checking if account is enabled
                     if (tmUser.account_Enabled())
                     {
                         //Login successfull. Returning the authentication token.
                         var token    = tmUser.login("Password");
                         var response = new Login_Result
                         {
                             Token        = token,
                             Login_Status = Login_Result.LoginStatus.Login_Ok
                         };
                         return(response);
                     }
                     //Account disabled.
                     tmUser.logUserActivity("Login Fail", "pwd ok, but account disabled");
                     return(AccountDisabledResponse(tmConfig));
                 }
                 //Login fail. Wrong Password
                 tmUser.logUserActivity("Login Fail", "bad pwd");
                 return(BadPasswordResponse(tmConfig));
             }
             userData.logTBotActivity("Login Fail", "bad username: {0}".format(username));
             return(BadUsernameResponse(tmConfig));
         }
     }
     catch (Exception ex)
     {
         ex.log("[TM_Xml_Database] login");
     }
     return(new Login_Result());
 }
        public static bool secretData_Save(this TM_UserData userData)
        {
            var result = true;

            if (userData.UsingFileStorage)
            {
                var secretDataFile = userData.secretData_FileLocation();
                result = userData.SecretData.saveAs(secretDataFile);
                userData.triggerGitCommit();
            }
            userData.logTBotActivity("TM_SecretData saved", "");
            return(result);
        }
예제 #4
0
        /*  public static bool setUserDataPath(this TM_UserData userData, string userDataPath)
         * {
         *    if (userDataPath.isNull() || userDataPath.dirExists().isFalse())
         *    {
         *        "[TM_UserData] [setUserDataPath] provided userDataPath didn't exist: {0}".error("userDataPath");
         *        return false;
         *    }
         *    try
         *    {
         *        userData.Path_UserData = userDataPath;
         *        userData.resetData();
         *        userData.setUp();
         *        userData.loadTmUserData();
         *        return true;
         *    }
         *    catch (Exception ex)
         *    {
         *        ex.log("[TM_UserData] [setUserDataPath]");
         *        return false;
         *    }
         * }*/


        public static bool          deleteTmUser(this TM_UserData userData, TMUser tmUser)
        {
            if (tmUser.notNull())
            {
                lock (userData.TMUsers)
                {
                    userData.TMUsers.remove(tmUser);

                    userData.Events.User_Deleted.raise(tmUser);

                    userData.logTBotActivity("User Delete", "{0} - {1}".format(tmUser.UserName, tmUser.UserID));
                    return(true);
                }
            }
            return(false);
        }
        /*public static Guid              login_Using_LoginToken (this TM_UserData userData, string username, Guid loginToken)
         * {
         *  try
         *  {
         *      if (username.valid() && loginToken != Guid.Empty)
         *      {
         *          var tmUser = userData.tmUser(username);
         *          if (tmUser.notNull())
         *          {
         *              if (tmUser.SecretData.SingleUseLoginToken == loginToken)
         *              {
         *                  tmUser.SecretData.SingleUseLoginToken = Guid.Empty;
         *                  tmUser.logUserActivity("SingleUseLoginToken used", loginToken.str());
         *                  return tmUser.login();
         *              }
         *          }
         *      }
         *  }
         *  catch (Exception ex)
         *  {
         *      ex.log("[TM_Xml_Database] login_Using_LoginToken");
         *  }
         *  return Guid.Empty;
         * }*/
        public static Guid              login(this TM_UserData userData, string username, string password)
        {
            try
            {
                if (username.valid() && password.valid())
                {
                    var tmUser = userData.tmUser(username);

                    if (tmUser.notNull())
                    {
                        // tmUser.SecretData.SessionID = Guid.Empty;          // reset the user SessionID
                        if (tmUser.account_Expired())
                        {
                            tmUser.logUserActivity("Account Expired", "Expiry date: {0}".format(tmUser.AccountStatus.ExpirationDate));
                            return(Guid.Empty);
                        }
                        var pwdOk = tmUser.SecretData.PasswordHash == tmUser.createPasswordHash(password);
                        if (pwdOk)
                        {
                            if (tmUser.account_Enabled())
                            {
                                return(tmUser.login("Password"));                    // call login with a new SessionID
                            }
                            tmUser.logUserActivity("Login Fail", "pwd ok, but account disabled");
                        }
                        else
                        {
                            tmUser.Stats.LoginFail++;
                            tmUser.logUserActivity("Login Fail", "bad pwd");
                        }
                    }
                    else
                    {
                        userData.logTBotActivity("Login Fail", "bad username: {0}".format(username));
                    }
                }
            }
            catch (Exception ex)
            {
                ex.log("[TM_Xml_Database] login");
            }
            return(Guid.Empty);
        }
예제 #6
0
 public static bool          deleteTmUser(this TM_UserData userData, TMUser tmUser)
 {
     if (tmUser.notNull())
     {
         lock (userData.TMUsers)
         {
             userData.TMUsers.remove(tmUser);
             if (userData.UsingFileStorage)
             {
                 lock (tmUser)
                 {
                     tmUser.getTmUserXmlFile().file_Delete();
                     userData.triggerGitCommit();
                 }
             }
             userData.logTBotActivity("User Delete", "{0} - {1}".format(tmUser.UserName, tmUser.UserID));
             return(true);
         }
     }
     return(false);
 }