Пример #1
0
        public new IActionResult User(ManageUserModel model)
        {
            var successMessages = new List <string>();

            var changePassword = ModelState.GetValidationState("Password") == ModelValidationState.Valid &&
                                 ModelState.GetValidationState("PasswordConfirmation") == ModelValidationState.Valid;

            ModelState.Remove("Password");
            ModelState.Remove("PasswordConfirmation");

            if (ModelState.IsValid || changePassword)
            {
                using (var context = ContextHelper.OpenContext())
                {
                    var contextUser = context.User.FirstOrDefault(u => u.UserId == model.UserId);
                    if (contextUser == null)
                    {
                        return(RedirectToAction("Users"));
                    }

                    if (ModelState.IsValid)
                    {
                        contextUser.Username = model.Name;
                        contextUser.Origin   = model.Origin;
                        contextUser.Type     = model.Type;

                        successMessages.Add("Der User wurde gespeichert.");
                    }

                    if (changePassword)
                    {
                        var salt = AuthenticationHelper.GenerateSalt();
                        var hash = AuthenticationHelper.CalculatePasswordHash(salt, model.Password);

                        contextUser.Salt = salt;
                        contextUser.Hash = hash;

                        successMessages.Add("Das Passwort wurde geändert.");
                    }

                    contextUser.Modified = DateTime.Now;
                    context.SaveChanges();
                }

                SharedProperties.OutdatedObjects.Add(model.UserId);
            }
            else
            {
                return(View(model));
            }


            return(RedirectToAction("User", new { id = model.UserId, successMessages }));
        }
Пример #2
0
        ////////////////////////////////////////////////////////////////////////////////////////////////////
        /// <summary>   Validate user credentials </summary>
        ///
        /// <remarks>   Andre Beging, 17.06.2018. </remarks>
        ///
        /// <param name="mail">     The mail. </param>
        /// <param name="password"> The password. </param>
        ///
        /// <returns>   True if credentials are correct. False is not </returns>
        ////////////////////////////////////////////////////////////////////////////////////////////////////
        public Claim[] ValidateCredentials(string mail, string password)
        {
            var contextUser = Context.User.FirstOrDefault(x => x.Mail.Equals(mail, StringComparison.InvariantCultureIgnoreCase) && x.Enabled);

            if (contextUser == null)
            {
                return(null);
            }

            var hash = AuthenticationHelper.CalculatePasswordHash(contextUser.Salt, password);

            if (hash.Equals(contextUser.Hash, StringComparison.InvariantCulture))
            {
                return(new[]
                {
                    new Claim(BierAlyzerClaim.UserId, contextUser.UserId.ToString()),
                    new Claim(BierAlyzerClaim.Language, "de-DE"),
                    new Claim(BierAlyzerClaim.UserType, contextUser.Type.ToString())
                });
            }

            return(null);
        }
Пример #3
0
        public IActionResult UserProfile(UserProfileModel model)
        {
            var changePassword = false;

            if (!string.IsNullOrWhiteSpace(model.Password) || !string.IsNullOrWhiteSpace(model.PasswordConfirmation))
            {
                if (string.IsNullOrWhiteSpace(model.Password))
                {
                    ModelState.AddModelError("Password",
                                             "Um das Passwort zu ändern, müssen Passwort und Passwortbestätigung eingetragen werden");
                }

                if (string.IsNullOrWhiteSpace(model.PasswordConfirmation))
                {
                    ModelState.AddModelError("PasswordConfirmation",
                                             "Um das Passwort zu ändern, müssen Passwort und Passwortbestätigung eingetragen werden");
                }

                if (!string.IsNullOrWhiteSpace(model.Password) && model.Password.Length < 6)
                {
                    ModelState.AddModelError("Password", "Das Passwort muss mindestens 6 Zeichen lang sein.");
                }

                if (!string.IsNullOrWhiteSpace(model.PasswordConfirmation) && model.PasswordConfirmation.Length < 6)
                {
                    ModelState.AddModelError("PasswordConfirmation",
                                             "Das Passwort muss mindestens 6 Zeichen lang sein.");
                }

                if (ModelState.IsValid && model.Password != model.PasswordConfirmation)
                {
                    ModelState.AddModelError("PasswordConfirmation",
                                             "Die eingegebenen Passwörter stimmen nicht überein.");
                }

                if (ModelState.IsValid)
                {
                    changePassword = true;
                }
            }

            if (ModelState.IsValid)
            {
                using (var context = ContextHelper.OpenContext())
                {
                    var contextUser = context.User.FirstOrDefault(x => x.UserId == model.UserId);
                    if (contextUser == null)
                    {
                        return(RedirectToAction("UserProfile"));
                    }

                    contextUser.Username = model.Username;
                    contextUser.Origin   = model.Origin;
                    contextUser.Modified = DateTime.Now;

                    if (changePassword)
                    {
                        var salt = AuthenticationHelper.GenerateSalt();
                        var hash = AuthenticationHelper.CalculatePasswordHash(salt, model.Password);
                        contextUser.Salt = salt;
                        contextUser.Hash = hash;
                    }

                    context.SaveChanges();
                }

                SharedProperties.OutdatedObjects.Add(model.UserId);

                ViewData["Success"]         = true;
                ViewData["PasswortChanged"] = changePassword;
            }

            return(View(model));
        }