Advertisement
Guest User

Untitled

a guest
May 30th, 2017
32
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. using System.Web.Mvc;
  6. using System.Web.Routing;
  7. using System.Web.Security;
  8. using fitness.Models;
  9. using fitness.Services;
  10.  
  11. namespace fitness.Controllers
  12. {
  13.     public class AccountController : Controller
  14.     {
  15.         private readonly AccountRepository _repository = new AccountRepository();
  16.  
  17.         public ActionResult LogOn()
  18.         {
  19.             return View();
  20.         }
  21.  
  22.         [HttpPost]
  23.         public ActionResult LogOn(LogOnModel model, string returnUrl)
  24.         {
  25.             if (ModelState.IsValid)
  26.             {
  27.                 if ((from item in new fitnes1Entities().Clients
  28.                     where item.Login == model.UserName && item.Password == model.Password
  29.                     select item).Any())
  30.                 {
  31.                     FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);
  32.                     if (!string.IsNullOrWhiteSpace(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/")
  33.                         && !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\"))
  34.                     {
  35.                         return Redirect(returnUrl);
  36.                     }
  37.                     else
  38.                     {
  39.                         return RedirectToAction("Index", "Home");
  40.                     }
  41.                 }
  42.                 else
  43.                 {
  44.                     ModelState.AddModelError("", "Имя пользователя или пароль указаны неверно.");
  45.                 }
  46.             }
  47.  
  48.             return View(model);
  49.         }
  50.  
  51.         public ActionResult LogOff()
  52.         {
  53.             FormsAuthentication.SignOut();
  54.  
  55.             return RedirectToAction("Index", "Home");
  56.         }
  57.  
  58.         [Authorize]
  59.         public ActionResult Cabinet()
  60.         {
  61.             return View(_repository.GetAccount(User.Identity.Name));
  62.         }
  63.  
  64.         [HttpPost]
  65.         public ActionResult Register(RegisterModel model)
  66.         {
  67.             try
  68.             {
  69.                 if (ModelState.IsValid)
  70.                 {
  71.                     var entities = new fitnes1Entities();
  72.                     if (!(from item in entities.Clients where item.Login == model.UserName select item).Any())
  73.                     {
  74.                         _repository.Add(model);
  75.                         FormsAuthentication.SetAuthCookie(model.UserName, false /* createPersistentCookie */);
  76.                         return RedirectToAction("Index", "Home");
  77.                     }
  78.                     else
  79.                     {
  80.                         ModelState.AddModelError("", ErrorCodeToString(MembershipCreateStatus.DuplicateUserName));
  81.                     }
  82.                 }
  83.             }
  84.             catch (Exception e)
  85.             {
  86.                 ModelState.AddModelError("", "При попытке регистрации возникла неизвестная ошибка.");
  87.                 return View();
  88.             }
  89.  
  90.             return View(model);
  91.         }
  92.  
  93.         public ActionResult Register()
  94.         {
  95.             return View();
  96.         }
  97.  
  98.         [HttpPost]
  99.         [Authorize]
  100.         public ActionResult Edit(RegisterModel model)
  101.         {
  102.             try
  103.             {
  104.                 _repository.Edit(model, _repository.GetAccount(User.Identity.Name));
  105.             }
  106.             catch (Exception e)
  107.             {
  108.                 ModelState.AddModelError("", "При попытке применения изменений возникла неизвестная ошибка.");
  109.                 return View();
  110.             }
  111.             return RedirectToAction("Cabinet", "Account");
  112.         }
  113.  
  114.         [Authorize]
  115.         public ActionResult Edit()
  116.         {
  117.             return View(_repository.GetModelById(_repository.GetAccount(User.Identity.Name).IDClient));
  118.         }
  119.  
  120.         [Authorize]
  121.         public ActionResult ChangePassword()
  122.         {
  123.             return View();
  124.         }
  125.  
  126.         [Authorize]
  127.         [HttpPost]
  128.         public ActionResult ChangePassword(ChangePasswordModel model)
  129.         {
  130.             if (ModelState.IsValid)
  131.             {
  132.  
  133.                 bool changePasswordSucceeded = false;
  134.                 try
  135.                 {
  136.                     var entities = new fitnes1Entities();
  137.                     var currentUser =
  138.                         (from item in entities.Clients
  139.                             where item.Login == User.Identity.Name && item.Password == model.OldPassword
  140.                             select item).FirstOrDefault();
  141.                     if (currentUser != null)
  142.                     {
  143.                         currentUser.Password = model.NewPassword;
  144.                         entities.SaveChanges();
  145.                         changePasswordSucceeded = true;
  146.                     }
  147.                 }
  148.                 catch (Exception)
  149.                 {
  150.                     changePasswordSucceeded = false;
  151.                 }
  152.  
  153.                 if (changePasswordSucceeded)
  154.                 {
  155.                     return RedirectToAction("ChangePasswordSuccess");
  156.                 }
  157.                 else
  158.                 {
  159.                     ModelState.AddModelError("", "Неправильный текущий пароль или недопустимый новый пароль.");
  160.                 }
  161.             }
  162.  
  163.             return View(model);
  164.         }
  165.  
  166.         public ActionResult ChangePasswordSuccess()
  167.         {
  168.             return View();
  169.         }
  170.  
  171.         #region Status Codes
  172.  
  173.         private static string ErrorCodeToString(MembershipCreateStatus createStatus)
  174.         {
  175.  
  176.             switch (createStatus)
  177.             {
  178.                 case MembershipCreateStatus.DuplicateUserName:
  179.                     return "Имя пользователя уже существует. Введите другое имя пользователя.";
  180.  
  181.                 case MembershipCreateStatus.DuplicateEmail:
  182.                     return
  183.                         "Имя пользователя для данного адреса электронной почты уже существует. Введите другой адрес электронной почты.";
  184.  
  185.                 case MembershipCreateStatus.InvalidPassword:
  186.                     return "Указан недопустимый пароль. Введите допустимое значение пароля.";
  187.  
  188.                 case MembershipCreateStatus.InvalidEmail:
  189.                     return "Указан недопустимый адрес электронной почты. Проверьте значение и повторите попытку.";
  190.  
  191.                 case MembershipCreateStatus.InvalidAnswer:
  192.                     return
  193.                         "Указан недопустимый ответ на вопрос для восстановления пароля. Проверьте значение и повторите попытку.";
  194.  
  195.                 case MembershipCreateStatus.InvalidQuestion:
  196.                     return
  197.                         "Указан недопустимый вопрос для восстановления пароля. Проверьте значение и повторите попытку.";
  198.  
  199.                 case MembershipCreateStatus.InvalidUserName:
  200.                     return "Указано недопустимое имя пользователя. Проверьте значение и повторите попытку.";
  201.  
  202.                 case MembershipCreateStatus.ProviderError:
  203.                     return
  204.                         "Поставщик проверки подлинности вернул ошибку. Проверьте введенное значение и повторите попытку. Если проблему устранить не удастся, обратитесь к системному администратору.";
  205.  
  206.                 case MembershipCreateStatus.UserRejected:
  207.                     return
  208.                         "Запрос создания пользователя был отменен. Проверьте введенное значение и повторите попытку. Если проблему устранить не удастся, обратитесь к системному администратору.";
  209.  
  210.                 default:
  211.                     return
  212.                         "Произошла неизвестная ошибка. Проверьте введенное значение и повторите попытку. Если проблему устранить не удастся, обратитесь к системному администратору.";
  213.             }
  214.         }
  215.  
  216.         #endregion
  217.     }
  218. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement