コード例 #1
0
        internal bool ValidateUser(UserModel userModel)
        {
            string        password = userModel.Password + userModel.UserName;
            HashAlgorithm mhash    = new SHA1CryptoServiceProvider();

            byte[] bytValue = System.Text.Encoding.UTF8.GetBytes(password);
            byte[] bytHash  = mhash.ComputeHash(bytValue);
            mhash.Clear();
            userModel.Password = Convert.ToBase64String(bytHash);

            bool validUser = false;

            List <DataParameter> parameters = new List <DataParameter>();

            parameters.Add(new DataParameter("UserName", userModel.UserName, "AND"));
            parameters.Add(new DataParameter("Password", userModel.Password, ""));

            DataSet data = DataAccess.GetSingleByMultipleParameter(new UserModel().DataProvider, "users", parameters);

            if (data.Tables["users"].Rows.Count != 0)
            {
                UserModel loadedUser = FillUser(data.Tables["users"].Rows[0]);

                validUser = true;

                ForumUserController controller = new ForumUserController();

                ForumUserModel forumUserModel = controller.GetForumUserByName(loadedUser.UserName);

                SetStateUser(loadedUser, forumUserModel);
            }

            return(validUser);
        }
コード例 #2
0
        public void SetStateUser(UserModel loadedUser, ForumUserModel forumUserModel)
        {
            State state = new State();

            //null out password, because we don't want that to go through the session state
            loadedUser.Password = "";

            state.Cache().SetUser(loadedUser, forumUserModel);
        }
コード例 #3
0
        public async Task UpdateForumUser(ForumUserModel forumUser)
        {
            forumUser.UpdateTimestamps(false);

            using (var ct = GetConnection(DatabaseType.Forum, false))
            {
                await ct.DbConnection.ExecuteAsync(ReadQuery("UpdateForumUser", ct.ProviderName), param : forumUser, transaction : ct.DbTransaction);
            }
        }
コード例 #4
0
        public async Task InsertForumUser(ForumUserModel forumUser, bool importFlag = false)
        {
            forumUser.UpdateGuid();
            forumUser.UpdateTimestamps(true, importFlag);

            using (var ct = GetConnection(DatabaseType.Forum, false))
            {
                await ct.DbConnection.ExecuteAsync(ReadQuery("InsertForumUser", ct.ProviderName), param : forumUser, transaction : ct.DbTransaction);
            }
        }
コード例 #5
0
        private ForumUserModel FillForumUser(DataRow row)
        {
            ForumUserModel model = new ForumUserModel();

            model.Id       = (int)row["UserId"];
            model.UserName = (string)row["UserName"];
            model.Password = (string)row["Password"];
            model.Email    = (string)row["Email"];

            return(model);
        }
コード例 #6
0
        public bool CreateForumUser(ForumUserModel forumUser)
        {
            Dictionary <string, DataAccessType> forumUsersDictionary = new Dictionary <string, DataAccessType>();

            forumUsersDictionary.Add("UserId", new DataAccessType(forumUser.Id.ToString(), typeof(int)));
            forumUsersDictionary.Add("UserName", new DataAccessType(forumUser.UserName, typeof(string)));
            forumUsersDictionary.Add("Password", new DataAccessType(forumUser.Password, typeof(string)));
            forumUsersDictionary.Add("Email", new DataAccessType(forumUser.Email, typeof(string)));

            DataAccess.Save(new ForumUserModel().DataProvider, new ForumUserModel().KeyField, "ForumUsers", forumUsersDictionary);

            return(true);
        }
コード例 #7
0
ファイル: Cache.cs プロジェクト: jsauter/CustomerFeed
        public void SetUser(UserModel user, ForumUserModel forumUserModel)
        {
            if (Session["User"] == null)
            {
                Session["User"] = user;
            }

            if (forumUserModel != null)
            {
                Session["aspnetforumUserID"]   = forumUserModel.Id;
                Session["aspnetforumUserName"] = forumUserModel.UserName;
            }
        }
コード例 #8
0
        public async Task <IActionResult> InsertForumUser([FromBody] ForumUserModel forumUser)
        {
            var result = await _forumService.UpsertForumUser(forumUser, Guid.Parse(HttpContext.User.Identity.Name), HttpContext.User.IsInRole("ForumAdmin"));

            if (result.Successful)
            {
                return(this.Ok(forumUser));
            }
            else
            {
                return(this.StatusCode(400, result));
            }
        }
コード例 #9
0
        protected void SubmitButtonClick(object sender, EventArgs e)
        {
            recaptcha.Validate();

            if (Page.IsValid)
            {
                UserModel      user      = new UserModel();
                ForumUserModel forumUser = new ForumUserModel();

                user.CreateOrReset = true;

                user.UserName = UserNameTextBox.Text;
                user.Email    = EmailTextBox.Text;
                user.Password = PasswordReenterTextBox.Text;

                //default, we make users not administrators but they are customers.
                user.Administrator = false;
                user.IsCustomer    = true;

                forumUser.UserName = UserNameTextBox.Text;
                forumUser.Email    = EmailTextBox.Text;
                forumUser.Password = "";

                UserController controller = new UserController();

                if (!controller.IsExistingUser(user))
                {
                    controller.SaveUser(user);

                    ForumUserController forumUserController = new ForumUserController();
                    forumUserController.CreateForumUser(forumUser);

                    MailUserCreationToUser(user, PasswordReenterTextBox.Text);
                    MailUserCreationToSupportMessage(user);
                    SendToThankYou(user.UserName, user.Email);
                }
                else
                {
                    UserNameNotAvailableLabel.Visible = true;
                }
            }
        }
コード例 #10
0
        public bool IsExistingUser(UserModel user)
        {
            State state = new State();

            bool exitingUser = false;

            DataSet data = DataAccess.GetSingleByParameter(new UserModel().DataProvider, "users", new KeyValuePair <string, string>("UserName", user.UserName));

            if (data.Tables["users"].Rows.Count != 0)
            {
                UserModel loadedUser = FillUser(data.Tables["users"].Rows[0]);

                exitingUser = true;

                loadedUser.Password = "";

                ForumUserController forumUserController = new ForumUserController();
                ForumUserModel      forumUserModel      = forumUserController.GetForumUserByName(loadedUser.UserName);

                state.Cache().SetUser(loadedUser, forumUserModel);
            }

            return(exitingUser);
        }
コード例 #11
0
        public async Task <OpResult> UpsertForumUser(ForumUserModel forumUser, Guid forumUserGuid, bool isForumAdmin, bool importFlag = false)
        {
            var            retvalue          = new OpResult();
            ForumUserModel existingForumUser = null;

            if (forumUser == null)
            {
                retvalue.LogError(USER_ERROR_DATA_MUST_BE_PROVIDED);
                return(retvalue);
            }
            if (!importFlag && forumUser.Guid != Guid.Empty)
            {
                existingForumUser = await _forumDal.GetForumUserById(forumUser.Guid, null);

                if (existingForumUser == null)
                {
                    retvalue.LogError(USER_ERROR_INVALID_RECORD);
                }
                else
                {
                    forumUser.CreatedUTC    = existingForumUser.CreatedUTC;
                    forumUser.ModifiedUTC   = existingForumUser.ModifiedUTC;
                    forumUser.LastIPAddress = existingForumUser.LastIPAddress;
                    forumUser.LastLogon     = existingForumUser.LastLogon;
                    if (!isForumAdmin)
                    {
                        forumUser.AdminFlag = existingForumUser.AdminFlag;
                        forumUser.BanFlag   = existingForumUser.BanFlag;
                        forumUser.UserId    = existingForumUser.UserId;
                        if (forumUser.Guid != forumUserGuid)
                        {
                            retvalue.LogError(USER_ERROR_NOT_AUTHORIZED);
                        }
                    }
                }
            }
            if (string.IsNullOrWhiteSpace(forumUser.UserId))
            {
                retvalue.LogError(USER_ERROR_USER_ID_IS_REQUIRED);
            }
            if (string.IsNullOrWhiteSpace(forumUser.Email))
            {
                retvalue.LogError(USER_ERROR_EMAIL_IS_REQUIRED);
            }
            if (forumUser.Guid == Guid.Empty && string.IsNullOrWhiteSpace(forumUser.NewPassword.Value))
            {
                retvalue.LogError(USER_ERROR_PASSWORD_IS_REQUIRED_FOR_NEW_USERS);
            }
            if (string.IsNullOrEmpty(forumUser.Comment))
            {
                retvalue.LogError(USER_ERROR_COMMENT_IS_REQUIRED);
            }
            if (retvalue.Successful)
            {
                if (importFlag || forumUser.Guid == Guid.Empty)
                {
                    if (!importFlag)
                    {
                        forumUser.Password = Security.Encrypt(forumUser.NewPassword.Value);
                    }
                    await _forumDal.InsertForumUser(forumUser, importFlag);
                }
                else
                {
                    if (forumUser.NewPassword.Reset)
                    {
                        forumUser.Password = Security.Encrypt(string.Empty);
                    }
                    else if (!string.IsNullOrEmpty(forumUser.NewPassword.Value))
                    {
                        forumUser.Password = Security.Encrypt(forumUser.NewPassword.Value);
                    }
                    else
                    {
                        forumUser.Password = existingForumUser?.Password ?? string.Empty;
                    }
                    await _forumDal.UpdateForumUser(forumUser);
                }
            }
            return(retvalue);
        }
コード例 #12
0
        public ForumServiceTests()
        {
            //Setup
            forumData           = new ForumModel();
            forumThreadData     = new ForumThreadModel();
            forumThreadPostData = new ForumThreadPostModel();
            forumUserData       = new ForumUserModel();

            settingsData           = new SettingsData();
            mockedSettingsProvider = new Mock <ISettingsProvider>();
            mockedSettingsProvider.SetupGet <SettingsData>(sd => sd.Current).Returns(settingsData);

            mockedForumDal = new Mock <IForumDal>();
            mockedForumDal.Setup(fd => fd.InsertForum(forumData, false)).Returns(Task.Delay(0));
            mockedForumDal.Setup(fd => fd.UpdateForum(forumData)).Returns(Task.Delay(0));
            mockedForumDal.Setup(fd => fd.GetForumById(invalidGuid, null)).ReturnsAsync((ForumModel)null);
            mockedForumDal.Setup(fd => fd.GetForumById(validGuid, null)).ReturnsAsync(new ForumModel());
            mockedForumDal.Setup(ad => ad.GetForumById(visibleGuid, null)).ReturnsAsync(new ForumModel()
            {
                VisibleFlag = true
            });
            mockedForumDal.Setup(ad => ad.GetForumById(hiddenGuid, null)).ReturnsAsync(new ForumModel()
            {
                VisibleFlag = false
            });
            mockedForumDal.Setup(ad => ad.ListForums()).ReturnsAsync(new List <ForumModel> {
                new ForumModel()
                {
                    VisibleFlag = true
                },
                new ForumModel()
                {
                    VisibleFlag = false
                }
            });
            mockedForumDal.Setup(fd => fd.InsertForumThread(forumThreadData, false)).Returns(Task.Delay(0));
            mockedForumDal.Setup(fd => fd.UpdateForumThread(forumThreadData)).Returns(Task.Delay(0));
            mockedForumDal.Setup(fd => fd.GetForumThreadById(invalidGuid, null)).ReturnsAsync((ForumThreadModel)null);
            mockedForumDal.Setup(fd => fd.GetForumThreadById(validGuid, null)).ReturnsAsync(new ForumThreadModel()
            {
                ForumUserGuid = validGuid, VisibleFlag = true, LockFlag = false, CreatedUTC = DateTime.UtcNow.AddMinutes(-1)
            });
            mockedForumDal.Setup(fd => fd.GetForumThreadById(semiValidGuid1, null)).ReturnsAsync(new ForumThreadModel()
            {
                ForumUserGuid = validGuid, VisibleFlag = false, LockFlag = false, CreatedUTC = DateTime.UtcNow.AddMinutes((-1 * settingsData.TimeLimitForumPostEdit) - 1)
            });
            mockedForumDal.Setup(fd => fd.GetForumThreadById(semiValidGuid2, null)).ReturnsAsync(new ForumThreadModel()
            {
                ForumUserGuid = validGuid, VisibleFlag = true, LockFlag = true, CreatedUTC = DateTime.UtcNow.AddMinutes((-1 * settingsData.TimeLimitForumPostEdit) - 1)
            });
            mockedForumDal.Setup(ad => ad.GetForumThreadById(visibleGuid, null)).ReturnsAsync(new ForumThreadModel()
            {
                VisibleFlag = true
            });
            mockedForumDal.Setup(ad => ad.GetForumThreadById(hiddenGuid, null)).ReturnsAsync(new ForumThreadModel()
            {
                VisibleFlag = false
            });
            mockedForumDal.Setup(ad => ad.ListForumThreads(null, null)).ReturnsAsync(new List <ForumThreadModel> {
                new ForumThreadModel()
                {
                    VisibleFlag = true
                },
                new ForumThreadModel()
                {
                    VisibleFlag = false
                }
            });
            mockedForumDal.Setup(fd => fd.InsertForumThreadPost(forumThreadPostData, false)).Returns(Task.Delay(0));
            mockedForumDal.Setup(fd => fd.UpdateForumThreadPost(forumThreadPostData)).Returns(Task.Delay(0));
            mockedForumDal.Setup(fd => fd.GetForumThreadPostById(invalidGuid)).ReturnsAsync((ForumThreadPostModel)null);
            mockedForumDal.Setup(fd => fd.GetForumThreadPostById(validGuid)).ReturnsAsync(new ForumThreadPostModel()
            {
                ForumUserGuid = validGuid, VisibleFlag = true, LockFlag = false, CreatedUTC = DateTime.UtcNow.AddMinutes(-1)
            });
            mockedForumDal.Setup(fd => fd.GetForumThreadPostById(semiValidGuid1)).ReturnsAsync(new ForumThreadPostModel()
            {
                ForumUserGuid = validGuid, VisibleFlag = false, LockFlag = false, CreatedUTC = DateTime.UtcNow.AddMinutes((-1 * settingsData.TimeLimitForumPostEdit) - 1)
            });
            mockedForumDal.Setup(fd => fd.GetForumThreadPostById(semiValidGuid2)).ReturnsAsync(new ForumThreadPostModel()
            {
                ForumUserGuid = validGuid, VisibleFlag = true, LockFlag = true, CreatedUTC = DateTime.UtcNow.AddMinutes((-1 * settingsData.TimeLimitForumPostEdit) - 1)
            });
            mockedForumDal.Setup(ad => ad.GetForumThreadPostById(visibleGuid)).ReturnsAsync(new ForumThreadPostModel()
            {
                VisibleFlag = true
            });
            mockedForumDal.Setup(ad => ad.GetForumThreadPostById(hiddenGuid)).ReturnsAsync(new ForumThreadPostModel()
            {
                VisibleFlag = false
            });
            mockedForumDal.Setup(ad => ad.ListForumThreadPosts(null, null, null, null)).ReturnsAsync(new List <ForumThreadPostModel> {
                new ForumThreadPostModel()
                {
                    VisibleFlag = true
                },
                new ForumThreadPostModel()
                {
                    VisibleFlag = false
                }
            });
            mockedForumDal.Setup(fd => fd.InsertForumUser(forumUserData, false)).Returns(Task.Delay(0));
            mockedForumDal.Setup(fd => fd.UpdateForumUser(forumUserData)).Returns(Task.Delay(0));
            mockedForumDal.Setup(fd => fd.GetForumUserById(invalidGuid, null)).ReturnsAsync((ForumUserModel)null);
            mockedForumDal.Setup(fd => fd.GetForumUserById(validGuid, null)).ReturnsAsync(new ForumUserModel());

            forumService = new ForumService(mockedForumDal.Object, mockedSettingsProvider.Object);
        }
コード例 #13
0
 public async Task <IActionResult> UpdateForumUser([FromBody] ForumUserModel forumUser)
 {
     return(await InsertForumUser(forumUser));
 }