Ejemplo n.º 1
0
        public ActionResult UserProfile(EditRegisterModel model, HttpPostedFileBase ImageFile)
        {
            string fileName = string.Empty;

            if (ImageFile != null)
            {
                string subPath = "/Content/Images/UserAvatar"; // your code goes here

                bool exists = System.IO.Directory.Exists(Server.MapPath(subPath));

                if (!exists)
                {
                    System.IO.Directory.CreateDirectory(Server.MapPath(subPath));
                }

                fileName = Path.GetFileNameWithoutExtension(ImageFile.FileName);
                string extension = Path.GetExtension(ImageFile.FileName);
                fileName = fileName + DateTime.Now.ToString("yymmssfff") + extension;

                model.AvatarPath = "/Content/Images/UserAvatar/" + fileName;
                fileName         = Path.Combine(Server.MapPath("~/Content/Images/UserAvatar/"), fileName);
                ImageFile.SaveAs(fileName);
            }

            if (ModelState.IsValid)
            {
                var _user = db.UserProfiles.Find(model.Id);
                _user.LastName    = model.LastName;
                _user.Name        = model.UserName;
                _user.UserName    = model.Email;
                _user.Email       = model.Email;
                _user.PhoneNumber = model.PhoneNumber;
                _user.AvatarPath  = model.AvatarPath;

                db.Entry(_user).State = EntityState.Modified;
                db.SaveChanges();
                if (model.EditPassword != null && !string.IsNullOrEmpty(model.EditPassword))
                {
                    var token = WebSecurity.GeneratePasswordResetToken(model.Email);
                    WebSecurity.ResetPassword(token, model.EditPassword);
                }
            }
            return(View(model));
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> EditRegister(EditRegisterModel model)
        {
            if (!User.Identity.IsAuthenticated)
            {
                return(await Register(ViewBag.returnUrl ?? "/"));
            }

            var user = await userManager.GetUserAsync(User);

            if (user is null)
            {
                await signInManager.SignOutAsync();

                HttpContext.Response.Cookies.Delete(".AspNetCore.Cookies");
                return(RedirectToAction("Info", "Home",
                                        new InfoModel
                {
                    Title = "Пользователь не найден",
                    Text = "Приносим извинения: возможно Ваш Аккаунт был удалён или заблокирован модератором."
                }));
            }

            if (ModelState.IsValid)
            {
                bool todoEmail = false, todoName = false;
                if (user.NormalizedEmail != model.Email.ToUpper())
                {
                    todoEmail           = true;
                    user.Email          = model.Email;
                    user.EmailConfirmed = false;
                }

                if (user.UserName != model.UserName)
                {
                    if (Config.Admin.ToUpper() == user.UserName.ToUpper())
                    {
                        ModelState.AddModelError(string.Empty,
                                                 $"Имя \"{Config.Admin}\" зарезервировано сервером, его нельзя изменять. Однако, пароль рекомендуется поменять, а email можно изменить.");
                        return(View(model));
                    }
                    todoName      = true;
                    user.UserName = model.UserName;
                }

                if (todoName || todoEmail)
                {
                    var result = await userManager.UpdateAsync(user);

                    if (result.Succeeded)
                    {
                        if (todoName)
                        {
                            await signInManager.SignInAsync(user, false);
                        }
                        if (todoEmail && !user.EmailConfirmed)
                        {
                            return(await SendConfirmEmail(user));
                        }
                        return(Redirect(ViewBag.returnUrl ?? "/"));
                    }

                    foreach (var error in result.Errors)
                    {
                        switch (error.Code)
                        {
                        case "InvalidEmail":
                            error.Description = "Не верно указан почтовый адрес";
                            break;

                        case "InvalidUserName":
                            error.Description = "Логин может состоять только из латинских букв и цифр";
                            break;

                        case "DuplicateUserName":
                            error.Description = "Пользователь с таким именем уже существует";
                            break;

                        case "DuplicateEmail":
                            error.Description = "Почтовый адрес привязан к другому пользователю";
                            model.Email       = "";
                            break;
                        }
                        ModelState.AddModelError(string.Empty, error.Description);
                        return(View(model));
                    }
                }

                return(Redirect(ViewBag.returnUrl ?? "/"));
            }
            return(View(model));
        }