Mercurial > altnet-hispano
diff Agendas/trunk/src/Agendas.Web/Controllers/AccountController.cs @ 10:c62b77fc33f4
website inicial
author | nelo@MTEySS.neluz.int |
---|---|
date | Sun, 13 Mar 2011 18:51:06 -0300 |
parents | |
children | 475be11edf56 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Agendas/trunk/src/Agendas.Web/Controllers/AccountController.cs Sun Mar 13 18:51:06 2011 -0300 @@ -0,0 +1,151 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; +using System.Linq; +using System.Security.Principal; +using System.Web; +using System.Web.Mvc; +using System.Web.Routing; +using System.Web.Security; +using Agendas.Web.Models; + +namespace Agendas.Web.Controllers +{ + public class AccountController : Controller + { + + public IFormsAuthenticationService FormsService { get; set; } + public IMembershipService MembershipService { get; set; } + + protected override void Initialize(RequestContext requestContext) + { + if (FormsService == null) { FormsService = new FormsAuthenticationService(); } + if (MembershipService == null) { MembershipService = new AccountMembershipService(); } + + base.Initialize(requestContext); + } + + // ************************************** + // URL: /Account/LogOn + // ************************************** + + public ActionResult LogOn() + { + return View(); + } + + [HttpPost] + public ActionResult LogOn(LogOnModel model, string returnUrl) + { + if (ModelState.IsValid) + { + if (MembershipService.ValidateUser(model.UserName, model.Password)) + { + FormsService.SignIn(model.UserName, model.RememberMe); + if (Url.IsLocalUrl(returnUrl)) + { + return Redirect(returnUrl); + } + else + { + return RedirectToAction("Index", "Home"); + } + } + else + { + ModelState.AddModelError("", "The user name or password provided is incorrect."); + } + } + + // If we got this far, something failed, redisplay form + return View(model); + } + + // ************************************** + // URL: /Account/LogOff + // ************************************** + + public ActionResult LogOff() + { + FormsService.SignOut(); + + return RedirectToAction("Index", "Home"); + } + + // ************************************** + // URL: /Account/Register + // ************************************** + + public ActionResult Register() + { + ViewBag.PasswordLength = MembershipService.MinPasswordLength; + return View(); + } + + [HttpPost] + public ActionResult Register(RegisterModel model) + { + if (ModelState.IsValid) + { + // Attempt to register the user + MembershipCreateStatus createStatus = MembershipService.CreateUser(model.UserName, model.Password, model.Email); + + if (createStatus == MembershipCreateStatus.Success) + { + FormsService.SignIn(model.UserName, false /* createPersistentCookie */); + return RedirectToAction("Index", "Home"); + } + else + { + ModelState.AddModelError("", AccountValidation.ErrorCodeToString(createStatus)); + } + } + + // If we got this far, something failed, redisplay form + ViewBag.PasswordLength = MembershipService.MinPasswordLength; + return View(model); + } + + // ************************************** + // URL: /Account/ChangePassword + // ************************************** + + [Authorize] + public ActionResult ChangePassword() + { + ViewBag.PasswordLength = MembershipService.MinPasswordLength; + return View(); + } + + [Authorize] + [HttpPost] + public ActionResult ChangePassword(ChangePasswordModel model) + { + if (ModelState.IsValid) + { + if (MembershipService.ChangePassword(User.Identity.Name, model.OldPassword, model.NewPassword)) + { + return RedirectToAction("ChangePasswordSuccess"); + } + else + { + ModelState.AddModelError("", "The current password is incorrect or the new password is invalid."); + } + } + + // If we got this far, something failed, redisplay form + ViewBag.PasswordLength = MembershipService.MinPasswordLength; + return View(model); + } + + // ************************************** + // URL: /Account/ChangePasswordSuccess + // ************************************** + + public ActionResult ChangePasswordSuccess() + { + return View(); + } + + } +}