public static Guid login(this TM_UserData userData,TMUser tmUser, Guid sessionId)
        {
            try
            {
                if (tmUser.notNull())
                {
                    if (sessionId != Guid.Empty)
                    {
                        tmUser.Stats.LastLogin = DateTime.Now;
                        tmUser.Stats.LoginOk++;
                        tmUser.logUserActivity("User Login", tmUser.UserName);
                        userData.ActiveSessions.add(sessionId, tmUser);

                        SendEmails.SendEmailToTM("User Login: {0}".format(tmUser.UserName), tmUser.toXml());
                        return sessionId;
                    }
                    tmUser.Stats.LoginFail++;
                }
            }
            catch (Exception ex)
            {
                ex.log("[TM_UserData][login]");
            }
            return Guid.Empty;
        }
Beispiel #2
0
 public UserActivity LogUserActivity(TMUser tmUser , UserActivity userActivity)
 {
     if (tmUser.notNull() && tmUser.ID != Guid.Empty)
     {
         tmUser.UserActivities.Add(userActivity);
         tmUser.saveTmUser();
     }
     ActivitiesLog.Add(userActivity);
     return userActivity;
 }
Beispiel #3
0
        public static bool tmUser_Delete(this TM_FileStorage tmFileStorage, TMUser tmUser)
        {
            if (tmUser.notNull())
            {
                lock (tmUser)
                {
                    var userXmlFile = tmFileStorage.user_XmlFile_Location(tmUser);
                    if (userXmlFile.file_Delete())
                        return userXmlFile.fileExists();
                    //userData.triggerGitCommit();
                }
            }

            return false;
        }
        /*  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 bool deleteTmUser(this TM_UserData userData, TMUser tmUser)
 {
     if (tmUser.notNull())
     {
         userData.TMUsers.remove(tmUser);
         if (userData.UsingFileStorage)
         {
             lock (tmUser)
             {
                 tmUser.getTmUserXmlFile().file_Delete();
                 userData.triggerGitCommit();
             }
         }
         return true;
     }
     return false;
 }
        /*public static UserActivity logUserActivity  (this UserActivities userActivities, string who, string action, string detail)
        {
            var userActivity = userActivities.newUserActivity(who,action,detail);
            return userActivities.logUserActivity(userActivity, null);
        } */
        public static UserActivity logUserActivity(this UserActivities userActivities, UserActivity userActivity, TMUser tmUser)
        {
            if (userActivities.notNull() && userActivity.notNull())
            {
                if(userActivities.logging_Enabled())
                    {
                    userActivities.ActivitiesLog.add_Activity(userActivity);

                    userActivity.firebase_Log();
                    if (tmUser.notNull() && tmUser.ID != Guid.Empty)
                    {
                        tmUser.UserActivities.add_Activity(userActivity);

                        tmUser.event_User_Updated(); //tmUser.saveTmUser();
                    }
                }
            }
            return userActivity;
        }
Beispiel #7
0
 public static ChangePassword_Result setUserPasswordResponse(this TM_UserData userData, TMUser tmUser, string currentPassword, string newPassword)
 {
     //var tmUser = tmAuthentication.currentUser;
     if (tmUser.notNull())
     {
         if (tmUser.SecretData.PasswordHash == tmUser.createPasswordHash(currentPassword)) // check if current password matches provided value
         {
             var newPasswordHash = tmUser.createPasswordHash(newPassword);
             if (newPasswordHash != tmUser.SecretData.PasswordHash) // check that password are not repeated
             {
                 tmUser.logUserActivity("User Password Change", "With previous password provided");
                 if (newPassword.Length < 8 || newPassword.Length > 256)
                 {
                     return(ValidatePasswordLength());
                 }
                 //Password Complexity chechek
                 if (!Regex.IsMatch(newPassword, ValidationRegex.PasswordComplexity))
                 {
                     tmUser.logUserActivity("User Password Change", "Your password should be at least 8 characters long. It should have one uppercase and one lowercase letter, a number and a special character.");
                     return(ValidatePasswordComplexity());
                 }
                 var result = tmUser.setPasswordHash(newPasswordHash);
                 if (result)
                 {
                     return new ChangePassword_Result {
                                PasswordChanged = true, Message = ""
                     }
                 }
                 ;
                 return(new ChangePassword_Result {
                     PasswordChanged = false, Message = TMConsts.DEFAULT_PASSWORD_CHANGE_ERROR_MESSAGE
                 });
             }
             tmUser.logUserActivity("User Password Change", "Current Password and New Password are equals");
             return(CurrentPasswordAndNewPasswordAreEqualsResponse());
         }
         tmUser.logUserActivity("User Password Change", "Current Password does not match provided value");
         return(CurrentPasswordDoNotMatchResponse());
     }
     return(new ChangePassword_Result());
 }
Beispiel #8
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);
 }
Beispiel #9
0
 public static Guid              login(this TM_UserData userData, TMUser tmUser)
 {
     try
     {
         if (tmUser.notNull())                                                   // there is a valid user
         {
             var userSession = tmUser.add_NewSession();                          // create new session
             if (userSession.notNull())
             {
                 tmUser.logUserActivity("User Login", tmUser.UserName);          // will save the user
                 //SendEmails.SendEmailAboutUserToTM("Logged In", tmUser);
                 return(userSession.SessionID);
             }
         }
     }
     catch (Exception ex)
     {
         ex.log("[TM_UserData][login]");
     }
     return(Guid.Empty);
 }
Beispiel #10
0
 public static Guid              login(this TM_UserData userData, TMUser tmUser, Guid sessionId)
 {
     try
     {
         if (tmUser.notNull())               // there is a valid user
         {
             if (sessionId != Guid.Empty)    // there was a valid session set
             {
                 tmUser.Stats.LastLogin = DateTime.Now;
                 tmUser.Stats.LoginOk++;
                 tmUser.SecretData.SessionID = sessionId;
                 tmUser.logUserActivity("User Login", tmUser.UserName);          // will save the user
                 SendEmails.SendEmailAboutUserToTM("Logged In", tmUser);
                 return(sessionId);
             }
         }
     }
     catch (Exception ex)
     {
         ex.log("[TM_UserData][login]");
     }
     return(Guid.Empty);
 }
Beispiel #11
0
 public static UserActivity logUserActivity(this TMUser tmUser, string action, string detail)
 {
     try
     {
         var userActivites = UserActivities.Current;
         if (userActivites.notNull())
         {
             var userActivity = new UserActivity
             {
                 Action    = action,
                 Detail    = detail,
                 Who       = tmUser.notNull() ? tmUser.UserName :"******",
                 When      = DateTime.Now.ToFileTimeUtc(),
                 IPAddress = HttpContextFactory.Context.ipAddress()
             };
             return(userActivites.LogUserActivity(tmUser, userActivity));
         }
     }
     catch (Exception ex)
     {
         ex.log("[logUserActivity]");
     }
     return(null);
 }
Beispiel #12
0
        public void User_ExtMet_FullName()
        {
            var firstName           = "firstName".add_RandomLetters(5);
             var lastName            = "lastName".add_RandomLetters(5);
             var tmUser_NoValues     = new TMUser();
             var tmUser_JustFirst    = new TMUser() {FirstName = firstName};
             var tmUser_JustLast     = new TMUser() {LastName  = lastName};
             var tmUser_Both         = new TMUser() {FirstName = firstName, LastName  = lastName};

             //Check that values are correctly set
             Assert.IsTrue(tmUser_NoValues.notNull()  && tmUser_NoValues.FirstName.empty()   && tmUser_NoValues.LastName.empty(), "tmUser_NoValues setup");
             Assert.IsTrue(tmUser_JustFirst.notNull() && tmUser_JustFirst.FirstName.valid()  && tmUser_JustFirst.LastName.empty(), "tmUser_JustFirst setup");
             Assert.IsTrue(tmUser_JustLast.notNull()  && tmUser_JustLast.FirstName.empty()   && tmUser_JustLast.LastName.valid(), "tmUser_JustLast setup");
             Assert.IsTrue(tmUser_Both.notNull()      && tmUser_Both.FirstName.valid()       && tmUser_Both.LastName.valid(), "tmUser_Both setup");

             //Check that userName extension method is working ok
             var fullName_NoValues   = tmUser_NoValues.fullName();
             var fullName_JustFirst  = tmUser_JustFirst.fullName();
             var fullName_JustLast   = tmUser_JustLast.fullName();
             var fullName_Both       = tmUser_Both.fullName();

             Assert.AreEqual(fullName_NoValues , "");
             Assert.AreEqual(fullName_JustFirst, firstName);
             Assert.AreEqual(fullName_JustLast , "");
             Assert.AreEqual(fullName_Both     , "{0} {1}".format(firstName, lastName));

             //last check
             Assert.AreEqual("John Smith", new TMUser() { FirstName = "John", LastName = "Smith" }.fullName());
        }
 public static Guid login(this TM_UserData userData,TMUser tmUser, Guid sessionId)
 {
     try
     {
         if (tmUser.notNull())               // there is a valid user
         {
             if (sessionId != Guid.Empty)    // there was a valid session set
             {
                 tmUser.Stats.LastLogin = DateTime.Now;
                 tmUser.Stats.LoginOk++;
                 tmUser.SecretData.SessionID = sessionId;
                 tmUser.logUserActivity("User Login", tmUser.UserName);          // will save the user
                 SendEmails.SendEmailAboutUserToTM("Logged In", tmUser);
                 return sessionId;
             }
         }
     }
     catch (Exception ex)
     {
         ex.log("[TM_UserData][login]");
     }
     return Guid.Empty;
 }
 public static bool logout(this TM_UserData userData, TMUser tmUser, Guid sessionId)
 {
     try
     {
         if (tmUser.notNull() && sessionId.validSession())
         {
             tmUser.logUserActivity("User Logout", tmUser.UserName);
             tmUser.remove_Session(sessionId);
             return true;
         }
     }
     catch (Exception ex)
     {
         ex.log("[TM_UserData] invalidateSession");
     }
     return false;
 }
        public static bool logout(this TM_UserData userData, TMUser tmUser, Guid sessionId)
        {
            try
            {
                if (tmUser.notNull() && sessionId.validSession())
                {
                    tmUser.logUserActivity("User Logout", tmUser.UserName);
                    userData.ActiveSessions.Remove(sessionId);

                    SendEmails.SendEmailToTM("User Logout: {0}".format(tmUser.UserName), tmUser.toXml());
                    return true;
                }
            }
            catch (Exception ex)
            {
                ex.log("[TM_UserData] invalidateSession");
            }
            return false;
        }
 public static bool      account_Enabled(this TMUser tmUser)
 {
     return(tmUser.notNull() && tmUser.AccountStatus.UserEnabled);
 }
Beispiel #17
0
 public static List <UserTag> userTags(this TMUser tmUser)
 {
     return(tmUser.notNull() && tmUser.UserTags.notNull()
                 ? tmUser.UserTags
                 : new List <UserTag>());
 }
 public static Guid login(this TM_UserData userData,TMUser tmUser, string loginMethod = "Direct")
 {
     try
     {
         if (tmUser.notNull())                                                   // there is a valid user
         {
             var userSession = tmUser.add_NewSession(loginMethod);                          // create new session
             if (userSession.notNull())
             {
                 tmUser.logUserActivity("User Login", tmUser.UserName);          // will save the user
                 //SendEmails.SendEmailAboutUserToTM("Logged In", tmUser);
                 return userSession.SessionID;
             }
         }
     }
     catch (Exception ex)
     {
         ex.log("[TM_UserData] [login]");
     }
     return Guid.Empty;
 }
Beispiel #19
0
 public static ChangePassword_Result setUserPasswordResponse(this TM_UserData userData, TMUser tmUser, string currentPassword, string newPassword)
 {
     //var tmUser = tmAuthentication.currentUser;
     if (tmUser.notNull())
     {
         if (tmUser.SecretData.PasswordHash == tmUser.createPasswordHash(currentPassword)) // check if current password matches provided value
         {
             var newPasswordHash = tmUser.createPasswordHash(newPassword);
             if (newPasswordHash != tmUser.SecretData.PasswordHash) // check that password are not repeated
             {
                 tmUser.logUserActivity("User Password Change", "With previous password provided");
                 if (newPassword.Length < 8 || newPassword.Length > 256)
                 {
                     return ValidatePasswordLength();
                 }
                 //Password Complexity chechek
                 if (!Regex.IsMatch(newPassword, ValidationRegex.PasswordComplexity))
                 {
                     tmUser.logUserActivity("User Password Change", "Your password should be at least 8 characters long. It should have one uppercase and one lowercase letter, a number and a special character.");
                     return ValidatePasswordComplexity();
                 }
                 var result = tmUser.setPasswordHash(newPasswordHash);
                 if (result)
                     return new ChangePassword_Result {PasswordChanged = true, Message = ""};
                 return new ChangePassword_Result { PasswordChanged = false, Message = TMConsts.DEFAULT_PASSWORD_CHANGE_ERROR_MESSAGE };
             }
             tmUser.logUserActivity("User Password Change", "Current Password and New Password are equals");
             return CurrentPasswordAndNewPasswordAreEqualsResponse();
         }
         tmUser.logUserActivity("User Password Change", "Current Password does not match provided value");
         return CurrentPasswordDoNotMatchResponse();
     }
     return new ChangePassword_Result();
 }
 public static bool logout(this TM_UserData userData, TMUser tmUser, Guid sessionId)
 {
     try
     {
         if (tmUser.notNull() && sessionId.validSession())
         {
             tmUser.logUserActivity("User Logout", tmUser.UserName);
             tmUser.remove_Session(sessionId);
             //tmUser.SecretData.SessionID = Guid.Empty;
             //userData.ActiveSessions.Remove(sessionId);
             //SendEmails.SendEmailAboutUserToTM("Logged Out", tmUser);
             return true;
         }
     }
     catch (Exception ex)
     {
         ex.log("[TM_UserData] invalidateSession");
     }
     return false;
 }
Beispiel #21
0
 public static bool setUserPassword(this TM_UserData userData, TMUser tmUser, string currentPassword, string newPassword)
 {
     //var tmUser = tmAuthentication.currentUser;
     if (tmUser.notNull())
     {
         if (tmUser.SecretData.PasswordHash == tmUser.createPasswordHash(currentPassword)) // check if current password matches provided value
         {
             var newPasswordHash =  tmUser.createPasswordHash(newPassword);
             if (newPasswordHash != tmUser.SecretData.PasswordHash)                        // check that password are not repeated
             {
                 tmUser.logUserActivity("User Password Change", "With previous password provided");
                 return tmUser.setPasswordHash(newPasswordHash);
             }
         }
     }
     return false;
 }